UNPKG

@saiforceone/dirt-cli

Version:

Official CLI Utility for the D.I.R.T stack

97 lines (92 loc) 3.58 kB
import chalk from 'chalk'; import ScaffoldOptions = DIRTStackCLI.ScaffoldOptions; /** * @description Convenience function that retrieves database instructions that will be printed to the terminal * at the end of the scaffold process. * @param dbOpt */ function getDatabaseInstructions(dbOpt: string): string { if (dbOpt === 'None') return ''; const instructions: { [key: string]: string } = { mysql: ` ${chalk.blue.underline('Database Setup: MySQL')}\n 1. You may be required to install ${chalk.green( 'mysqlclient' )} if you haven't done so already before attempting to run any migrations.\n Refer to: ${chalk.underline( 'https://pypi.org/project/mysqlclient/' )} for more information. 2. Be sure to create your database based on settings in ${chalk.green( 'dirt_settings/dev.py' )} 3. Set an actual password for the database. 4. Run migrations. `, postgresql: ` ${chalk.blue.underline('Database Setup: Postgresql')}\n 1. You may be required to install ${chalk.green( 'psycopg/psycopg2' )} if you haven't done so already.\n Refer to: ${chalk.underline( 'https://www.psycopg.org/docs/install.html' )} for more information. 2. Be sure to create your database based on settings in ${chalk.green( 'dirt_settings/dev.py' )} 3. Set an actual password for the database. 4. Run migrations. `, sqlite: ` ${chalk.blue.underline('Database Setup: SQLite')}\n ${chalk.bold('Note:')} You're already good to go. Just run the migrations. `, }; return instructions[dbOpt] ?? ''; } /** * @description Prints out information after the scaffolding process has completed including * information like what to do next, where to get help, etc * @param options * @returns {void} */ export function postScaffold(options: ScaffoldOptions) { const storybookInstructions = ` ${chalk.blue.underline('Running Storybook')}\n Since you have used the Storybook option, please see below for instructions:\n 1. In a separate terminal, run Storybook: ${chalk.green("'npm run storybook'")} `; const prettierInstructions = ` ${chalk.blue.underline('Using Prettier')}\n Since you have chosen to install Prettier, you may need to configure your IDE or editor to use it. `; console.log(` ${chalk.green.bold('Ready to get D.I.R.T-y?')}\n ${chalk.underline.blue('Installation Summary')}\n Project Name: ${chalk.blue(options['projectName'])} Frontend: ${chalk.blue(options['frontend'])} Database: ${chalk[options['databaseOption'] === 'None' ? 'dim' : 'green']( options['databaseOption'] )} Storybook Enabled: ${ options['withStorybook'] ? chalk.green('Yes') : chalk.dim('No') } Prettier Installed: ${ options['installPrettier'] ? chalk.green('Yes') : chalk.dim('No') }\n ${ options['databaseOption'] !== 'None' ? getDatabaseInstructions(options['databaseOption']) : '' }\n ${chalk.blue.underline('What do next')}\n 1. navigate to: ${chalk.green(options['projectName'])} 2. activate pipenv: ${chalk.green("'pipenv shell'")} 3. run the project: ${chalk.green("'npm run dirt-dev'")} 4. In your browser, navigate to: ${chalk.green('http://localhost:8000')}\n ${chalk.grey( 'Note: due to a limitation with concurrently, some output (django dev server) will not be displayed when the dirt-dev command is run.' )} ${chalk.gray( "Workaround: Activate the shell and run 'python manage.py runserver' in a separate terminal and then 'npm run dirt-fe' in another terminal" )} ${options['withStorybook'] ? storybookInstructions : ''} ${options['installPrettier'] ? prettierInstructions : ''} `); }