From 9f4d76cae876dad95a47fc624f9cbfafc8b659e2 Mon Sep 17 00:00:00 2001 From: Cphayim Date: Mon, 28 Mar 2022 00:04:14 +0800 Subject: [PATCH] feat(cli): passing additional parameters when calling the `runner` (#12) * refactor(cli): `logger.done` of hoist finish * feat(cli): passing additional parameters when calling the `runner` resolve #11 --- packages/command-boilerplate/package.json | 2 +- .../src/create/create.action.ts | 3 ++- .../src/create/create.command.ts | 1 + .../src/create/git-create.action.ts | 5 ++--- .../src/create/http-create.action.ts | 1 - .../src/create/package-create.action.ts | 15 +++++++++++++-- pnpm-lock.yaml | 8 ++++---- 7 files changed, 23 insertions(+), 12 deletions(-) diff --git a/packages/command-boilerplate/package.json b/packages/command-boilerplate/package.json index c2482c7b..404f8d04 100644 --- a/packages/command-boilerplate/package.json +++ b/packages/command-boilerplate/package.json @@ -27,7 +27,7 @@ "url": "https://github.com/vrn-deco/cli/issues" }, "dependencies": { - "@vrn-deco/boilerplate-protocol": "^1.2.0", + "@vrn-deco/boilerplate-protocol": "^1.3.0", "@vrn-deco/cli-command": "workspace:*", "@vrn-deco/cli-config-helper": "workspace:*", "@vrn-deco/cli-log": "workspace:*", diff --git a/packages/command-boilerplate/src/create/create.action.ts b/packages/command-boilerplate/src/create/create.action.ts index 04270b7c..9375b3f5 100644 --- a/packages/command-boilerplate/src/create/create.action.ts +++ b/packages/command-boilerplate/src/create/create.action.ts @@ -27,6 +27,7 @@ export type CreateOptions = ModeOptions & { manifestPackage: string apiUrl: string postGit: PostGit + autoInstallDeps: boolean } export type CreateActionArgs = ActionArgs @@ -82,7 +83,7 @@ export class CreateAction extends Action { } override async clear(): Promise { - // + logger.done(`Project created successfully, located at ${this.targetDirectory}\nHappy coding!`) } async verifyDirectory(): Promise { diff --git a/packages/command-boilerplate/src/create/create.command.ts b/packages/command-boilerplate/src/create/create.command.ts index 10c50da9..9c9b0c7b 100644 --- a/packages/command-boilerplate/src/create/create.command.ts +++ b/packages/command-boilerplate/src/create/create.command.ts @@ -54,6 +54,7 @@ createCommand .choices([PostGit.Retain, PostGit.Remove, PostGit.Rebuild]) .default(PostGit.Retain), ) + .option('-A, --no-auto-install-deps', 'not install, only in `package` mode will install dependencies', false) .action(runActionByMode) // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/packages/command-boilerplate/src/create/git-create.action.ts b/packages/command-boilerplate/src/create/git-create.action.ts index 1feeb8bc..2549501d 100644 --- a/packages/command-boilerplate/src/create/git-create.action.ts +++ b/packages/command-boilerplate/src/create/git-create.action.ts @@ -23,8 +23,7 @@ export class GitCreateAction extends CreateAction { override async execute(): Promise { await super.execute() await this.execGitClone() - await this.postHandle() - logger.done(`Project created successfully, located at ${this.targetDirectory}\nHappy coding!`) + await this.postGit() } override async clear(): Promise { @@ -61,7 +60,7 @@ export class GitCreateAction extends CreateAction { } } - async postHandle(): Promise { + async postGit(): Promise { logger.verbose('Start post-handle...') logger.verbose(`PostGit -> ` + this.options.postGit) const handleMap: Record void | Promise> = { diff --git a/packages/command-boilerplate/src/create/http-create.action.ts b/packages/command-boilerplate/src/create/http-create.action.ts index b18c9286..be8be112 100644 --- a/packages/command-boilerplate/src/create/http-create.action.ts +++ b/packages/command-boilerplate/src/create/http-create.action.ts @@ -38,7 +38,6 @@ export class HTTPCreateAction extends CreateAction { await super.execute() const fileName = await this.downloadPackedBoilerplate() await this.unpackBoilerplate(fileName) - logger.done(`Project created successfully, located at ${this.targetDirectory}\nHappy coding!`) } override async clear(): Promise { diff --git a/packages/command-boilerplate/src/create/package-create.action.ts b/packages/command-boilerplate/src/create/package-create.action.ts index 79d11baa..ac5cde8d 100644 --- a/packages/command-boilerplate/src/create/package-create.action.ts +++ b/packages/command-boilerplate/src/create/package-create.action.ts @@ -11,6 +11,8 @@ import { dynamicImport } from '@vrn-deco/cli-shared' import { CreateAction } from './create.action.js' import { PackageBoilerplateService } from '../services/boilerplate.service.js' +import { PostGit } from '../common.js' +import { readConfig } from '@vrn-deco/cli-config-helper' /** * Selected interactively from the `manifest-package` @@ -36,7 +38,6 @@ export class PackageCreateAction extends CreateAction { await super.execute() const pkg = await this.pullBoiPackage() await this.installBoilerplate(pkg) - logger.done(`Project created successfully, located at ${this.targetDirectory}\nHappy coding!`) } override async clear(): Promise { @@ -90,11 +91,21 @@ export class PackageCreateAction extends CreateAction { async installBoilerplate(boiPackage: NPMPackage) { logger.info('Start creating a project with boilerplate package...') + const config = readConfig() const { name, version, author } = this.baseInfo try { const runner: PresetRunner = (await dynamicImport(boiPackage.mainScript)).default - await runner({ targetDir: this.targetDirectory, boiPackageDir: boiPackage.packageDir, name, version, author }) + await runner({ + targetDir: this.targetDirectory, + boiPackageDir: boiPackage.packageDir, + name, + version, + author, + packageManager: config.packageManager, + autoInstallDeps: this.options.autoInstallDeps, + gitInit: this.options.postGit !== PostGit.Remove, // default always init git + }) } catch (error) { logger.verbose(`PresetRunner Error: ${error.message}`) throw new Error('Boilerplate runner execution failed') diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4982b429..0de45bd3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -121,7 +121,7 @@ importers: packages/command-boilerplate: specifiers: - '@vrn-deco/boilerplate-protocol': ^1.2.0 + '@vrn-deco/boilerplate-protocol': ^1.3.0 '@vrn-deco/cli-command': workspace:* '@vrn-deco/cli-config-helper': workspace:* '@vrn-deco/cli-log': workspace:* @@ -133,7 +133,7 @@ importers: node-fetch: ^3.2.0 yaml: ^1.10.2 dependencies: - '@vrn-deco/boilerplate-protocol': 1.2.0 + '@vrn-deco/boilerplate-protocol': 1.3.0 '@vrn-deco/cli-command': link:../command '@vrn-deco/cli-config-helper': link:../config-helper '@vrn-deco/cli-log': link:../log @@ -948,8 +948,8 @@ packages: sirv: 2.0.2 dev: true - /@vrn-deco/boilerplate-protocol/1.2.0: - resolution: {integrity: sha512-q6sVAzpnHRYVOB2KVLlCIyBn5cK7Tx7IqDznNGfdXdRL0EahRUD3PykJ66tO6WFs44XjZYqcTFM99Em7aPvucQ==} + /@vrn-deco/boilerplate-protocol/1.3.0: + resolution: {integrity: sha512-tV+sXQwfzbA2Tu0xpWTmR/drCd7LzseS17t0wh4Cc3fsF9yyanzgJLd+y+hCbdFmwj/5dktzEQDr+kr/ALuJCg==} dependencies: ajv: 6.12.6 fs-extra: 10.0.0