diff --git a/cli.js b/cli.js index 15bd6a2..128de2e 100755 --- a/cli.js +++ b/cli.js @@ -26,8 +26,12 @@ if (!semver.satisfies(process.version, '>= 8.0.0')) { const name = args._[0] || ''; const { type } = args; delete args.type; -run({ - name, - type, - args, -}); + +(async () => { + await run({ + name, + type, + args, + }); + process.exit(0); +})(); diff --git a/lib/generators/ant-design-pro/index.js b/lib/generators/ant-design-pro/index.js index 4c68eee..abf2cba 100644 --- a/lib/generators/ant-design-pro/index.js +++ b/lib/generators/ant-design-pro/index.js @@ -40,17 +40,28 @@ class AntDesignProGenerator extends BasicGenerator { }; } else { const prompts = [ + { + name: 'nextPro', + type: 'confirm', + message: 'πŸ§™ Be the first to experience the new umi@3 ?', + default: false, + when: () => { + // δΈΊδΊ†ζ΅‹θ―•οΌŒζ²‘ζœ‰δ»»δ½•η”¨ε€„ + process.send && process.send({ type: 'prompt' }); + process.emit('message', { type: 'prompt' }); + return true; + }, + }, { name: 'language', type: 'list', message: 'πŸ€“ Which language do you want to use?', choices: ['TypeScript', 'JavaScript'], default: 'TypeScript', - filter: value => { - // δΈΊδΊ†ζ΅‹θ―•οΌŒζ²‘ζœ‰δ»»δ½•η”¨ε€„ + when: ({ nextPro }) => { process.send && process.send({ type: 'prompt' }); process.emit('message', { type: 'prompt' }); - return value; + return !nextPro; }, }, { @@ -59,18 +70,20 @@ class AntDesignProGenerator extends BasicGenerator { message: 'πŸš€ Do you need all the blocks or a simple scaffold?', choices: ['simple', 'complete'], default: 'simple', - filter: value => { - // δΈΊδΊ†ζ΅‹θ―•οΌŒζ²‘ζœ‰δ»»δ½•η”¨ε€„ + when: ({ nextPro }) => { process.send && process.send({ type: 'prompt' }); process.emit('message', { type: 'prompt' }); - return value; + return !nextPro; }, }, { name: 'nextAntd', type: 'confirm', - when: ({ allBlocks }) => { - return allBlocks === 'simple'; + when: ({ allBlocks, nextPro }) => { + process.send && process.send({ type: 'prompt' }); + process.emit('message', { type: 'prompt' }); + console.log(nextPro); + return allBlocks === 'simple' && !nextPro; }, message: 'πŸ¦„ Time to use better, faster and latest antd@4!', default: true, @@ -83,7 +96,7 @@ class AntDesignProGenerator extends BasicGenerator { } async writing() { - const { language, allBlocks, nextAntd } = this.prompts; + const { language = 'TypeScript', allBlocks, nextPro, nextAntd } = this.prompts; const isTypeScript = language === 'TypeScript'; const projectName = this.opts.name || this.opts.env.cwd; @@ -101,6 +114,10 @@ class AntDesignProGenerator extends BasicGenerator { gitArgs.push('--branch', 'antd@3'); } + if (nextPro) { + gitArgs.push('--branch', 'v5'); + } + // all-blocks εˆ†ζ”―δΈŠεŒ…ε«δΊ†ζ‰€ζœ‰ηš„εŒΊε— if (allBlocks === 'complete') { log(`πŸ™ˆ complete mode can only use the version of antd@4`); @@ -108,7 +125,7 @@ class AntDesignProGenerator extends BasicGenerator { } // Set branch if provided - if (this.opts.args.branch) { + if (this.opts.args.branch && !nextPro) { gitArgs.push('--branch', this.opts.args.branch); } diff --git a/lib/run.js b/lib/run.js index 8881ca9..daac120 100644 --- a/lib/run.js +++ b/lib/run.js @@ -67,7 +67,7 @@ const run = async config => { try { return runGenerator(`./generators/${type}`, config); - } catch(e) { + } catch (e) { console.error(chalk.red(`> Generate failed`), e); process.exit(1); } diff --git a/test/__snapshots__/index.test.js.snap b/test/__snapshots__/index.test.js.snap index 535f2a6..a9efa36 100644 --- a/test/__snapshots__/index.test.js.snap +++ b/test/__snapshots__/index.test.js.snap @@ -9,12 +9,15 @@ exports[`test umi-create test generate antd pro project from gitee.org 1`] = ` block - Create a umi block. library - Create a library with umi. plugin - Create a umi plugin. ? Select the boilerplate type ant-design-pro +? πŸ§™ Be the first to experience the new umi@3 ? (y/N) ? πŸ§™ Be the first to experience the new umi@3 ? No + ? πŸ€“ Which language do you want to use? (Use arrow keys) ❯ TypeScript JavaScript ? πŸ€“ Which language do you want to use? TypeScript ? πŸš€ Do you need all the blocks or a simple scaffold? (Use arrow keys) ❯ simple complete ? πŸš€ Do you need all the blocks or a simple scaffold? simple +false ? πŸ¦„ Time to use better, faster and latest antd@4! (Y/n) ? πŸ¦„ Time to use better, faster and latest antd@4! Yes ❯ 🚚 clone success ❯ Clean up... @@ -31,6 +34,8 @@ exports[`test umi-create test generate antd pro project from github 1`] = ` block - Create a umi block. library - Create a library with umi. plugin - Create a umi plugin. ? Select the boilerplate type ant-design-pro +? πŸ§™ Be the first to experience the new umi@3 ? (y/N) ? πŸ§™ Be the first to experience the new umi@3 ? No + ? πŸ€“ Which language do you want to use? (Use arrow keys) ❯ TypeScript JavaScript ? πŸ€“ Which language do you want to use? @@ -39,6 +44,7 @@ exports[`test umi-create test generate antd pro project from github 1`] = ` ? πŸš€ Do you need all the blocks or a simple scaffold? (Use arrow keys) ❯ simple complete ? πŸš€ Do you need all the blocks or a simple scaffold? simple +false ? πŸ¦„ Time to use better, faster and latest antd@4! (Y/n) ? πŸ¦„ Time to use better, faster and latest antd@4! Yes ❯ 🚚 clone success ❯ [Sylvanas] Prepare js environment... diff --git a/test/index.test.js b/test/index.test.js index 3db712a..1f06f6d 100644 --- a/test/index.test.js +++ b/test/index.test.js @@ -23,6 +23,8 @@ describe('test umi-create', () => { .beforeScript(path.join(fixtures, 'mock_github.js')) .waitForPrompt() .write('\n') + .write('\n') + .write('\n') .writeKey('DOWN', 'ENTER') .write('\n') .write('\n') @@ -51,6 +53,8 @@ describe('test umi-create', () => { .write('\n') .write('\n') .write('\n') + .write('\n') + .write('\n') .end(); expect(winEOL(response.stdout).replace(/>/g, '❯')).toMatchSnapshot(); @@ -78,6 +82,9 @@ describe('typescript', () => { .write('\n') .write('\n') .write('\n') + .write('\n') + .write('\n') + .write('\n') .end(); expect(response.code).toBe(0); @@ -102,13 +109,14 @@ describe('typescript', () => { .beforeScript(path.join(fixtures, 'mock_github.js')) .waitForPrompt() .write('\n') + .write('\n') + .write('\n') // ts .write('\n') // all-blocks .writeKey('DOWN', 'ENTER') .write('\n') .end(); - expect(response.code).toBe(0); expect(fs.existsSync(path.join(temp, '/src/pages/exception/403/index.tsx'))).toBeTruthy(); }); @@ -127,14 +135,18 @@ describe('typescript', () => { }) .beforeScript(path.join(fixtures, 'mock_github.js')) .waitForPrompt() - .write('\n') + .writeKey('ENTER') + .writeKey('ENTER') + .writeKey('ENTER') // js .writeKey('DOWN', 'ENTER') // all blocks .writeKey('DOWN', 'ENTER') - .write('\n') + .writeKey('ENTER') + .writeKey('ENTER') .end(); - + console.log(response); + console.log(temp); expect(response.code).toBe(0); expect(fs.existsSync(path.join(temp, 'tsconfig.json'))).toBeFalsy(); expect(fs.existsSync(path.join(temp, '/src/pages/exception/403/index.jsx'))).toBeTruthy();