npm-update-package 0.49.1 → 0.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -60,7 +60,43 @@ Commit message template.
60
60
  ```sh
61
61
  npx npm-update-package \
62
62
  --github-token $GITHUB_TOKEN \
63
- --commit-message "chore(deps): {{{level}}} update {{{packageName}}} to v{{{newVersion}}}"
63
+ --commit-message "chore({{{dependencyType}}}): {{{level}}} update {{{packageName}}} from {{{currentVersion}}} to v{{{newVersion}}}"
64
+ ```
65
+
66
+ ### `--fetch-release-notes`
67
+
68
+ Whether to fetch release notes.
69
+
70
+ |Name|Value|
71
+ |---|---|
72
+ |type|boolean|
73
+ |required|false|
74
+ |default|`true`|
75
+
76
+ #### Example
77
+
78
+ ```sh
79
+ npx npm-update-package \
80
+ --github-token $GITHUB_TOKEN \
81
+ --fetch-release-notes false
82
+ ```
83
+
84
+ ### `--fetch-sleep-time`
85
+
86
+ Sleep time between fetching (ms).
87
+
88
+ |Name|Value|
89
+ |---|---|
90
+ |type|number|
91
+ |required|false|
92
+ |default|`1000`|
93
+
94
+ #### Example
95
+
96
+ ```sh
97
+ npx npm-update-package \
98
+ --github-token $GITHUB_TOKEN \
99
+ --fetch-sleep-time 2000
64
100
  ```
65
101
 
66
102
  ### `--github-token`
@@ -116,7 +152,7 @@ Log level to show.
116
152
  ```sh
117
153
  npx npm-update-package \
118
154
  --github-token $GITHUB_TOKEN \
119
- --log-level info
155
+ --log-level debug
120
156
  ```
121
157
 
122
158
  ### `--package-manager`
@@ -141,7 +177,7 @@ Package manager of your project.
141
177
  ```sh
142
178
  npx npm-update-package \
143
179
  --github-token $GITHUB_TOKEN \
144
- --package-manager npm
180
+ --package-manager yarn
145
181
  ```
146
182
 
147
183
  ### `--pr-body-notes`
@@ -186,7 +222,7 @@ Pull request title template.
186
222
  ```sh
187
223
  npx npm-update-package \
188
224
  --github-token $GITHUB_TOKEN \
189
- --pr-title "chore(deps): {{{level}}} update {{{packageName}}} to v{{{newVersion}}}"
225
+ --pr-title "chore({{{dependencyType}}}): {{{level}}} update {{{packageName}}} from {{{currentVersion}}} to v{{{newVersion}}}"
190
226
  ```
191
227
 
192
228
  ### `--reviewers`
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "npm-update-package",
3
- "version": "0.49.1",
3
+ "version": "0.52.0",
4
4
  "description": "CLI tool for creating pull requests to update npm packages",
