Skip to content

Commit

Permalink
refactor(@angular/cli): replace command line arguments parser
Browse files Browse the repository at this point in the history
With this change we refactor the Angular CLI and replace the underlying args parser and command builder. We choose to use Yargs as our parser and command builder of choice. The main advantages of Yargs over other command builders are;

- Highly configurable.
- We already use it in other packages such as the compiler-cli/dev-infra etc..
- Commands and options can be added during runtime. This is a requirement that is needed to support architect and schematics commands.
- Outstanding documentation.
- The possibility to parse args without parser configuration (Free form).
- Commands are built lazily based on the arguments passed.

BREAKING CHANGE:

Several changes in the Angular CLI commands and arguments handling.

- `ng help` has been removed in favour of the `—-help` option.
- `ng —-version` has been removed in favour of `ng version` and `ng v`.
- Deprecated camel cased arguments are no longer supported. Ex. using `—-sourceMap` instead of `—-source-map` will result in an error.
- `ng update`, `—-migrate-only` option no longer accepts a string of migration name, instead use `—-migrate-only -—name <migration-name>`.
- `—-help json` help has been removed.

Closes #20976, closes #16614 and closes #16241
  • Loading branch information
alan-agius4 committed Mar 9, 2022
1 parent bc1b36d commit 2e04931
Show file tree
Hide file tree
Showing 118 changed files with 2,531 additions and 3,993 deletions.
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@
"@types/semver": "^7.0.0",
"@types/text-table": "^0.2.1",
"@types/uuid": "^8.0.0",
"@types/yargs": "^17.0.8",
"@types/yargs-parser": "^21.0.0",
"@typescript-eslint/eslint-plugin": "5.14.0",
"@typescript-eslint/parser": "5.14.0",
Expand Down Expand Up @@ -216,6 +217,7 @@
"webpack-dev-server": "4.7.4",
"webpack-merge": "5.8.0",
"webpack-subresource-integrity": "5.1.0",
"yargs": "17.3.1",
"yargs-parser": "21.0.1",
"zone.js": "^0.11.3"
}
Expand Down
164 changes: 2 additions & 162 deletions packages/angular/cli/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -26,24 +26,6 @@ ts_library(
# @external_begin
# These files are generated from the JSON schema
"//packages/angular/cli:lib/config/workspace-schema.ts",
"//packages/angular/cli:commands/analytics.ts",
"//packages/angular/cli:commands/add.ts",
"//packages/angular/cli:commands/build.ts",
"//packages/angular/cli:commands/deploy.ts",
"//packages/angular/cli:commands/config.ts",
"//packages/angular/cli:commands/doc.ts",
"//packages/angular/cli:commands/e2e.ts",
"//packages/angular/cli:commands/easter-egg.ts",
"//packages/angular/cli:commands/generate.ts",
"//packages/angular/cli:commands/help.ts",
"//packages/angular/cli:commands/lint.ts",
"//packages/angular/cli:commands/new.ts",
"//packages/angular/cli:commands/serve.ts",
"//packages/angular/cli:commands/test.ts",
"//packages/angular/cli:commands/update.ts",
"//packages/angular/cli:commands/version.ts",
"//packages/angular/cli:commands/run.ts",
"//packages/angular/cli:commands/extract-i18n.ts",
"//packages/angular/cli:src/commands/update/schematic/schema.ts",
# @external_end
],
Expand Down Expand Up @@ -79,6 +61,7 @@ ts_library(
"@npm//@types/resolve",
"@npm//@types/semver",
"@npm//@types/uuid",
"@npm//@types/yargs",
"@npm//@yarnpkg/lockfile",
"@npm//ansi-colors",
"@npm//ini",
Expand All @@ -88,6 +71,7 @@ ts_library(
"@npm//ora",
"@npm//pacote",
"@npm//semver",
"@npm//yargs",
],
)

Expand Down Expand Up @@ -132,150 +116,6 @@ ts_json_schema(
data = CLI_SCHEMA_DATA,
)

ts_json_schema(
name = "analytics_schema",
src = "commands/analytics.json",
data = [
"commands/definitions.json",
],
)

ts_json_schema(
name = "add_schema",
src = "commands/add.json",
data = [
"commands/definitions.json",
],
)

ts_json_schema(
name = "build_schema",
src = "commands/build.json",
data = [
"commands/definitions.json",
],
)

ts_json_schema(
name = "deploy_schema",
src = "commands/deploy.json",
data = [
"commands/definitions.json",
],
)

ts_json_schema(
name = "config_schema",
src = "commands/config.json",
data = [
"commands/definitions.json",
],
)

ts_json_schema(
name = "doc_schema",
src = "commands/doc.json",
data = [
"commands/definitions.json",
],
)

ts_json_schema(
name = "e2e_schema",
src = "commands/e2e.json",
data = [
"commands/definitions.json",
],
)

ts_json_schema(
name = "easter_egg_schema",
src = "commands/easter-egg.json",
data = [
"commands/definitions.json",
],
)

ts_json_schema(
name = "generate_schema",
src = "commands/generate.json",
data = [
"commands/definitions.json",
],
)

ts_json_schema(
name = "help_schema",
src = "commands/help.json",
data = [
"commands/definitions.json",
],
)

ts_json_schema(
name = "lint_schema",
src = "commands/lint.json",
data = [
"commands/definitions.json",
],
)

ts_json_schema(
name = "new_schema",
src = "commands/new.json",
data = [
"commands/definitions.json",
],
)

ts_json_schema(
name = "run_schema",
src = "commands/run.json",
data = [
"commands/definitions.json",
],
)

ts_json_schema(
name = "serve_schema",
src = "commands/serve.json",
data = [
"commands/definitions.json",
],
)

ts_json_schema(
name = "test_schema",
src = "commands/test.json",
data = [
"commands/definitions.json",
],
)

ts_json_schema(
name = "update_schema",
src = "commands/update.json",
data = [
"commands/definitions.json",
],
)

ts_json_schema(
name = "version_schema",
src = "commands/version.json",
data = [
"commands/definitions.json",
],
)

ts_json_schema(
name = "extract-i18n_schema",
src = "commands/extract-i18n.json",
data = [
"commands/definitions.json",
],
)

ts_json_schema(
name = "update_schematic_schema",
src = "src/commands/update/schematic/schema.json",
Expand Down
20 changes: 0 additions & 20 deletions packages/angular/cli/commands.json

This file was deleted.

54 changes: 0 additions & 54 deletions packages/angular/cli/commands/add.json

This file was deleted.

Loading

0 comments on commit 2e04931

Please sign in to comment.