create-hyper-mendix-widget
Version:
create a hyper mendix widget
106 lines (94 loc) • 3.62 kB
JavaScript
#!/usr/bin/env node
const inquirer = require('inquirer');
const prompt = inquirer.createPromptModule();
const Spinner = require('ora');
const questions = require('./cli/questions');
const {
makeWidgetDir,
copyWidgetFiles,
initWidget,
installDependencies,
buildingInitialWidget
} = require('./cli/commands');
const {
sayHello,
dirAlreadyExisted,
afterInstallMessage
} = require('./cli/instructions');
(async () => {
sayHello();
const answers = await prompt(questions);
const cleanWidgetDirName = answers.widgetName.trim();
const makeWidgetDirSpinner = Spinner({
text: 'Creating widget directory...',
color: 'blue'
});
const copyWidgetFilesSpinner = Spinner({
text: 'Copying files to widget directory...',
color: 'blue'
});
const initWidgetSpinner = Spinner({
text: 'Initializing widget...',
color: 'blue'
});
const installDependenciesSpinner = Spinner({
text: 'Installing dependencies...',
color: 'blue'
});
const buildingInitialWidgetSpinner = Spinner({
text: 'Building initial widget...',
color: 'blue'
});
// 1. create directory for the widget
makeWidgetDirSpinner.start();
if (makeWidgetDir(cleanWidgetDirName)) {
makeWidgetDirSpinner.color = 'green';
makeWidgetDirSpinner.succeed('Successfully created widget directory!');
} else {
makeWidgetDirSpinner.color = 'red';
makeWidgetDirSpinner.fail('Oops! something went wrong while creating widget directory.');
dirAlreadyExisted(cleanWidgetDirName);
process.exit(0);
}
// 2. copy template files to widget dir
copyWidgetFilesSpinner.start();
if (copyWidgetFiles(cleanWidgetDirName, answers.template)) {
copyWidgetFilesSpinner.color = 'green';
copyWidgetFilesSpinner.succeed('Successfully copied files to widget directory!');
} else {
copyWidgetFilesSpinner.color = 'red';
copyWidgetFilesSpinner.fail('Oops! something went wrong while copying files to widget directory.');
process.exit(0);
}
// 3. Initializing widget files & replacing tokens
initWidgetSpinner.start();
if (initWidget(answers)) {
initWidgetSpinner.color = 'green';
initWidgetSpinner.succeed('Successfully initialized widget!');
} else {
initWidgetSpinner.color = 'red';
initWidgetSpinner.fail('Oops! something went wrong while initializing widget files.');
process.exit(0);
}
// 4. installing widget dependencies
installDependenciesSpinner.start();
if (installDependencies(cleanWidgetDirName)) {
installDependenciesSpinner.color = 'green';
installDependenciesSpinner.succeed('Successfully installed widget dependencies!');
} else {
installDependenciesSpinner.color = 'red';
installDependenciesSpinner.fail('Oops! something went wrong while installing widget dependencies.');
process.exit(0);
}
// 5. Building initial widget
buildingInitialWidgetSpinner.start();
if (buildingInitialWidget()) {
buildingInitialWidgetSpinner.color = 'green';
buildingInitialWidgetSpinner.succeed('Successfully built widget!');
} else {
buildingInitialWidgetSpinner.color = 'red';
buildingInitialWidgetSpinner.fail('Oops! something went wrong while building widget.');
process.exit(0);
}
afterInstallMessage(cleanWidgetDirName);
})();