@lenne.tech/cli
Version:
lenne.Tech CLI: lt
92 lines • 8 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Create a new CLI
*/
const NewCommand = {
alias: ['c'],
description: 'Creates a new CLI',
hidden: false,
name: 'create',
run: (toolbox) => __awaiter(void 0, void 0, void 0, function* () {
// Retrieve the tools we need
const { filesystem, git, helper, meta, parameters, print: { error, info, spin, success }, prompt: { ask }, strings: { kebabCase }, system, } = toolbox;
// Info
info('Create a new CLI');
// Check git
if (!(yield git.gitInstalled())) {
return;
}
// Get name
const name = yield helper.getInput(parameters.first, {
name: 'CLI name',
showError: true,
});
if (!name) {
return;
}
// Get author
const author = yield helper.getInput(parameters.options.author, {
name: 'Author',
showError: true,
});
// Link
let link = parameters.options.link && !parameters.options.nolink;
if (!parameters.options.link && !parameters.options.nolink) {
link = !!(yield ask({
message: 'Link when finished?',
name: 'link',
type: 'confirm',
})).link;
}
// Start timer
const timer = system.startTimer();
// Set project directory
const projectDir = kebabCase(name); // kebab-case
// Check if directory already exists
if (filesystem.exists(projectDir)) {
info('');
error(`There's already a folder named "${projectDir}" here.`);
return undefined;
}
// Clone git repository
const cloneSpinner = spin('Clone https://github.com/lenneTech/cli-starter.git');
yield system.run(`git clone https://github.com/lenneTech/cli-starter.git ${projectDir}`);
if (filesystem.isDirectory(`./${projectDir}`)) {
filesystem.remove(`./${projectDir}/.git`);
cloneSpinner.succeed('Repository cloned from https://github.com/lenneTech/cli-starter.git');
}
else {
cloneSpinner.fail(`The directory "${projectDir}" could not be created.`);
return undefined;
}
// Install packages
const installSpinner = spin('Install npm packages');
yield system.run(`cd ${projectDir} && npm i`);
installSpinner.succeed('NPM packages installed');
// Rename files and data
const renameSpinner = spin(`Rename files & data ${link ? ' and link' : ''}`);
yield system.run(`cd ${projectDir} && npm run rename -- "${name}" --author "${author}" --${link ? 'link' : 'nolink'}`);
renameSpinner.succeed(`Files & data renamed${link ? ' and linked' : ''}`);
// Init git
const initGitSpinner = spin('Initialize git');
yield system.run(`cd ${projectDir} && git init && git add . && git commit -am "Init via lenne.Tech CLI ${meta.version()}"`);
initGitSpinner.succeed('Git initialized');
// We're done, so show what to do next
info('');
success(`Generated ${name} server with lenne.Tech CLI ${meta.version()} in ${helper.msToMinutesAndSeconds(timer())}m.`);
// For tests
return `new cli ${name}`;
}),
};
exports.default = NewCommand;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2NsaS9jcmVhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFJQTs7R0FFRztBQUNILE1BQU0sVUFBVSxHQUFtQjtJQUNqQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDWixXQUFXLEVBQUUsbUJBQW1CO0lBQ2hDLE1BQU0sRUFBRSxLQUFLO0lBQ2IsSUFBSSxFQUFFLFFBQVE7SUFDZCxHQUFHLEVBQUUsQ0FBTyxPQUErQixFQUFFLEVBQUU7UUFDN0MsNkJBQTZCO1FBQzdCLE1BQU0sRUFDSixVQUFVLEVBQ1YsR0FBRyxFQUNILE1BQU0sRUFDTixJQUFJLEVBQ0osVUFBVSxFQUNWLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFDZixPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFDdEIsTUFBTSxHQUNQLEdBQUcsT0FBTyxDQUFDO1FBRVosT0FBTztRQUNQLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRXpCLFlBQVk7UUFDWixJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDaEMsT0FBTztRQUNULENBQUM7UUFFRCxXQUFXO1FBQ1gsTUFBTSxJQUFJLEdBQUcsTUFBTSxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUU7WUFDbkQsSUFBSSxFQUFFLFVBQVU7WUFDaEIsU0FBUyxFQUFFLElBQUk7U0FDaEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsT0FBTztRQUNULENBQUM7UUFFRCxhQUFhO1FBQ2IsTUFBTSxNQUFNLEdBQUcsTUFBTSxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQzlELElBQUksRUFBRSxRQUFRO1lBQ2QsU0FBUyxFQUFFLElBQUk7U0FDaEIsQ0FBQyxDQUFDO1FBRUgsT0FBTztRQUNQLElBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDakUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMzRCxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQ2xCLE9BQU8sRUFBRSxxQkFBcUI7Z0JBQzlCLElBQUksRUFBRSxNQUFNO2dCQUNaLElBQUksRUFBRSxTQUFTO2FBQ2hCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNYLENBQUM7UUFFRCxjQUFjO1FBQ2QsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWxDLHdCQUF3QjtRQUN4QixNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhO1FBRWpELG9DQUFvQztRQUNwQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDVCxLQUFLLENBQUMsbUNBQW1DLFVBQVUsU0FBUyxDQUFDLENBQUM7WUFDOUQsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELHVCQUF1QjtRQUN2QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsb0RBQW9ELENBQUMsQ0FBQztRQUNoRixNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQUMsMERBQTBELFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDekYsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQzlDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxVQUFVLE9BQU8sQ0FBQyxDQUFDO1lBQzFDLFlBQVksQ0FBQyxPQUFPLENBQUMscUVBQXFFLENBQUMsQ0FBQztRQUM5RixDQUFDO2FBQU0sQ0FBQztZQUNOLFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLFVBQVUseUJBQXlCLENBQUMsQ0FBQztZQUN6RSxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsbUJBQW1CO1FBQ25CLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLFVBQVUsV0FBVyxDQUFDLENBQUM7UUFDOUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBRWpELHdCQUF3QjtRQUN4QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsdUJBQXVCLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FDZCxNQUFNLFVBQVUsMEJBQTBCLElBQUksZUFBZSxNQUFNLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUNyRyxDQUFDO1FBQ0YsYUFBYSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFMUUsV0FBVztRQUNYLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FDZCxNQUFNLFVBQVUsd0VBQXdFLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUMxRyxDQUFDO1FBQ0YsY0FBYyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRTFDLHNDQUFzQztRQUN0QyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDVCxPQUFPLENBQ0wsYUFBYSxJQUFJLCtCQUErQixJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sTUFBTSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FDL0csQ0FBQztRQUVGLFlBQVk7UUFDWixPQUFPLFdBQVcsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQyxDQUFBO0NBQ0YsQ0FBQztBQUVGLGtCQUFlLFVBQVUsQ0FBQyJ9