UNPKG

henchman-cli

Version:

An all-in-one, interactive command-line tool that simplifies creating, setting up, and managing development projects like Flutter and Node.js while automating repetitive tasks.

132 lines (123 loc) 4.14 kB
import fs from 'fs/promises'; import inquirer from 'inquirer'; import path from 'path'; import {baseDir, errorSpinnerExit, execute} from '../core/utils.js'; import {byeMessage, henchman} from '../core/constants.js'; import ora from 'ora'; export async function createRepo(dir) { const remote = await inquirer.prompt({ type: 'input', name: 'repo', message: `${henchman} Enter remote repo url:` }); const repo = remote['repo']; if (repo === '') { console.log(`${henchman}: Remote repo cannot be empty.`); console.log(byeMessage); process.exit(1); } try { await fs.access(path.join(dir, 'README.md')); console.log(`${henchman}: README.md already exists`) } catch (err) { if (err.code === 'ENOENT') { await fs.writeFile(path.join(dir, 'README.md'), ''); } } await execute(`cd ${dir};` + 'git init --initial-branch=main;' + 'git branch -M main;' + 'git add .;' + 'git commit -m "Init Repository";' + `git remote add origin ${repo};` + 'git push -u origin main', 'Creating new GIT repository' ); } export async function generalGitIgnore(dir) { const spinner = ora(`${henchman}: Adding general .gitignore`).start(); try { const data = await fs.readFile( path.join(baseDir, 'templates/gitignore/git.txt'), {encoding: 'utf8'} ); await fs.writeFile(path.join(dir, '.gitignore'), data); } catch (err) { errorSpinnerExit(spinner, err); } spinner.succeed(`${henchman}: .gitignore added`); } export async function flutterGitIgnore(dir) { await generalGitIgnore(dir); const spinner = ora(`${henchman}: Adding flutter specific .gitignore`).start(); try { const data = await fs.readFile( path.join(baseDir, 'templates/gitignore/git_flutter.txt'), {encoding: 'utf8'} ); await fs.appendFile(path.join(dir, '.gitignore'), data); } catch (err) { errorSpinnerExit(spinner, err); } spinner.succeed(`${henchman}: .gitignore modified`); } export async function unityGitIgnore(dir) { const spinner = ora(`${henchman}: Adding Unity .gitignore`).start(); try { const data = await fs.readFile( path.join(baseDir, 'templates/gitignore/git_unity.txt'), {encoding: 'utf8'} ); await fs.writeFile(path.join(dir, '.gitignore'), data); } catch (err) { errorSpinnerExit(spinner, err); } spinner.succeed(`${henchman}: .gitignore added`); } export async function nodeGitIgnore(dir) { await generalGitIgnore(dir); const spinner = ora(`${henchman}: Adding node specific .gitignore`).start(); try { const data = await fs.readFile( path.join(baseDir, 'templates/gitignore/git_node.txt'), {encoding: 'utf8'} ); await fs.appendFile(path.join(dir, '.gitignore'), data); } catch (err) { errorSpinnerExit(spinner, err); } spinner.succeed(`${henchman}: .gitignore modified`); } export async function pythonGitIgnore(dir) { await generalGitIgnore(dir); const spinner = ora(`${henchman}: Adding python specific .gitignore`).start(); try { const data = await fs.readFile( path.join(baseDir, 'templates/gitignore/git_python.txt'), {encoding: 'utf8'} ); await fs.appendFile(path.join(dir, '.gitignore'), data); } catch (err) { errorSpinnerExit(spinner, err); } spinner.succeed(`${henchman}: .gitignore modified`); } export async function gitIgnoreByArgument(args, dir) { switch (args) { case 'general': await generalGitIgnore(dir); break; case 'flutter': await flutterGitIgnore(dir); break; case 'node': await nodeGitIgnore(dir); break; case 'python': await pythonGitIgnore(dir); break; case 'unity': await unityGitIgnore(dir); break; } }