UNPKG

lina-infratech-cli

Version:

A CLI tool for Lina Infratech Developers

66 lines (51 loc) 1.59 kB
import { execSync } from 'child_process' import { cd, mkdir } from 'shelljs' import { commitAndLint } from '../utils/commit-and-lint' import { generateConfigFiles, generatePackageJson, generateProjectStructure, } from '../generator' import { MESSAGES } from '../ui/messages' import { logError, logSuccess } from '../utils/chalk/colors' import { expressDependencies, expressDevDependencies } from '../utils/constants' function installDependencies(): void { const deps = expressDependencies.join(' ') const devDeps = expressDevDependencies.join(' ') console.log(MESSAGES.DEPS_INSTALL) execSync(`npm i ${deps}`) logSuccess(MESSAGES.DEPS_OK) console.log(MESSAGES.DEV_DEPS_INSTALL) execSync(`npm i -D ${devDeps}`) logSuccess(MESSAGES.DEV_DEPS_OK) } interface initOptions { express?: boolean nest?: boolean } export async function projectInitAction( projectName: string, options: initOptions, ) { logSuccess(`Creating project: ${projectName}...`) console.log('options:', options) if (options.express) { try { mkdir(`${process.cwd()}/${projectName}`) cd(`${process.cwd()}/${projectName}`) console.log(MESSAGES.NPM_START) execSync('npm init -y') logSuccess(MESSAGES.NPM_OK) installDependencies() generatePackageJson() await generateConfigFiles() generateProjectStructure() commitAndLint('Initial commit - generated by Lina CLI') } catch (error) { logError(MESSAGES.GENERIC_ERROR, error) process.exit(1) } } else { logError('Please inform a init option') } }