From 11226e604ad59473e3ce9ecb283cbb6f17960727 Mon Sep 17 00:00:00 2001 From: Thadeu Cotts Date: Mon, 23 Nov 2020 16:43:17 -0300 Subject: [PATCH 1/6] [setup] [s]: add prompts dependency --- packages/create-portal-app/package-lock.json | 19 +++++++++++++++++++ packages/create-portal-app/package.json | 3 ++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/packages/create-portal-app/package-lock.json b/packages/create-portal-app/package-lock.json index 6fb29bdd..d402cdef 100644 --- a/packages/create-portal-app/package-lock.json +++ b/packages/create-portal-app/package-lock.json @@ -137,6 +137,11 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" + }, "log-symbols": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", @@ -204,6 +209,15 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" }, + "prompts": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz", + "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==", + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -240,6 +254,11 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", diff --git a/packages/create-portal-app/package.json b/packages/create-portal-app/package.json index f7303d95..2b6aac07 100644 --- a/packages/create-portal-app/package.json +++ b/packages/create-portal-app/package.json @@ -12,7 +12,8 @@ "chalk": "^4.1.0", "commander": "^6.2.0", "execa": "^4.1.0", - "ora": "^5.1.0" + "ora": "^5.1.0", + "prompts": "^2.4.0" }, "files": [ "bin" From 12c0e1ac189fb5bf138112482d4eccc7092fd877 Mon Sep 17 00:00:00 2001 From: Thadeu Cotts Date: Mon, 23 Nov 2020 17:03:48 -0300 Subject: [PATCH 2/6] [config] [s]: import main packages and set params --- packages/create-portal-app/index.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) mode change 100644 => 100755 packages/create-portal-app/index.js diff --git a/packages/create-portal-app/index.js b/packages/create-portal-app/index.js old mode 100644 new mode 100755 index e69de29b..4fa129e6 --- a/packages/create-portal-app/index.js +++ b/packages/create-portal-app/index.js @@ -0,0 +1,22 @@ +#!/usr/bin/env node + +const { program } = require('commander') +const chalk = require('chalk') +const prompts = require('prompts') +const package = require('./package.json') + +/* Output path to create new portal app */ +let path = '' + + +/* Commander parameters to specify CLI behavior */ +program.name(package.name) + .version(package.version) + .arguments('[dir]') + .usage(`${chalk.yellow('[dir]')}`) + .description({ + dir: 'Directory to be used on install Portal.js' + }) + .action(name => path = name) + .allowUnknownOption() + .parse(process.argv) From 253a58a4068ccd5e48a70ca43fb0adf55ac9b935 Mon Sep 17 00:00:00 2001 From: Thadeu Cotts Date: Mon, 23 Nov 2020 17:05:59 -0300 Subject: [PATCH 3/6] [feat] [s]: add prompt method --- packages/create-portal-app/index.js | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/packages/create-portal-app/index.js b/packages/create-portal-app/index.js index 4fa129e6..9b098703 100755 --- a/packages/create-portal-app/index.js +++ b/packages/create-portal-app/index.js @@ -5,11 +5,11 @@ const chalk = require('chalk') const prompts = require('prompts') const package = require('./package.json') -/* Output path to create new portal app */ +// Output path to create new portal app let path = '' -/* Commander parameters to specify CLI behavior */ +// Commander parameters to specify CLI behavior program.name(package.name) .version(package.version) .arguments('[dir]') @@ -20,3 +20,21 @@ program.name(package.name) .action(name => path = name) .allowUnknownOption() .parse(process.argv) + + + /** + * Method to ask a custon name if was not passed as parameter + */ + async function promptPath(){ + return prompts({ + type: 'text', + name: 'path', + message: 'Choose a name to your project', + initial: '', + validate: name => { + //TODO Method to validate valid path name + return true + } + }) + + } \ No newline at end of file From d5e925546d210b2768a24730dc124c9c46ad676d Mon Sep 17 00:00:00 2001 From: Thadeu Cotts Date: Mon, 23 Nov 2020 17:06:53 -0300 Subject: [PATCH 4/6] [doc] [s]: update method documentation --- packages/create-portal-app/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/create-portal-app/index.js b/packages/create-portal-app/index.js index 9b098703..3cbe6b20 100755 --- a/packages/create-portal-app/index.js +++ b/packages/create-portal-app/index.js @@ -24,6 +24,7 @@ program.name(package.name) /** * Method to ask a custon name if was not passed as parameter + * returns the value passed from terminal input */ async function promptPath(){ return prompts({ From 870fd1526452bc5551dccf4de908b5dcbd2f6f0a Mon Sep 17 00:00:00 2001 From: Thadeu Cotts Date: Mon, 23 Nov 2020 17:07:44 -0300 Subject: [PATCH 5/6] [feat] [s]: main method to run CLI --- packages/create-portal-app/index.js | 35 +++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/packages/create-portal-app/index.js b/packages/create-portal-app/index.js index 3cbe6b20..01dfe640 100755 --- a/packages/create-portal-app/index.js +++ b/packages/create-portal-app/index.js @@ -38,4 +38,39 @@ program.name(package.name) } }) + } + + /** + * Main method to start CLI and validate inputs + */ + async function run(){ + if(typeof path === 'string'){ + path = path.trim() + } + if(!path){ + const response = await promptPath() + if(typeof response.path === 'string'){ + path = response.path.trim() + } + } + if(!path){ + console.log() + console.log('Please choose a name to your project:') + console.log() + console.log('Example:') + console.log(`${chalk.cyan(program.name())} ${chalk.yellow('ny-portal-app')}`) + console.log() + + process.exit(1) + } + + /** + * TODO Include workflow to create and manage the files and options + * + * Example: + * createApp() + * .then(installDependencies) + * .then(renameFiles) + * .then(checkUpdated) + */ } \ No newline at end of file From 1844c45020edce163a413300f866fe0252f69177 Mon Sep 17 00:00:00 2001 From: Thadeu Cotts Date: Mon, 23 Nov 2020 17:10:42 -0300 Subject: [PATCH 6/6] [feat] [s]: main workflow exec workflow --- packages/create-portal-app/index.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/create-portal-app/index.js b/packages/create-portal-app/index.js index 01dfe640..60945436 100755 --- a/packages/create-portal-app/index.js +++ b/packages/create-portal-app/index.js @@ -71,6 +71,21 @@ program.name(package.name) * createApp() * .then(installDependencies) * .then(renameFiles) + * .then(accessFolder) * .then(checkUpdated) */ - } \ No newline at end of file + } + + //Main CLI execution workflow + run() + .then(`${chalk.greenBright('Project Installed Sucess')}`) + .catch(error => { + if(error.command){ + console.log(`${chalk.cyan('Error on Create App')}`) + }else{ + console.log(`${chalk.red('Unexpected Erro. Please report it as a bug')}`) + console.log(error) + } + console.log() + process.exit(1) + }) \ No newline at end of file