graviton-plugin-sdk
Version:
Gravtion plugin Dev Kit
88 lines (81 loc) • 3.74 kB
JavaScript
const inquirer = require('inquirer');
const chalk = require('chalk');
const clear = require('clear');
const figlet = require('figlet');
const fs = require('fs');
const cwd = process.cwd();
const git = require('simple-git/promise')(cwd).outputHandler((command, stdout, stderr) => {
stdout.pipe(process.stdout);
stderr.pipe(process.stderr);
});
var appRoot = require('app-root-path');
const cli = require(__dirname +'/../src/cli');
let folderName = cwd.split("\\").slice(-1)
folderName = folderName[0];
var args = process.argv;
clear();
console.log(
chalk.yellow(
figlet.textSync('GP-SDK', { horizontalLayout: 'full' })
)
);
cli(args, function(res, val) {
if (res) {
switch (val) {
// Initialize plugin
case "init":
inquirer
.prompt([
{type:"input", name:"name", default:folderName, message:"Plugin name:"},
{type:"input", name:"version", default:"1.0.0", message:"Version:"},
{type:"list", name:"type", message:"Package type:", choices:["custom-theme","theme","plugin"]},
{type:"input", name:"description", message:"Description:"},
{type:"input", name:"run", default:"index.js", message:"Main script:"},
{type:"input", name:"test", default:"preview", message:"Preview command:"},
{type:"list", name:"engine", message:"Select the preview engine to test your plugin:",choices:["portable","graviton"]},
{type:"confirm", name:"download", message:"To preview plugins on protable we must download the repo, ok?:", when: (answers) => {return answers.engine === 'portable'}},
{type:"input", name:"repository", message:"Repository:"},
{type:"input", name:"keywords", message:"Keywords:"},
{type:"input", name:"author", message:"Author:"},
{type:"confirm", name:"validate", message:"\n\nAbout to write "+chalk.blue(cwd+"\\package.json" )+" Looks fine?"}
])
.then(answers => {
if (answers.validate == true) {
if (answers.download == true) {
fs.mkdirSync(cwd+"\\preview", (err) => {if (err) console.log(err)})
git.clone("https://github.com/Graviton-Code-Editor/Graviton-App",cwd+"\\preview")
.then(() => console.log('Preview engine downloaded!'))
.catch((err) => console.error('failed: ', err));;
}
var path = cwd+"\\package.json";
answers.keywords = answers.keywords.split(" ");
answers.scripts = {preview: answers.test+" "+ answers.run}
delete answers.validate;
delete answers.download
delete answers.run;
delete answers.test;
fs.mkdirSync(cwd+"\\builds", (err) => {if (err) console.log(err)})
fs.writeFile(path, JSON.stringify(answers,null,2), (err) => {if (err) console.log(err)});
console.log(chalk.green("Done!")+"\n\n" + JSON.stringify(answers,null,2));
}else {
console.log(chalk.red("Incomplete operation."));
setTimeout(function() {
clear();
},1000)
}
});
break;
case "exist":
console.log("Sorry but seems like a project already exists. Type update if you wat to save new data.");
break
default:
console.log("Sorry but it seems like it's not a command. Type --help for to know what to do.");
}
}else {
console.log("Sorry but it seems like it's not a command. Type --help for to know what to do.");
}
})
function progress({loaded, total}) {
console.log(Math.round(loaded/total*100)+'%');
}