Skip to content

Commit f9a4910

Browse files
authored
Receive use_docker flag from the cli (#121)
* Receive use_docker flag from the cli * Subparser from entry point proof of concept * Add plugin subparser
1 parent 2306d7e commit f9a4910

File tree

4 files changed

+66
-4
lines changed

4 files changed

+66
-4
lines changed

python/rpdk/python/codegen.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,23 +49,25 @@ def __init__(self):
4949
self.namespace = None
5050
self.package_name = None
5151
self.package_root = None
52-
self._use_docker = True
52+
self._use_docker = None
5353
self._protocol_version = "2.0.0"
5454

5555
def _init_from_project(self, project):
5656
self.namespace = tuple(s.lower() for s in project.type_info)
5757
self.package_name = "_".join(self.namespace)
58-
self._use_docker = project.settings.get("use_docker", True)
58+
self._use_docker = project.settings.get("use_docker")
5959
self.package_root = project.root / "src"
6060

6161
def _init_settings(self, project):
6262
LOG.debug("Writing settings")
63-
self._use_docker = input_with_validation(
63+
64+
self._use_docker = self._use_docker or input_with_validation(
6465
"Use docker for platform-independent packaging (Y/n)?\n",
6566
validate_no,
6667
"This is highly recommended unless you are experienced \n"
6768
"with cross-platform Python packaging.",
6869
)
70+
6971
project.settings["use_docker"] = self._use_docker
7072
project.settings["protocolVersion"] = self._protocol_version
7173

python/rpdk/python/parser.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
def setup_subparser(subparsers, parents, python_version):
2+
parser = subparsers.add_parser(
3+
python_version,
4+
description="""This sub command generates IDE and build files for Python {}
5+
""".format(
6+
"3.6" if python_version == "python36" else "3.7"
7+
),
8+
parents=parents,
9+
)
10+
parser.set_defaults(language=python_version)
11+
12+
parser.add_argument(
13+
"-d",
14+
"--use-docker",
15+
action="store_true",
16+
help="""Use docker for python platform-independent packaging.
17+
This is highly recommended unless you are experienced
18+
with cross-platform Python packaging.""",
19+
)
20+
21+
return parser
22+
23+
24+
def setup_subparser_python36(subparsers, parents):
25+
return setup_subparser(subparsers, parents, "python36")
26+
27+
28+
def setup_subparser_python37(subparsers, parents):
29+
return setup_subparser(subparsers, parents, "python37")

setup.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,11 @@ def find_version(*file_paths):
4343
"rpdk.v1.languages": [
4444
"python37 = rpdk.python.codegen:Python37LanguagePlugin",
4545
"python36 = rpdk.python.codegen:Python36LanguagePlugin",
46-
]
46+
],
47+
"rpdk.v1.parsers": [
48+
"python37 = rpdk.python.parser:setup_subparser_python37",
49+
"python36 = rpdk.python.parser:setup_subparser_python36",
50+
],
4751
},
4852
license="Apache License 2.0",
4953
classifiers=[

tests/plugin/parser_test.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import argparse
2+
3+
from rpdk.python.parser import setup_subparser_python36, setup_subparser_python37
4+
5+
6+
def test_setup_subparser_python36():
7+
parser = argparse.ArgumentParser()
8+
subparsers = parser.add_subparsers(dest="subparser_name")
9+
10+
sub_parser = setup_subparser_python36(subparsers, [])
11+
12+
args = sub_parser.parse_args(["-d"])
13+
14+
assert args.language == "python36"
15+
assert args.use_docker is True
16+
17+
18+
def test_setup_subparser_python37():
19+
parser = argparse.ArgumentParser()
20+
subparsers = parser.add_subparsers(dest="subparser_name")
21+
22+
sub_parser = setup_subparser_python37(subparsers, [])
23+
24+
args = sub_parser.parse_args([])
25+
26+
assert args.language == "python37"
27+
assert args.use_docker is False

0 commit comments

Comments
 (0)