Skip to content

Commit 09a0561

Browse files
authored
feat(cli): Add in typescript language along with use-docker switch into the CLI (#76)
* Add typescript and --use-docker as switches for CLI * Check config file for useDocker and use_docker * remove pip -use-feature=2020-resolver option from github actions, it is no longer valid * Update useDocker in test to use_docker * formatting update * added parser tests
1 parent b33ceba commit 09a0561

File tree

6 files changed

+55
-8
lines changed

6 files changed

+55
-8
lines changed

.github/workflows/ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ jobs:
3131
run: |
3232
mkdir "$LOG_PATH"
3333
pip install --upgrade pip
34-
pip install --use-feature=2020-resolver --upgrade setuptools wheel aws-sam-cli -r https://raw.githubusercontent.com/aws-cloudformation/cloudformation-cli/master/requirements.txt
35-
pip install --use-feature=2020-resolver .
34+
pip install --upgrade setuptools wheel aws-sam-cli -r https://raw.githubusercontent.com/aws-cloudformation/cloudformation-cli/master/requirements.txt
35+
pip install .
3636
- uses: actions/setup-node@v1
3737
with:
3838
node-version: 14

python/rpdk/typescript/codegen.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,28 +53,32 @@ def __init__(self):
5353
self.namespace = None
5454
self.package_name = None
5555
self.package_root = None
56-
self._use_docker = True
56+
self._use_docker = None
5757
self._protocol_version = "2.0.0"
5858
self._build_command = None
5959
self._lib_path = None
6060

6161
def _init_from_project(self, project):
6262
self.namespace = tuple(s.lower() for s in project.type_info)
6363
self.package_name = "-".join(self.namespace)
64-
self._use_docker = project.settings.get("useDocker", True)
64+
# Check config file for (legacy) 'useDocker' and use_docker settings
65+
self._use_docker = project.settings.get("useDocker") or project.settings.get(
66+
"use_docker"
67+
)
6568
self.package_root = project.root / "src"
6669
self._build_command = project.settings.get("buildCommand", None)
6770
self._lib_path = SUPPORT_LIB_VERSION
6871

6972
def _init_settings(self, project):
7073
LOG.debug("Writing settings")
71-
self._use_docker = input_with_validation(
74+
self._use_docker = self._use_docker or input_with_validation(
7275
"Use docker for platform-independent packaging (Y/n)?\n",
7376
validate_no,
7477
"This is highly recommended unless you are experienced \n"
7578
"with cross-platform Typescript packaging.",
7679
)
77-
project.settings["useDocker"] = self._use_docker
80+
# switched to 'use_docker' from 'useDocker' to be in line with python version
81+
project.settings["use_docker"] = self._use_docker
7882
project.settings["protocolVersion"] = self._protocol_version
7983

8084
def init(self, project):

python/rpdk/typescript/parser.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
def setup_subparser(subparsers, parents):
2+
parser = subparsers.add_parser(
3+
"typescript",
4+
description="This sub command generates IDE and build files for TypeScript",
5+
parents=parents,
6+
)
7+
parser.set_defaults(language="typescript")
8+
9+
parser.add_argument(
10+
"-d",
11+
"--use-docker",
12+
action="store_true",
13+
help="""Use docker for TypeScript platform-independent packaging.
14+
This is highly recommended unless you are experienced
15+
with cross-platform TypeScript packaging.""",
16+
)
17+
18+
return parser

setup.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,10 @@ def find_version(*file_paths):
4444
entry_points={
4545
"rpdk.v1.languages": [
4646
"typescript = rpdk.typescript.codegen:TypescriptLanguagePlugin",
47-
]
47+
],
48+
"rpdk.v1.parsers": [
49+
"typescript = rpdk.typescript.parser:setup_subparser",
50+
],
4851
},
4952
license="Apache License 2.0",
5053
classifiers=[

tests/plugin/codegen_test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ def test__remove_build_artifacts_file_not_found(tmp_path: str):
9292

9393
def test_initialize(project: Project):
9494
lib_path = project._plugin._lib_path
95-
assert project.settings == {"useDocker": False, "protocolVersion": "2.0.0"}
95+
assert project.settings == {"use_docker": False, "protocolVersion": "2.0.0"}
9696

9797
files = get_files_in_project(project)
9898
assert set(files) == {

tests/plugin/parser_test.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import argparse
2+
3+
from rpdk.typescript.parser import setup_subparser
4+
5+
6+
def test_setup_subparser():
7+
parser = argparse.ArgumentParser()
8+
subparsers = parser.add_subparsers(dest="subparser_name")
9+
10+
sub_parser = setup_subparser(subparsers, [])
11+
12+
args = sub_parser.parse_args([])
13+
assert args.language == "typescript"
14+
assert args.use_docker is False
15+
16+
short_args = sub_parser.parse_args(["-d"])
17+
assert short_args.language == "typescript"
18+
assert short_args.use_docker is True
19+
20+
long_args = sub_parser.parse_args(["--use-docker"])
21+
assert long_args.language == "typescript"
22+
assert long_args.use_docker is True

0 commit comments

Comments
 (0)