diff --git a/src/cli.ts b/src/cli.ts index e61a5e0..c12f120 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -1,18 +1,8 @@ #!/usr/bin/env node -import minimist, { ParsedArgs } from 'minimist'; +import minimist from 'minimist'; import { create } from './create'; -export type Argvs = { - appName?: string; - f?: boolean; - force?: boolean; - e?: string; - example?: string; - p?: string; - path?: string; -} & ParsedArgs; - async function run(): Promise { try { const argvs = minimist(process.argv.slice(2)); @@ -44,7 +34,7 @@ async function run(): Promise { argvs.path = argvs.p = argvs.path || argvs.p || 'https://kktjs.github.io/zip/'; argvs.force = argvs.f = argvs.force || argvs.f || false; argvs.example = argvs.e = argvs.example || argvs.e || 'basic'; - create(argvs); + create(argvs, exampleHelp); } catch (error) { console.log(`\x1b[31m${error.message}\x1b[0m`); console.log(error); diff --git a/src/create.ts b/src/create.ts index 4a3e64f..00d8b65 100644 --- a/src/create.ts +++ b/src/create.ts @@ -1,12 +1,20 @@ import fs from 'fs-extra'; +import { ParsedArgs } from 'minimist'; import path from 'path'; import download from 'download'; import ora from 'ora'; -import { Argvs, exampleHelp } from './cli'; -export type CreateOptions = {} & Argvs; +export type CreateOptions = { + appName?: string; + f?: boolean; + force?: boolean; + e?: string; + example?: string; + p?: string; + path?: string; +} & ParsedArgs; -export async function create(argv: CreateOptions) { +export async function create(argv: CreateOptions, exampleHelp: () => void) { const spinner = ora('Downloading Example.'); try { if (!argv.appName || !/^[A-Za-z0-9_\-\.]{1,}$/.test(argv.appName)) { @@ -16,13 +24,13 @@ export async function create(argv: CreateOptions) { ` \x1b[31mThe name directory name\x1b[0m \x1b[33m${argv.appName}\x1b[0m \x1b[31mcontains special characters.\x1b[0m`, ); } - exampleHelp(); + exampleHelp && exampleHelp(); console.log(`\n`); return; } if (!argv.path || typeof argv.path !== 'string') { console.log(`\n Uh oh! \x1b[31mPlease specify download address\x1b[0m.`); - exampleHelp(); + exampleHelp && exampleHelp(); console.log(`\n`); return; }