From 2b4de5b98ff193826d229af0cc790131e15caddc Mon Sep 17 00:00:00 2001 From: Fuyao Zhao Date: Mon, 26 Sep 2022 19:48:20 -0700 Subject: [PATCH] chore(sdk): add -d flag for create command, add version command for cli, bug fix (#120) --- sdk/package.json | 1 + sdk/release.config.js | 11 +++++++++- sdk/src/cli/cli.ts | 4 ++++ sdk/src/cli/commands/run-create.ts | 11 ++++++++-- sdk/src/cli/commands/run-version.ts | 32 +++++++++++++++++++++++++++++ yarn.lock | 9 ++++++++ 6 files changed, 65 insertions(+), 3 deletions(-) create mode 100644 sdk/src/cli/commands/run-version.ts diff --git a/sdk/package.json b/sdk/package.json index 4a3fdd388..e4cccf2f3 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -57,6 +57,7 @@ "@types/node": "^18.0.4", "chai": "^4.3.6", "clean-publish": "^4.0.1", + "conventional-changelog-conventionalcommits": "^5.0.0", "jest": "^29.0.0", "semantic-release": "^19.0.5", "ts-jest": "^29.0.0", diff --git a/sdk/release.config.js b/sdk/release.config.js index 01b10d986..79fbabaf9 100644 --- a/sdk/release.config.js +++ b/sdk/release.config.js @@ -18,7 +18,16 @@ module.exports = { ["@semantic-release/npm", { // "pkgRoot": "dist" }], - '@semantic-release/release-notes-generator', + ['@semantic-release/release-notes-generator', { + preset: 'conventionalcommits', + presetConfig: { + types: [ + { type: 'feat', section: 'Features' }, + { type: 'fix', section: 'Bug Fixes' }, + { type: 'chore', section: 'Internal', hidden: false }, + { type: 'refactor', section: 'Internal', hidden: false }, + ]}, + }], [ '@semantic-release/github', { diff --git a/sdk/src/cli/cli.ts b/sdk/src/cli/cli.ts index cfb6029d9..6487eab2f 100644 --- a/sdk/src/cli/cli.ts +++ b/sdk/src/cli/cli.ts @@ -12,6 +12,7 @@ import chalk from 'chalk' import { buildProcessor } from './build' import { runLogin } from './commands/run-login' import { runCreate } from './commands/run-create' +import { runVersion } from './commands/run-version' const mainDefinitions = [{ name: 'command', defaultOption: true }] const mainOptions = commandLineArgs(mainDefinitions, { @@ -27,6 +28,8 @@ if (mainOptions.command === 'login') { runLogin(argv) } else if (mainOptions.command === 'create') { runCreate(argv) +} else if (mainOptions.command === 'version') { + runVersion(argv) } else { // For all the commands that need read project configs // TODO move them to their own modules @@ -161,6 +164,7 @@ function usage() { 'sentio upload\t\t\t\tbuild and upload processor to sentio', 'sentio gen\t\t\t\tgenerate abi', 'sentio build\t\t\t\tgenerate abi and build', + 'sentio version\t\t\t\tcurrent cli version', ], }, ]) diff --git a/sdk/src/cli/commands/run-create.ts b/sdk/src/cli/commands/run-create.ts index 21cf745c8..15031e156 100644 --- a/sdk/src/cli/commands/run-create.ts +++ b/sdk/src/cli/commands/run-create.ts @@ -20,6 +20,12 @@ export function runCreate(argv: string[]) { type: String, description: 'Project name', }, + { + name: 'directory', + alias: 'd', + description: '(Optional) The root direct new project will be created, default current working dir', + type: String, + }, ] const options = commandLineArgs(optionDefinitions, { argv }) @@ -39,7 +45,8 @@ export function runCreate(argv: string[]) { const templateFolder = path.resolve(__dirname, '../../../template') const projectName = options.name || 'default' - const dstFolder = path.resolve(projectName) + const rootDir = options.directory || process.cwd() + const dstFolder = path.resolve(rootDir, projectName) if (fs.existsSync(dstFolder)) { console.error(chalk.red("can't create project '" + projectName + "', directory already existed")) process.exit(1) @@ -73,7 +80,7 @@ export function runCreate(argv: string[]) { cliVersion = '^' + cliVersion } - packageJson.version = cliVersion + packageJson.dependencies['@sentio/sdk'] = cliVersion packageJson.name = projectName // Don't add directly to avoid deps issue diff --git a/sdk/src/cli/commands/run-version.ts b/sdk/src/cli/commands/run-version.ts new file mode 100644 index 000000000..e60373e0d --- /dev/null +++ b/sdk/src/cli/commands/run-version.ts @@ -0,0 +1,32 @@ +import commandLineArgs from 'command-line-args' +import commandLineUsage from 'command-line-usage' +import { getCliVersion } from '../utils' + +export function runVersion(argv: string[]) { + const optionDefinitions = [ + { + name: 'help', + alias: 'h', + type: Boolean, + description: 'Display this usage guide.', + }, + ] + const options = commandLineArgs(optionDefinitions, { argv }) + + if (options.help) { + const usage = commandLineUsage([ + { + header: 'Show current version', + content: 'sentio version', + }, + { + header: 'Options', + optionList: optionDefinitions, + }, + ]) + console.log(usage) + } else { + console.log('CLI Version: ', getCliVersion()) + // TODO show SDK version for current package + } +} diff --git a/yarn.lock b/yarn.lock index 0d1c52c50..5e9b6a925 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2861,6 +2861,15 @@ conventional-changelog-angular@^5.0.0: compare-func "^2.0.0" q "^1.5.1" +conventional-changelog-conventionalcommits@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-5.0.0.tgz#41bdce54eb65a848a4a3ffdca93e92fa22b64a86" + integrity sha512-lCDbA+ZqVFQGUj7h9QBKoIpLhl8iihkO0nCTyRNzuXtcd7ubODpYB04IFy31JloiJgG0Uovu8ot8oxRzn7Nwtw== + dependencies: + compare-func "^2.0.0" + lodash "^4.17.15" + q "^1.5.1" + conventional-changelog-writer@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz#e0757072f045fe03d91da6343c843029e702f359"