skyrocket-cli
Version:
Command line interface for rapid Skyrocket projects development.
102 lines (93 loc) • 2.58 kB
JavaScript
#! /usr/bin/env node
const program = require("commander");
const ora = require("ora");
const inquirer = require("inquirer");
const download = require("download-git-repo");
// const Handlebars = require('handlebars')
const questions = require("../lib/workflow");
const utils = require("../lib/utils");
const generate = require("../lib/generate");
program
.option("-d, --default", "use defult answer for all questions")
.parse(process.argv);
inquirer
.prompt([
{
type: "confirm",
name: "isCurFolder",
message: "Generate project in current directory?"
}
])
.then(answer => {
if (!answer.isCurFolder) {
utils.warning(
"Please go to the correct directory and make sure it's empty."
);
process.exit();
} else {
inqueryTemplate();
}
});
/**
* ask user to get template.
*/
function inqueryTemplate() {
inquirer
.prompt([
{
type: "list",
name: "backend",
message: "Backend Engine: ",
choices: [
{ name: "Craft CMS 2 (PHP)", value: "craft2" },
{ name: "Craft CMS 3 (PHP)", value: "craft3" },
{ name: "Firebase (Node.js)", value: "firebase" },
{ name: "Laravel (PHP)", value: "laravel" }
],
default: "craft3"
},
{
type: "list",
name: "frontent",
message: "Frontend Template: ",
choices: [
{ name: "Craft Twig", value: "twig" },
{ name: "React.js", value: "react" },
{ name: "Vue.js", value: "vue" }
],
default: "twig"
}
])
.then(answer => {
if (!["craft2", "craft3"].includes(answer.backend)) {
utils.warning(answer.backend + " template will be available soon.");
process.exit();
} else if (answer.frontent !== "twig") {
utils.warning(
`${answer.backend} + ${answer.frontent} will be available soon.`
);
process.exit();
} else {
const template = answer.backend + "-" + answer.frontent;
downloadAndGenerate(template);
}
});
}
/**
* Download & generate from a template repo.
*
* @param {String} template e.g. craft+twig
*/
function downloadAndGenerate(template) {
const spinner = ora("downloading template");
spinner.start();
const craftTwig = "gitlab:Skyrkt/Code-System/template-" + template;
download(craftTwig, ".", err => {
if (err) {
utils.warning(err);
} else {
spinner.succeed("Template downloaded.");
generate(questions.init_flow, process.cwd());
}
});
}