5
5
  "scripts": {
6
6
  "build": "tsc --project tsconfig.build.json",
@@ -41,7 +41,7 @@
41
41
  "@types/parse-github-url": "1.0.0",
42
42
  "@types/semver": "7.3.9",
43
43
  "@typescript-eslint/eslint-plugin": "5.16.0",
44
- "eslint": "8.11.0",
44
+ "eslint": "8.12.0",
45
45
  "eslint-config-standard-with-typescript": "21.0.1",
46
46
  "eslint-plugin-import": "2.25.4",
47
47
  "eslint-plugin-jest": "26.1.3",
@@ -3,7 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.OutdatedPackageProcessor = void 0;
4
4
  const Either_1 = require("fp-ts/lib/Either");
5
5
  const git_1 = require("../git");
6
- // TODO: add test
6
+ // TODO: Add test
7
+ // TODO: Split into multiple classes and functions
7
8
  class OutdatedPackageProcessor {
8
9
  constructor({ git, packageManager, pullRequestCreator, branchFinder, logger, commitMessageCreator, pullRequestFinder, pullRequestsCloser, packageUpdater }) {
9
10
  this.git = git;
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LabelCreator = void 0;
4
4
  const errors_1 = require("../../errors");
5
+ // TODO: Split into multiple classes and functions
5
6
  class LabelCreator {
6
7
  constructor({ github, gitRepo, logger }) {
7
8
  this.github = github;
@@ -1,15 +1,14 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.PullRequestBodyCreator = void 0;
7
- const package_json_1 = __importDefault(require("../../../../package.json"));
8
4
  const file_1 = require("../../../file");
9
- const json_1 = require("../../../json");
10
- const package_json_2 = require("../../../package-json");
11
- const metadata_1 = require("../metadata");
12
- const optimizeGitHubUrl_1 = require("./optimizeGitHubUrl");
5
+ const package_json_1 = require("../../../package-json");
6
+ const createFooter_1 = require("./createFooter");
7
+ const createMetadataSection_1 = require("./createMetadataSection");
8
+ const createNotesSection_1 = require("./createNotesSection");
9
+ const createOutdatedPackagesTable_1 = require("./createOutdatedPackagesTable");
10
+ const createPackageDiffsSection_1 = require("./createPackageDiffsSection");
11
+ const createReleaseNotesSection_1 = require("./createReleaseNotesSection");
13
12
  // TODO: Split into multiple classes and functions
14
13
  class PullRequestBodyCreator {
15
14
  constructor({ options, releasesFetcher }) {
@@ -18,112 +17,40 @@ class PullRequestBodyCreator {
18
17
  }
19
18
  async create(outdatedPackage) {
20
19
  const sections = [];
21
- const outdatedPackagesTable = this.createOutdatedPackagesTable(outdatedPackage);
20
+ const outdatedPackagesTable = (0, createOutdatedPackagesTable_1.createOutdatedPackagesTable)(outdatedPackage);
22
21
  sections.push(`This PR updates these packages:\n\n${outdatedPackagesTable}`);
23
22
  const gitRepo = await this.extractRepository(outdatedPackage);
24
- const diffSection = this.createDiffSection({
23
+ const diffSection = (0, createPackageDiffsSection_1.createPackageDiffsSection)({
25
24
  outdatedPackage,
26
25
  gitRepo
27
26
  });
28
27
  sections.push(diffSection);
29
- if ((gitRepo === null || gitRepo === void 0 ? void 0 : gitRepo.isGitHub) === true) {
30
- const releaseNotesSection = await this.createReleaseNotesSection({
31
- outdatedPackage,
32
- gitRepo
28
+ if (this.options.fetchReleaseNotes && (gitRepo === null || gitRepo === void 0 ? void 0 : gitRepo.isGitHub) === true) {
29
+ const releases = await this.releasesFetcher.fetch({
30
+ gitRepo,
31
+ packageName: outdatedPackage.name,
32
+ from: outdatedPackage.currentVersion,
33
+ to: outdatedPackage.newVersion
33
34
  });
34
- if (releaseNotesSection !== undefined) {
35
+ if (releases.length > 0) {
36
+ const releaseNotesSection = (0, createReleaseNotesSection_1.createReleaseNotesSection)(releases);
35
37
  sections.push(releaseNotesSection);
36
38
  }
37
39
  }
38
- const notesSection = this.createNotesSection();
39
- if (notesSection !== undefined) {
40
+ if (this.options.prBodyNotes !== undefined) {
41
+ const notesSection = (0, createNotesSection_1.createNotesSection)(this.options.prBodyNotes);
40
42
  sections.push(notesSection);
41
43
  }
42
- const metadataSection = this.createMetadataSection(outdatedPackage);
44
+ const metadataSection = (0, createMetadataSection_1.createMetadataSection)(outdatedPackage);
43
45
  sections.push(`---\n${metadataSection}`);
44
- const footer = this.createFooter();
46
+ const footer = (0, createFooter_1.createFooter)();
45
47
  sections.push(`---\n${footer}`);
46
48
  return sections.join('\n\n');
47
49
  }
48
- createDiffSection({ outdatedPackage, gitRepo }) {
49
- const packageName = outdatedPackage.name;
50
- const currentVersion = outdatedPackage.currentVersion.version;
51
- const newVersion = outdatedPackage.newVersion.version;
52
- const links = [];
53
- if ((gitRepo === null || gitRepo === void 0 ? void 0 : gitRepo.isGitHub) === true) {
54
- const url = `${gitRepo.url.toString()}/compare/v${currentVersion}...v${newVersion}`;
55
- const optimizedUrl = (0, optimizeGitHubUrl_1.optimizeGitHubUrl)(url).toString();
56
- links.push(`- [GitHub](${optimizedUrl})`);
57
- }
58
- links.push(`- [npmfs](https://npmfs.com/compare/${packageName}/${currentVersion}/${newVersion})`);
59
- links.push(`- [Renovate Bot Package Diff](https://renovatebot.com/diffs/npm/${packageName}/${currentVersion}/${newVersion})`);
60
- return `## Package diffs
61
-
62
- ${links.join('\n')}`;
63
- }
64
- createFooter() {
65
- return `This PR has been generated by [${package_json_1.default.name}](${package_json_1.default.homepage}) v${package_json_1.default.version}`;
66
- }
67
- createOutdatedPackagesTable(outdatedPackage) {
68
- const packageName = outdatedPackage.name;
69
- const packageLink = `[${packageName}](https://www.npmjs.com/package/${packageName})`;
70
- const dependencyType = outdatedPackage.dependencyType;
71
- const level = outdatedPackage.level;
72
- const currentVersion = outdatedPackage.currentVersion.version;
73
- const currentVersionLink = `[\`${currentVersion}\`](https://www.npmjs.com/package/${packageName}/v/${currentVersion})`;
74
- const newVersion = outdatedPackage.newVersion.version;
75
- const newVersionLink = `[\`${newVersion}\`](https://www.npmjs.com/package/${packageName}/v/${newVersion})`;
76
- return `|Package|Dependency type|Level|Current version|New version|
77
- |---|---|---|---|---|
78
- |${packageLink}|${dependencyType}|${level}|${currentVersionLink}|${newVersionLink}|`;
79
- }
80
- createNotesSection() {
81
- if (this.options.prBodyNotes === undefined) {
82
- return undefined;
83
- }
84
- return `## Notes
85
-
86
- ${this.options.prBodyNotes}`;
87
- }
88
- async createReleaseNotesSection({ outdatedPackage, gitRepo }) {
89
- const releases = await this.releasesFetcher.fetch({
90
- gitRepo,
91
- packageName: outdatedPackage.name,
92
- from: outdatedPackage.currentVersion,
93
- to: outdatedPackage.newVersion
94
- });
95
- if (releases.length === 0) {
96
- return undefined;
97
- }
98
- const items = releases.map(({ tag, url }) => {
99
- const optimizedUrl = (0, optimizeGitHubUrl_1.optimizeGitHubUrl)(url).toString();
100
- return `- [${tag}](${optimizedUrl})`;
101
- });
102
- return `## Release notes
103
-
104
- ${items.join('\n')}`;
105
- }
106
50
  async extractRepository(outdatedPackage) {
107
51
  const packageJson = await (0, file_1.readFile)(`node_modules/${outdatedPackage.name}/package.json`);
108
- const pkg = (0, package_json_2.parsePackageJson)(packageJson);
109
- return (0, package_json_2.extractRepository)(pkg);
110
- }
111
- createMetadataSection(outdatedPackage) {
112
- const metadata = (0, metadata_1.createPullRequestMetadata)([outdatedPackage]);
113
- const json = (0, json_1.toJSON)(metadata, { pretty: true });
114
- return `<details>
115
- <summary>Metadata</summary>
116
-
117
- **Don't remove or edit this section because it will be used by npm-update-package.**
118
-
119
- <div id="npm-update-package-metadata">
120
-
121
- \`\`\`json
122
- ${json}
123
- \`\`\`
124
-
125
- </div>
126
- </details>`;
52
+ const pkg = (0, package_json_1.parsePackageJson)(packageJson);
53
+ return (0, package_json_1.extractRepository)(pkg);
127
54
  }
128
55
  }
129
56
  exports.PullRequestBodyCreator = PullRequestBodyCreator;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createFooter = void 0;
7
+ const package_json_1 = __importDefault(require("../../../../package.json"));
8
+ const createFooter = () => {
9
+ return `This PR has been generated by [${package_json_1.default.name}](${package_json_1.default.homepage}) v${package_json_1.default.version}`;
10
+ };
11
+ exports.createFooter = createFooter;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMetadataSection = void 0;
4
+ const json_1 = require("../../../json");
5
+ const metadata_1 = require("../metadata");
6
+ const createMetadataSection = (outdatedPackage) => {
7
+ const metadata = (0, metadata_1.createPullRequestMetadata)([outdatedPackage]);
8
+ const json = (0, json_1.toJSON)(metadata, {
9
+ pretty: true
10
+ });
11
+ return `<details>
12
+ <summary>Metadata</summary>
13
+
14
+ **Don't remove or edit this section because it will be used by npm-update-package.**
15
+
16
+ <div id="npm-update-package-metadata">
17
+
18
+ \`\`\`json
19
+ ${json}
20
+ \`\`\`
21
+
22
+ </div>
23
+ </details>`;
24
+ };
25
+ exports.createMetadataSection = createMetadataSection;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createNotesSection = void 0;
4
+ const createNotesSection = (notes) => {
5
+ return `## Notes
6
+
7
+ ${notes}`;
8
+ };
9
+ exports.createNotesSection = createNotesSection;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createOutdatedPackagesTable = void 0;
4
+ const createOutdatedPackagesTable = (outdatedPackage) => {
5
+ const packageName = outdatedPackage.name;
6
+ const packageLink = `[${packageName}](https://www.npmjs.com/package/${packageName})`;
7
+ const dependencyType = outdatedPackage.dependencyType;
8
+ const level = outdatedPackage.level;
9
+ const currentVersion = outdatedPackage.currentVersion.version;
10
+ const currentVersionLink = `[\`${currentVersion}\`](https://www.npmjs.com/package/${packageName}/v/${currentVersion})`;
11
+ const newVersion = outdatedPackage.newVersion.version;
12
+ const newVersionLink = `[\`${newVersion}\`](https://www.npmjs.com/package/${packageName}/v/${newVersion})`;
13
+ return `|Package|Dependency type|Level|Current version|New version|
14
+ |---|---|---|---|---|
15
+ |${packageLink}|${dependencyType}|${level}|${currentVersionLink}|${newVersionLink}|`;
16
+ };
17
+ exports.createOutdatedPackagesTable = createOutdatedPackagesTable;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createPackageDiffsSection = void 0;
4
+ const optimizeGitHubUrl_1 = require("./optimizeGitHubUrl");
5
+ const createPackageDiffsSection = ({ outdatedPackage, gitRepo }) => {
6
+ const packageName = outdatedPackage.name;
7
+ const currentVersion = outdatedPackage.currentVersion.version;
8
+ const newVersion = outdatedPackage.newVersion.version;
9
+ const links = [];
10
+ if ((gitRepo === null || gitRepo === void 0 ? void 0 : gitRepo.isGitHub) === true) {
11
+ const url = `${gitRepo.url.toString()}/compare/v${currentVersion}...v${newVersion}`;
12
+ const optimizedUrl = (0, optimizeGitHubUrl_1.optimizeGitHubUrl)(url).toString();
13
+ links.push(`- [GitHub](${optimizedUrl})`);
14
+ }
15
+ links.push(`- [npmfs](https://npmfs.com/compare/${packageName}/${currentVersion}/${newVersion})`);
16
+ links.push(`- [Package Diff](https://diff.intrinsic.com/${packageName}/${currentVersion}/${newVersion})`);
17
+ links.push(`- [Renovate Bot Package Diff](https://renovatebot.com/diffs/npm/${packageName}/${currentVersion}/${newVersion})`);
18
+ return `## Package diffs
19
+
20
+ ${links.join('\n')}`;
21
+ };
22
+ exports.createPackageDiffsSection = createPackageDiffsSection;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createReleaseNotesSection = void 0;
4
+ const optimizeGitHubUrl_1 = require("./optimizeGitHubUrl");
5
+ const createReleaseNotesSection = (releases) => {
6
+ const items = releases.map(({ tag, url }) => {
7
+ const optimizedUrl = (0, optimizeGitHubUrl_1.optimizeGitHubUrl)(url).toString();
8
+ return `- [${tag}](${optimizedUrl})`;
9
+ });
10
+ return `## Release notes
11
+
12
+ ${items.join('\n')}`;
13
+ };
14
+ exports.createReleaseNotesSection = createReleaseNotesSection;
@@ -7,9 +7,10 @@ exports.ReleasesFetcher = void 0;
7
7
  const node_fetch_1 = __importDefault(require("node-fetch"));
8
8
  const semver_1 = require("semver");
9
9
  const sleep_promise_1 = __importDefault(require("sleep-promise"));
10
- const type_guards_1 = require("type-guards");
10
+ // TODO: Split into multiple classes and functions
11
11
  class ReleasesFetcher {
12
- constructor({ packageManager }) {
12
+ constructor({ options, packageManager }) {
13
+ this.options = options;
13
14
  this.packageManager = packageManager;
14
15
  }
15
16
  async fetch({ gitRepo, packageName, from, to }) {
@@ -35,17 +36,20 @@ class ReleasesFetcher {
35
36
  }
36
37
  }
37
38
  async fetchReleasesByTags({ gitRepo, tags }) {
38
- const releases = await Promise.all(tags.map(async (tag, i) => {
39
+ const releases = [];
40
+ for (const [i, tag] of tags.entries()) {
39
41
  if (i > 0) {
40
- // NOTE: Sleeps for 1 second between fetches.
41
- await (0, sleep_promise_1.default)(1000);
42
+ await (0, sleep_promise_1.default)(this.options.fetchSleepTime);
42
43
  }
43
- return await this.fetchReleaseByTag({
44
+ const release = await this.fetchReleaseByTag({
44
45
  gitRepo,
45
46
  tag
46
47
  });
47
- }));
48
- return releases.filter(type_guards_1.isNotUndefined);
48
+ if (release !== undefined) {
49
+ releases.push(release);
50
+ }
51
+ }
52
+ return releases;
49
53
  }
50
54
  async getVersions({ packageName, from, to }) {
51
55
  const versions = await this.packageManager.getVersions(packageName);
package/dist/src/main.js CHANGED
@@ -8,7 +8,7 @@ const github_1 = require("./github");
8
8
  const ncu_1 = require("./ncu");
9
9
  const package_manager_1 = require("./package-manager");
10
10
  const terminal_1 = require("./terminal");
11
- // TODO: add test
11
+ // TODO: Add test
12
12
  const main = async ({ options, logger }) => {
13
13
  logger.debug(`options=${JSON.stringify({
14
14
  ...options,
@@ -68,7 +68,10 @@ const main = async ({ options, logger }) => {
68
68
  packageManager: options.packageManager
69
69
  });
70
70
  const pullRequestTitleCreator = new github_1.PullRequestTitleCreator(options.prTitle);
71
- const releasesFetcher = new github_1.ReleasesFetcher({ packageManager });
71
+ const releasesFetcher = new github_1.ReleasesFetcher({
72
+ options,
73
+ packageManager
74
+ });
72
75
  const pullRequestBodyCreator = new github_1.PullRequestBodyCreator({
73
76
  options,
74
77
  releasesFetcher
@@ -125,7 +128,7 @@ const main = async ({ options, logger }) => {
125
128
  logger.debug(`failedResults=${JSON.stringify(failedResults)}`);
126
129
  const failedPackages = failedResults.map(({ outdatedPackage }) => outdatedPackage);
127
130
  logger.debug(`failedPackages=${JSON.stringify(failedPackages)}`);
128
- // TODO: show as table
131
+ // TODO: Show as table
129
132
  logger.info(`Processed ${succeededResults.length + failedPackages.length} packages:
130
133
  - ${createdPackages.length} packages: created (${createdPackages.map(({ name }) => name).join(',')})
131
134
  - ${skippedPackages.length} packages: skipped: (${skippedPackages.map(({ name }) => name).join(',')})
@@ -7,7 +7,7 @@ const file_1 = require("../file");
7
7
  const package_json_1 = require("../package-json");
8
8
  const semver_1 = require("../semver");
9
9
  const NcuResult_1 = require("./NcuResult");
10
- // TODO: add test
10
+ // TODO: Add test
11
11
  class Ncu {
12
12
  constructor({ options, logger }) {
13
13
  this.options = options;
@@ -2,6 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isOptionType = exports.OptionType = void 0;
4
4
  exports.OptionType = {
5
+ Boolean: 'boolean',
6
+ Number: 'number',
5
7
  String: 'string',
6
8
  StringArray: 'string[]'
7
9
  };
@@ -7,6 +7,8 @@ const package_manager_1 = require("../package-manager");
7
7
  const Options = (0, io_ts_1.intersection)([
8
8
  (0, io_ts_1.type)({
9
9
  commitMessage: io_ts_1.string,
10
+ fetchReleaseNotes: io_ts_1.boolean,
11
+ fetchSleepTime: io_ts_1.number,
10
12
  githubToken: io_ts_1.string,
11
13
  logLevel: (0, io_ts_1.union)([
12
14
  (0, io_ts_1.literal)(logger_1.LogLevel.Off),
@@ -18,6 +18,20 @@ exports.cliOptions = [
18
18
  required: false,
19
19
  default: 'chore(deps): {{{level}}} update {{{packageName}}} to v{{{newVersion}}}'
20
20
  },
21
+ {
22
+ name: 'fetch-release-notes',
23
+ description: 'Whether to fetch release notes',
24
+ type: OptionType_1.OptionType.Boolean,
25
+ required: false,
26
+ default: true
27
+ },
28
+ {
29
+ name: 'fetch-sleep-time',
30
+ description: 'Sleep time between fetching (ms)',
31
+ type: OptionType_1.OptionType.Number,
32
+ required: false,
33
+ default: 1000
34
+ },
21
35
  {
22
36
  name: 'github-token',
23
37
  description: 'GitHub token',
@@ -8,7 +8,7 @@ const commander_1 = require("commander");
8
8
  const package_json_1 = __importDefault(require("../../package.json"));
9
9
  const Options_1 = require("./Options");
10
10
  const toCommanderOption_1 = require("./toCommanderOption");
11
- // TODO: add test
11
+ // TODO: Add test
12
12
  const createOptions = (cliOptions) => {
13
13
  commander_1.program.version(package_json_1.default.version);
14
14
  cliOptions
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseBooleanOption = void 0;
4
+ const commander_1 = require("commander");
5
+ const parseBooleanOption = (value) => {
6
+ switch (value) {
7
+ case 'true':
8
+ return true;
9
+ case 'false':
10
+ return false;
11
+ default:
12
+ throw new commander_1.InvalidArgumentError('Not a boolean.');
13
+ }
14
+ };
15
+ exports.parseBooleanOption = parseBooleanOption;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseNumberOption = void 0;
4
+ const commander_1 = require("commander");
5
+ const parseNumberOption = (value) => {
6
+ const number = Number(value);
7
+ if (Number.isNaN(number)) {
8
+ throw new commander_1.InvalidArgumentError('Not a number.');
9
+ }
10
+ return number;
11
+ };
12
+ exports.parseNumberOption = parseNumberOption;
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.toCommanderOption = void 0;
4
4
  const commander_1 = require("commander");
5
5
  const OptionType_1 = require("./OptionType");
6
+ const parseBooleanOption_1 = require("./parseBooleanOption");
7
+ const parseNumberOption_1 = require("./parseNumberOption");
6
8
  const toCommanderOption = (cliOption) => {
7
9
  const argument = createArgumentString(cliOption);
8
10
  const option = new commander_1.Option(`--${cliOption.name} ${argument}`, cliOption.description);
@@ -12,6 +14,12 @@ const toCommanderOption = (cliOption) => {
12
14
  if (!cliOption.required && cliOption.default !== undefined) {
13
15
  option.default(cliOption.default);
14
16
  }
17
+ if (cliOption.type === OptionType_1.OptionType.Boolean) {
18
+ option.argParser(parseBooleanOption_1.parseBooleanOption);
19
+ }
20
+ if (cliOption.type === OptionType_1.OptionType.Number) {
21
+ option.argParser(parseNumberOption_1.parseNumberOption);
22
+ }
15
23
  return option;
16
24
  };
17
25
  exports.toCommanderOption = toCommanderOption;
@@ -21,9 +29,13 @@ const createArgumentString = (cliOption) => {
21
29
  };
22
30
  const createArgumentNameString = (optionType) => {
23
31
  switch (optionType) {
32
+ case OptionType_1.OptionType.Boolean:
33
+ return 'boolean';
34
+ case OptionType_1.OptionType.Number:
35
+ return 'number';
24
36
  case OptionType_1.OptionType.String:
25
- return 'value';
37
+ return 'string';
26
38
  case OptionType_1.OptionType.StringArray:
27
- return 'values...';
39
+ return 'strings...';
28
40
  }
29
41
  };
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Terminal = void 0;
7
7
  const execa_1 = __importDefault(require("execa"));
8
- // TODO: add test
8
+ // TODO: Add test
9
9
  class Terminal {
10
10
  async run(command, ...args) {
11
11
  return await (0, execa_1.default)(command, args);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "npm-update-package",
3
- "version": "0.49.1",
3
+ "version": "0.52.0",
4
4
  "description": "CLI tool for creating pull requests to update npm packages",
5
5
  "scripts": {
6
6
  "build": "tsc --project tsconfig.build.json",
@@ -41,7 +41,7 @@
41
41
  "@types/parse-github-url": "1.0.0",
42
42
  "@types/semver": "7.3.9",
43
43
  "@typescript-eslint/eslint-plugin": "5.16.0",
44
- "eslint": "8.11.0",
44
+ "eslint": "8.12.0",
45
45
  "eslint-config-standard-with-typescript": "21.0.1",
46
46
  "eslint-plugin-import": "2.25.4",
47
47
  "eslint-plugin-jest": "26.1.3",