diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 08f8c3e..9af8f24 100755 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,8 +31,8 @@ jobs: run: | mkdir "$LOG_PATH" pip install --upgrade pip - pip install --use-feature=2020-resolver --upgrade setuptools wheel aws-sam-cli -r https://raw.githubusercontent.com/aws-cloudformation/cloudformation-cli/master/requirements.txt - pip install --use-feature=2020-resolver . + pip install --upgrade setuptools wheel aws-sam-cli -r https://raw.githubusercontent.com/aws-cloudformation/cloudformation-cli/master/requirements.txt + pip install . - uses: actions/setup-node@v1 with: node-version: 14 diff --git a/python/rpdk/typescript/codegen.py b/python/rpdk/typescript/codegen.py index 44ea73f..47f0070 100644 --- a/python/rpdk/typescript/codegen.py +++ b/python/rpdk/typescript/codegen.py @@ -53,7 +53,7 @@ def __init__(self): self.namespace = None self.package_name = None self.package_root = None - self._use_docker = True + self._use_docker = None self._protocol_version = "2.0.0" self._build_command = None self._lib_path = None @@ -61,20 +61,24 @@ def __init__(self): def _init_from_project(self, project): self.namespace = tuple(s.lower() for s in project.type_info) self.package_name = "-".join(self.namespace) - self._use_docker = project.settings.get("useDocker", True) + # Check config file for (legacy) 'useDocker' and use_docker settings + self._use_docker = project.settings.get("useDocker") or project.settings.get( + "use_docker" + ) self.package_root = project.root / "src" self._build_command = project.settings.get("buildCommand", None) self._lib_path = SUPPORT_LIB_VERSION def _init_settings(self, project): LOG.debug("Writing settings") - self._use_docker = input_with_validation( + self._use_docker = self._use_docker or input_with_validation( "Use docker for platform-independent packaging (Y/n)?\n", validate_no, "This is highly recommended unless you are experienced \n" "with cross-platform Typescript packaging.", ) - project.settings["useDocker"] = self._use_docker + # switched to 'use_docker' from 'useDocker' to be in line with python version + project.settings["use_docker"] = self._use_docker project.settings["protocolVersion"] = self._protocol_version def init(self, project): diff --git a/python/rpdk/typescript/parser.py b/python/rpdk/typescript/parser.py new file mode 100644 index 0000000..2caf567 --- /dev/null +++ b/python/rpdk/typescript/parser.py @@ -0,0 +1,18 @@ +def setup_subparser(subparsers, parents): + parser = subparsers.add_parser( + "typescript", + description="This sub command generates IDE and build files for TypeScript", + parents=parents, + ) + parser.set_defaults(language="typescript") + + parser.add_argument( + "-d", + "--use-docker", + action="store_true", + help="""Use docker for TypeScript platform-independent packaging. + This is highly recommended unless you are experienced + with cross-platform TypeScript packaging.""", + ) + + return parser diff --git a/setup.py b/setup.py index feb31b1..ac716ef 100644 --- a/setup.py +++ b/setup.py @@ -44,7 +44,10 @@ def find_version(*file_paths): entry_points={ "rpdk.v1.languages": [ "typescript = rpdk.typescript.codegen:TypescriptLanguagePlugin", - ] + ], + "rpdk.v1.parsers": [ + "typescript = rpdk.typescript.parser:setup_subparser", + ], }, license="Apache License 2.0", classifiers=[ diff --git a/tests/plugin/codegen_test.py b/tests/plugin/codegen_test.py index 7f056f5..2875399 100644 --- a/tests/plugin/codegen_test.py +++ b/tests/plugin/codegen_test.py @@ -92,7 +92,7 @@ def test__remove_build_artifacts_file_not_found(tmp_path: str): def test_initialize(project: Project): lib_path = project._plugin._lib_path - assert project.settings == {"useDocker": False, "protocolVersion": "2.0.0"} + assert project.settings == {"use_docker": False, "protocolVersion": "2.0.0"} files = get_files_in_project(project) assert set(files) == { diff --git a/tests/plugin/parser_test.py b/tests/plugin/parser_test.py new file mode 100644 index 0000000..d5c4135 --- /dev/null +++ b/tests/plugin/parser_test.py @@ -0,0 +1,22 @@ +import argparse + +from rpdk.typescript.parser import setup_subparser + + +def test_setup_subparser(): + parser = argparse.ArgumentParser() + subparsers = parser.add_subparsers(dest="subparser_name") + + sub_parser = setup_subparser(subparsers, []) + + args = sub_parser.parse_args([]) + assert args.language == "typescript" + assert args.use_docker is False + + short_args = sub_parser.parse_args(["-d"]) + assert short_args.language == "typescript" + assert short_args.use_docker is True + + long_args = sub_parser.parse_args(["--use-docker"]) + assert long_args.language == "typescript" + assert long_args.use_docker is True