mirror of
https://github.com/logos-messaging/examples.waku.org.git
synced 2026-01-04 05:43:07 +00:00
allow to select template from cli
This commit is contained in:
parent
9ab90ef7d2
commit
545bd66d37
@ -1,16 +1,18 @@
|
|||||||
const path = require("path");
|
const path = require("path");
|
||||||
const fs = require("fs-extra");
|
const fs = require("fs-extra");
|
||||||
|
const enquirer = require("enquirer");
|
||||||
const execSync = require("child_process").execSync;
|
const execSync = require("child_process").execSync;
|
||||||
|
|
||||||
const { Command } = require("commander");
|
const { Command } = require("commander");
|
||||||
const validateProjectName = require("validate-npm-package-name");
|
const validateProjectName = require("validate-npm-package-name");
|
||||||
|
|
||||||
const DEFAULT_TEMPLATE = "light-chat";
|
|
||||||
const supportedExamplesDir = path.resolve(__dirname, "./examples");
|
const supportedExamplesDir = path.resolve(__dirname, "./examples");
|
||||||
|
|
||||||
const init = (name, description, version, supportedExamples) => {
|
const init = async (name, description, version, supportedExamples) => {
|
||||||
let appName;
|
let appName;
|
||||||
const program = new Command()
|
let template;
|
||||||
|
|
||||||
|
const options = new Command()
|
||||||
.name(name)
|
.name(name)
|
||||||
.description(description)
|
.description(description)
|
||||||
.version(version, "-v, --version", "output the version number")
|
.version(version, "-v, --version", "output the version number")
|
||||||
@ -20,13 +22,28 @@ const init = (name, description, version, supportedExamples) => {
|
|||||||
})
|
})
|
||||||
.option(
|
.option(
|
||||||
"-t, --template <path-to-template>",
|
"-t, --template <path-to-template>",
|
||||||
"specify a template for the created project"
|
"specify a template for the created project or you can skip and select template manually"
|
||||||
)
|
)
|
||||||
.allowUnknownOption()
|
.allowUnknownOption()
|
||||||
.parse();
|
.parse()
|
||||||
|
.opts();
|
||||||
|
|
||||||
const options = program.opts();
|
template = options.template;
|
||||||
const template = options.template || DEFAULT_TEMPLATE;
|
|
||||||
|
if (!template) {
|
||||||
|
const templatePrompt = new enquirer.Select({
|
||||||
|
name: "template",
|
||||||
|
message: "Select template",
|
||||||
|
choices: Object.keys(supportedExamples),
|
||||||
|
});
|
||||||
|
|
||||||
|
try {
|
||||||
|
template = await templatePrompt.run();
|
||||||
|
} catch (e) {
|
||||||
|
console.error(`Failed at selecting a template: ${e.message}`);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!supportedExamples[template]) {
|
if (!supportedExamples[template]) {
|
||||||
const supportedExamplesMessage = Object.keys(supportedExamples).reduce((acc, v) => {
|
const supportedExamplesMessage = Object.keys(supportedExamples).reduce((acc, v) => {
|
||||||
|
|||||||
@ -49,6 +49,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"commander": "^9.4.1",
|
"commander": "^9.4.1",
|
||||||
|
"enquirer": "^2.3.6",
|
||||||
"fs-extra": "^11.1.0",
|
"fs-extra": "^11.1.0",
|
||||||
"semver": "^7.3.8",
|
"semver": "^7.3.8",
|
||||||
"validate-npm-package-name": "^5.0.0"
|
"validate-npm-package-name": "^5.0.0"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user