@expressots/cli 1.9.0 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/cli.js +10 -10
- package/bin/commands/project.commands.d.ts +4 -5
- package/bin/commands/project.commands.js +36 -21
- package/bin/generate/cli.js +1 -1
- package/bin/help/cli.js +1 -1
- package/bin/help/form.js +1 -1
- package/bin/info/cli.js +1 -1
- package/bin/new/cli.js +1 -1
- package/bin/new/form.js +2 -9
- package/bin/providers/add/cli.d.ts +4 -0
- package/bin/providers/add/cli.js +28 -0
- package/bin/providers/add/form.d.ts +1 -0
- package/bin/providers/add/form.js +68 -0
- package/bin/providers/create/cli.d.ts +4 -0
- package/bin/providers/create/cli.js +21 -0
- package/bin/providers/create/form.d.ts +1 -0
- package/bin/providers/{external/external.provider.js → create/form.js} +23 -14
- package/bin/providers/index.d.ts +2 -1
- package/bin/providers/index.js +2 -1
- package/bin/utils/change-package-info.d.ts +4 -0
- package/bin/utils/change-package-info.js +17 -0
- package/bin/utils/cli-ui.d.ts +1 -0
- package/bin/utils/cli-ui.js +5 -1
- package/package.json +2 -2
- package/bin/providers/cli.d.ts +0 -4
- package/bin/providers/cli.js +0 -43
- package/bin/providers/external/external.provider.d.ts +0 -2
package/bin/cli.js
CHANGED
|
@@ -11,24 +11,24 @@ const generate_1 = require("./generate");
|
|
|
11
11
|
const cli_1 = require("./help/cli");
|
|
12
12
|
const info_1 = require("./info");
|
|
13
13
|
const new_1 = require("./new");
|
|
14
|
+
const cli_2 = require("./providers/create/cli");
|
|
14
15
|
const providers_1 = require("./providers");
|
|
15
|
-
|
|
16
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
17
|
+
const process_1 = require("process");
|
|
18
|
+
process_1.stdout.write(`\n${[chalk_1.default.bold.green("🐎 Expressots")]}\n\n`);
|
|
16
19
|
(0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
|
|
17
20
|
.scriptName("expressots")
|
|
18
|
-
.command(project_commands_1.runCommandModule)
|
|
19
21
|
.command((0, new_1.createProject)())
|
|
20
|
-
.command(
|
|
22
|
+
.command(project_commands_1.devCommand)
|
|
23
|
+
.command(project_commands_1.buildCommand)
|
|
24
|
+
.command(project_commands_1.prodCommand)
|
|
25
|
+
.command((0, cli_2.createExternalProviderCMD)())
|
|
26
|
+
.command((0, providers_1.addProviderCMD)())
|
|
21
27
|
.command((0, generate_1.generateProject)())
|
|
22
28
|
.command((0, info_1.infoProject)())
|
|
23
29
|
.command((0, cli_1.helpCommand)())
|
|
24
|
-
.example("$0 new expressots-demo", "Create interactively")
|
|
25
|
-
.example("$0 new expressots-demo -d ./", "Create interactively with path")
|
|
26
|
-
.example("$0 new expressots-demo -p yarn -t opinionated", "Create silently")
|
|
27
|
-
.example("$0 new expressots-demo -p yarn -t opinionated -d ./", "Create silently with path")
|
|
28
|
-
.example("$0 generate service user-create", "Scaffold a service")
|
|
29
|
-
.example("$0 info", "Show CLI details")
|
|
30
30
|
.demandCommand(1, "You need at least one command before moving on")
|
|
31
|
-
.epilog("For more information: \n
|
|
31
|
+
.epilog(`${chalk_1.default.bold.green("For more information:")} \n\n` +
|
|
32
32
|
"🌐 visit:\t https://expresso-ts.com\n" +
|
|
33
33
|
"💖 Sponsor:\t https://github.com/sponsors/expressots")
|
|
34
34
|
.help("help", "Show command help")
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { CommandModule } from "yargs";
|
|
2
|
-
export declare const
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
declare const runCommand: ({ command }: {
|
|
2
|
+
export declare const devCommand: CommandModule<object, object>;
|
|
3
|
+
export declare const buildCommand: CommandModule<object, object>;
|
|
4
|
+
export declare const prodCommand: CommandModule<object, object>;
|
|
5
|
+
export declare const runCommand: ({ command, }: {
|
|
6
6
|
command: string;
|
|
7
7
|
}) => Promise<void>;
|
|
8
|
-
export { runCommand };
|
|
@@ -3,11 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.runCommand = exports.
|
|
6
|
+
exports.runCommand = exports.prodCommand = exports.buildCommand = exports.devCommand = void 0;
|
|
7
7
|
const child_process_1 = require("child_process");
|
|
8
8
|
const fs_1 = require("fs");
|
|
9
9
|
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const cli_ui_1 = require("../utils/cli-ui");
|
|
10
11
|
const compiler_1 = __importDefault(require("../utils/compiler"));
|
|
12
|
+
const os_1 = __importDefault(require("os"));
|
|
11
13
|
/**
|
|
12
14
|
* Load the configuration from the compiler
|
|
13
15
|
* @param compiler The compiler to load the configuration from
|
|
@@ -15,6 +17,7 @@ const compiler_1 = __importDefault(require("../utils/compiler"));
|
|
|
15
17
|
*/
|
|
16
18
|
const opinionatedConfig = [
|
|
17
19
|
"--transpile-only",
|
|
20
|
+
"--clear",
|
|
18
21
|
"-r",
|
|
19
22
|
"dotenv/config",
|
|
20
23
|
"-r",
|
|
@@ -23,6 +26,7 @@ const opinionatedConfig = [
|
|
|
23
26
|
];
|
|
24
27
|
const nonOpinionatedConfig = [
|
|
25
28
|
"--transpile-only",
|
|
29
|
+
"--clear",
|
|
26
30
|
"-r",
|
|
27
31
|
"dotenv/config",
|
|
28
32
|
"./src/main.ts",
|
|
@@ -54,10 +58,12 @@ function execCmd(command, args, cwd = process.cwd()) {
|
|
|
54
58
|
// Helper to delete the dist directory
|
|
55
59
|
const cleanDist = async () => {
|
|
56
60
|
await fs_1.promises.rm("./dist", { recursive: true, force: true });
|
|
61
|
+
(0, cli_ui_1.printSuccess)("Deleted dist directory", "clean-dist");
|
|
57
62
|
};
|
|
58
63
|
// Helper to compile TypeScript
|
|
59
64
|
const compileTypescript = async () => {
|
|
60
65
|
await execCmd("npx", ["tsc", "-p", "tsconfig.build.json"]);
|
|
66
|
+
(0, cli_ui_1.printSuccess)("Built successfully", "compile-typescript");
|
|
61
67
|
};
|
|
62
68
|
// Helper to copy files
|
|
63
69
|
const copyFiles = async () => {
|
|
@@ -77,30 +83,38 @@ const copyFiles = async () => {
|
|
|
77
83
|
fs_1.promises.copyFile(file, path_1.default.join("./dist", path_1.default.basename(file)));
|
|
78
84
|
});
|
|
79
85
|
};
|
|
80
|
-
//
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
86
|
+
// Helper clear screen
|
|
87
|
+
const clearScreen = () => {
|
|
88
|
+
const platform = os_1.default.platform();
|
|
89
|
+
const command = platform === "win32" ? "cls" : "clear";
|
|
90
|
+
(0, child_process_1.spawn)(command, { stdio: "inherit", shell: true });
|
|
91
|
+
};
|
|
92
|
+
exports.devCommand = {
|
|
93
|
+
command: "dev",
|
|
94
|
+
describe: "Start development server.",
|
|
95
|
+
handler: async () => {
|
|
96
|
+
await (0, exports.runCommand)({ command: "dev" });
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
exports.buildCommand = {
|
|
100
|
+
command: "build",
|
|
101
|
+
describe: "Build the project.",
|
|
102
|
+
handler: async () => {
|
|
103
|
+
await (0, exports.runCommand)({ command: "build" });
|
|
90
104
|
},
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
105
|
+
};
|
|
106
|
+
exports.prodCommand = {
|
|
107
|
+
command: "prod",
|
|
108
|
+
describe: "Run in production mode.",
|
|
109
|
+
handler: async () => {
|
|
110
|
+
await (0, exports.runCommand)({ command: "prod" });
|
|
96
111
|
},
|
|
97
112
|
};
|
|
98
|
-
const runCommand = async ({ command }) => {
|
|
113
|
+
const runCommand = async ({ command, }) => {
|
|
99
114
|
const { opinionated } = await compiler_1.default.loadConfig();
|
|
100
115
|
try {
|
|
101
116
|
switch (command) {
|
|
102
117
|
case "dev":
|
|
103
|
-
// Use execSync or spawn to run ts-node-dev programmatically
|
|
104
118
|
execCmd("tsnd", opinionated ? opinionatedConfig : nonOpinionatedConfig);
|
|
105
119
|
break;
|
|
106
120
|
case "build":
|
|
@@ -122,16 +136,17 @@ const runCommand = async ({ command }) => {
|
|
|
122
136
|
else {
|
|
123
137
|
config = ["-r", "dotenv/config", "./dist/main.js"];
|
|
124
138
|
}
|
|
125
|
-
|
|
139
|
+
clearScreen();
|
|
126
140
|
execCmd("node", config);
|
|
127
141
|
break;
|
|
128
142
|
}
|
|
129
143
|
default:
|
|
130
|
-
|
|
144
|
+
(0, cli_ui_1.printError)(`Unknown command: `, command);
|
|
145
|
+
break;
|
|
131
146
|
}
|
|
132
147
|
}
|
|
133
148
|
catch (error) {
|
|
134
|
-
|
|
149
|
+
(0, cli_ui_1.printError)("Error executing command:", error.message);
|
|
135
150
|
}
|
|
136
151
|
};
|
|
137
152
|
exports.runCommand = runCommand;
|
package/bin/generate/cli.js
CHANGED
|
@@ -27,7 +27,7 @@ const coerceSchematicAliases = (arg) => {
|
|
|
27
27
|
const generateProject = () => {
|
|
28
28
|
return {
|
|
29
29
|
command: "generate [schematic] [path] [method]",
|
|
30
|
-
describe: "
|
|
30
|
+
describe: "Generate ExpressoTS resource.",
|
|
31
31
|
aliases: ["g"],
|
|
32
32
|
builder: (yargs) => {
|
|
33
33
|
yargs.positional("schematic", {
|
package/bin/help/cli.js
CHANGED
package/bin/help/form.js
CHANGED
|
@@ -19,7 +19,7 @@ const helpForm = async () => {
|
|
|
19
19
|
"service",
|
|
20
20
|
"g s",
|
|
21
21
|
"Generate a service [controller, usecase, dto, module]",
|
|
22
|
-
], ["controller", "g c", "Generate a controller"], ["usecase", "g u", "Generate a usecase"], ["dto", "g d", "Generate a dto"], ["entity", "g e", "Generate an entity"], ["provider", "
|
|
22
|
+
], ["controller", "g c", "Generate a controller"], ["usecase", "g u", "Generate a usecase"], ["dto", "g d", "Generate a dto"], ["entity", "g e", "Generate an entity"], ["provider", "add", "Add provider to the project"], ["provider", "create", "Create a provider"], ["module", "g mo", "Generate a module"], ["middleware", "g mi", "Generate a middleware"]);
|
|
23
23
|
console.log(chalk_1.default.bold.white("ExpressoTS:", `${chalk_1.default.green("Resources List")}`));
|
|
24
24
|
console.log(chalk_1.default.whiteBright(table.toString()));
|
|
25
25
|
console.log(chalk_1.default.bold.white(`📝 More info: ${chalk_1.default.green("https://doc.expresso-ts.com/docs/category/cli")}`));
|
package/bin/info/cli.js
CHANGED
package/bin/new/cli.js
CHANGED
|
@@ -52,7 +52,7 @@ const checkNodeVersion = () => {
|
|
|
52
52
|
const createProject = () => {
|
|
53
53
|
return {
|
|
54
54
|
command: "new <project-name> [package-manager] [template] [directory]",
|
|
55
|
-
describe: "Create
|
|
55
|
+
describe: "Create ExpressoTS application.",
|
|
56
56
|
builder: commandOptions,
|
|
57
57
|
handler: async ({ projectName, packageManager, template, directory, }) => {
|
|
58
58
|
checkNodeVersion();
|
package/bin/new/form.js
CHANGED
|
@@ -13,6 +13,7 @@ const node_fs_1 = __importDefault(require("node:fs"));
|
|
|
13
13
|
const node_path_1 = __importDefault(require("node:path"));
|
|
14
14
|
const center_text_1 = require("../utils/center-text");
|
|
15
15
|
const cli_ui_1 = require("../utils/cli-ui");
|
|
16
|
+
const change_package_info_1 = require("../utils/change-package-info");
|
|
16
17
|
async function packageManagerInstall({ packageManager, directory, progressBar, }) {
|
|
17
18
|
return new Promise((resolve, reject) => {
|
|
18
19
|
const isWindows = process.platform === "win32";
|
|
@@ -67,14 +68,6 @@ async function checkIfPackageManagerExists(packageManager) {
|
|
|
67
68
|
process.exit(1);
|
|
68
69
|
}
|
|
69
70
|
}
|
|
70
|
-
function changePackageName({ directory, name, }) {
|
|
71
|
-
const absDirPath = node_path_1.default.resolve(directory);
|
|
72
|
-
const packageJsonPath = node_path_1.default.join(absDirPath, "package.json");
|
|
73
|
-
const fileContents = node_fs_1.default.readFileSync(packageJsonPath, "utf-8");
|
|
74
|
-
const packageJson = JSON.parse(fileContents);
|
|
75
|
-
packageJson.name = name;
|
|
76
|
-
node_fs_1.default.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));
|
|
77
|
-
}
|
|
78
71
|
function renameEnvFile(directory) {
|
|
79
72
|
try {
|
|
80
73
|
const envExamplePath = node_path_1.default.join(directory, ".env.example");
|
|
@@ -189,7 +182,7 @@ const projectForm = async (projectName, args) => {
|
|
|
189
182
|
progressBar,
|
|
190
183
|
});
|
|
191
184
|
progressBar.update(90);
|
|
192
|
-
changePackageName({
|
|
185
|
+
(0, change_package_info_1.changePackageName)({
|
|
193
186
|
directory: answer.name,
|
|
194
187
|
name: projectName,
|
|
195
188
|
});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addProviderCMD = void 0;
|
|
4
|
+
const form_1 = require("./form");
|
|
5
|
+
const addProviderCMD = () => {
|
|
6
|
+
return {
|
|
7
|
+
command: "add <provider> [version]",
|
|
8
|
+
describe: "Add provider to the project.",
|
|
9
|
+
builder: (yargs) => {
|
|
10
|
+
yargs
|
|
11
|
+
.positional("provider", {
|
|
12
|
+
describe: "The provider to be added to the project",
|
|
13
|
+
type: "string",
|
|
14
|
+
})
|
|
15
|
+
.option("version", {
|
|
16
|
+
describe: "The provider version to be installed",
|
|
17
|
+
type: "string",
|
|
18
|
+
default: "latest",
|
|
19
|
+
alias: "v",
|
|
20
|
+
});
|
|
21
|
+
return yargs;
|
|
22
|
+
},
|
|
23
|
+
handler: async ({ provider, version }) => {
|
|
24
|
+
await (0, form_1.addExternalProvider)(provider, version);
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
exports.addProviderCMD = addProviderCMD;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const addExternalProvider: (provider: string, version: string) => Promise<void>;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.addExternalProvider = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const node_child_process_1 = require("node:child_process");
|
|
9
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
10
|
+
const node_process_1 = require("node:process");
|
|
11
|
+
const cli_ui_1 = require("../../utils/cli-ui");
|
|
12
|
+
const addExternalProvider = async (provider, version) => {
|
|
13
|
+
await installProvider(provider, version);
|
|
14
|
+
};
|
|
15
|
+
exports.addExternalProvider = addExternalProvider;
|
|
16
|
+
async function installProvider(provider, version) {
|
|
17
|
+
const packageManager = node_fs_1.default.existsSync("package-lock.json" || "yarn.lock" || "pnpm-lock.yaml")
|
|
18
|
+
? "npm"
|
|
19
|
+
: node_fs_1.default.existsSync("yarn.lock")
|
|
20
|
+
? "yarn"
|
|
21
|
+
: node_fs_1.default.existsSync("pnpm-lock.yaml")
|
|
22
|
+
? "pnpm"
|
|
23
|
+
: null;
|
|
24
|
+
if (packageManager) {
|
|
25
|
+
console.log(`Installing ${provider} provider ...`);
|
|
26
|
+
const currentVersion = version === "latest" ? "" : `@${version}`;
|
|
27
|
+
await execProcess({
|
|
28
|
+
commandArg: packageManager,
|
|
29
|
+
args: ["add", `${provider}${currentVersion}`, "--prefer-offline"],
|
|
30
|
+
directory: process.cwd(),
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
(0, cli_ui_1.printError)("No package manager found in the project", "install-provider");
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
async function execProcess({ commandArg, args, directory, }) {
|
|
39
|
+
return new Promise((resolve, reject) => {
|
|
40
|
+
const isWindows = process.platform === "win32";
|
|
41
|
+
const command = isWindows ? `${commandArg}.cmd` : commandArg;
|
|
42
|
+
const installProcess = (0, node_child_process_1.spawn)(command, args, {
|
|
43
|
+
cwd: directory,
|
|
44
|
+
shell: true,
|
|
45
|
+
});
|
|
46
|
+
console.log(chalk_1.default.bold.blue(`Executing: ${commandArg} ${args.join(" ")}`));
|
|
47
|
+
console.log(chalk_1.default.yellow("-------------------------------------------------"));
|
|
48
|
+
installProcess.stdout.on("data", (data) => {
|
|
49
|
+
console.log(chalk_1.default.green(data.toString().trim())); // Display regular messages in green
|
|
50
|
+
});
|
|
51
|
+
installProcess.stderr.on("data", (data) => {
|
|
52
|
+
console.error(chalk_1.default.red(data.toString().trim())); // Display error messages in red
|
|
53
|
+
});
|
|
54
|
+
installProcess.on("close", (code) => {
|
|
55
|
+
if (code === 0) {
|
|
56
|
+
console.log(chalk_1.default.bold.green("-------------------------------------------------"));
|
|
57
|
+
console.log(chalk_1.default.bold.green("Installation Done!\n"));
|
|
58
|
+
resolve("Installation Done!");
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
console.error(chalk_1.default.bold.red("---------------------------------------"));
|
|
62
|
+
console.error(chalk_1.default.bold.red(`Command ${command} ${args.join(" ")} exited with code ${code}`));
|
|
63
|
+
reject(new Error(`Command ${command} ${args.join(" ")} exited with code ${code}`));
|
|
64
|
+
(0, node_process_1.exit)(1);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createExternalProviderCMD = void 0;
|
|
4
|
+
const form_1 = require("./form");
|
|
5
|
+
const createExternalProviderCMD = () => {
|
|
6
|
+
return {
|
|
7
|
+
command: "create [provider]",
|
|
8
|
+
describe: "Create a provider.",
|
|
9
|
+
builder: (yargs) => {
|
|
10
|
+
yargs.option("provider", {
|
|
11
|
+
describe: "Provider name",
|
|
12
|
+
type: "string",
|
|
13
|
+
});
|
|
14
|
+
return yargs;
|
|
15
|
+
},
|
|
16
|
+
handler: async ({ provider }) => {
|
|
17
|
+
await (0, form_1.createExternalProvider)(provider);
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
exports.createExternalProviderCMD = createExternalProviderCMD;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const createExternalProvider: (provider: string) => Promise<void>;
|
|
@@ -3,11 +3,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.createExternalProvider = void 0;
|
|
7
7
|
const chalk_1 = __importDefault(require("chalk"));
|
|
8
8
|
const degit_1 = __importDefault(require("degit"));
|
|
9
9
|
const inquirer_1 = __importDefault(require("inquirer"));
|
|
10
10
|
const center_text_1 = require("../../utils/center-text");
|
|
11
|
+
const change_package_info_1 = require("../../utils/change-package-info");
|
|
11
12
|
const cli_ui_1 = require("../../utils/cli-ui");
|
|
12
13
|
async function printInfo(providerName) {
|
|
13
14
|
console.log("\n");
|
|
@@ -20,30 +21,38 @@ async function printInfo(providerName) {
|
|
|
20
21
|
console.log(chalk_1.default.bold.white((0, center_text_1.centerText)("💖 Sponsor: https://github.com/sponsors/expressots")));
|
|
21
22
|
console.log("\n");
|
|
22
23
|
}
|
|
23
|
-
const
|
|
24
|
+
const createExternalProvider = async (provider) => {
|
|
24
25
|
return new Promise(async (resolve, reject) => {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
26
|
+
let providerInfo = {};
|
|
27
|
+
providerInfo.providerName = provider;
|
|
28
|
+
if (!provider) {
|
|
29
|
+
providerInfo = await inquirer_1.default.prompt([
|
|
30
|
+
{
|
|
31
|
+
type: "input",
|
|
32
|
+
name: "providerName",
|
|
33
|
+
message: "Provider name",
|
|
34
|
+
default: "expressots-provider",
|
|
35
|
+
transformer: (input) => {
|
|
36
|
+
return chalk_1.default.yellow(chalk_1.default.bold(input));
|
|
37
|
+
},
|
|
33
38
|
},
|
|
34
|
-
|
|
35
|
-
|
|
39
|
+
]);
|
|
40
|
+
}
|
|
36
41
|
try {
|
|
37
42
|
const emitter = (0, degit_1.default)(`expressots/expressots-provider-template`);
|
|
38
43
|
await emitter.clone(providerInfo.providerName);
|
|
44
|
+
(0, change_package_info_1.changePackageName)({
|
|
45
|
+
directory: providerInfo.providerName,
|
|
46
|
+
name: providerInfo.providerName,
|
|
47
|
+
});
|
|
39
48
|
await printInfo(providerInfo.providerName);
|
|
40
49
|
resolve();
|
|
41
50
|
}
|
|
42
51
|
catch (err) {
|
|
43
52
|
console.log("\n");
|
|
44
|
-
(0, cli_ui_1.printError)("Project already exists or Folder is not empty", "
|
|
53
|
+
(0, cli_ui_1.printError)("Project already exists or Folder is not empty", "");
|
|
45
54
|
reject(err);
|
|
46
55
|
}
|
|
47
56
|
});
|
|
48
57
|
};
|
|
49
|
-
exports.
|
|
58
|
+
exports.createExternalProvider = createExternalProvider;
|
package/bin/providers/index.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export * from "./cli";
|
|
1
|
+
export * from "./add/cli";
|
|
2
|
+
export * from "./create/cli";
|
package/bin/providers/index.js
CHANGED
|
@@ -14,4 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./cli"), exports);
|
|
17
|
+
__exportStar(require("./add/cli"), exports);
|
|
18
|
+
__exportStar(require("./create/cli"), exports);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.changePackageName = void 0;
|
|
7
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
function changePackageName({ directory, name, }) {
|
|
10
|
+
const absDirPath = node_path_1.default.resolve(directory);
|
|
11
|
+
const packageJsonPath = node_path_1.default.join(absDirPath, "package.json");
|
|
12
|
+
const fileContents = node_fs_1.default.readFileSync(packageJsonPath, "utf-8");
|
|
13
|
+
const packageJson = JSON.parse(fileContents);
|
|
14
|
+
packageJson.name = name;
|
|
15
|
+
node_fs_1.default.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));
|
|
16
|
+
}
|
|
17
|
+
exports.changePackageName = changePackageName;
|
package/bin/utils/cli-ui.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export declare function printError(message: string, component: string): void;
|
|
2
|
+
export declare function printSuccess(message: string, component: string): void;
|
|
2
3
|
export declare function printWarning(message: string, component?: string): void;
|
|
3
4
|
export declare function printGenerateError(schematic: string, file: string): Promise<void>;
|
|
4
5
|
export declare function printGenerateSuccess(schematic: string, file: string): Promise<void>;
|
package/bin/utils/cli-ui.js
CHANGED
|
@@ -3,13 +3,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.printGenerateSuccess = exports.printGenerateError = exports.printWarning = exports.printError = void 0;
|
|
6
|
+
exports.printGenerateSuccess = exports.printGenerateError = exports.printWarning = exports.printSuccess = exports.printError = void 0;
|
|
7
7
|
const chalk_1 = __importDefault(require("chalk"));
|
|
8
8
|
const process_1 = require("process");
|
|
9
9
|
function printError(message, component) {
|
|
10
10
|
console.error(chalk_1.default.red(`${message}:`, chalk_1.default.bold(chalk_1.default.white(`[${component}] ❌`))));
|
|
11
11
|
}
|
|
12
12
|
exports.printError = printError;
|
|
13
|
+
function printSuccess(message, component) {
|
|
14
|
+
process_1.stdout.write(chalk_1.default.green(`${message}:`, chalk_1.default.bold(chalk_1.default.white(`[${component}] ✔️\n`))));
|
|
15
|
+
}
|
|
16
|
+
exports.printSuccess = printSuccess;
|
|
13
17
|
function printWarning(message, component) {
|
|
14
18
|
if (component === undefined) {
|
|
15
19
|
process_1.stdout.write(chalk_1.default.yellow(`${message} ⚠️\n`));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expressots/cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.10.0",
|
|
4
4
|
"description": "Expressots CLI - modern, fast, lightweight nodejs web framework (@cli)",
|
|
5
5
|
"author": "Richard Zampieri",
|
|
6
6
|
"license": "MIT",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"cli-progress": "3.12.0",
|
|
55
55
|
"cli-table3": "0.6.5",
|
|
56
56
|
"degit": "2.8.4",
|
|
57
|
-
"glob": "10.4.
|
|
57
|
+
"glob": "10.4.5",
|
|
58
58
|
"inquirer": "8.2.6",
|
|
59
59
|
"mustache": "4.2.0",
|
|
60
60
|
"semver": "7.6.2",
|
package/bin/providers/cli.d.ts
DELETED
package/bin/providers/cli.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generateProviders = void 0;
|
|
4
|
-
const external_provider_1 = require("./external/external.provider");
|
|
5
|
-
const prisma_provider_1 = require("./prisma/prisma.provider");
|
|
6
|
-
const generateProviders = () => {
|
|
7
|
-
return {
|
|
8
|
-
command: "add <provider> [library-version] [provider-version]",
|
|
9
|
-
describe: "Scaffold a new provider",
|
|
10
|
-
aliases: ["a"],
|
|
11
|
-
builder: (yargs) => {
|
|
12
|
-
yargs
|
|
13
|
-
.positional("provider", {
|
|
14
|
-
choices: ["prisma", "provider"],
|
|
15
|
-
describe: "The provider to add to the project",
|
|
16
|
-
type: "string",
|
|
17
|
-
alias: "p",
|
|
18
|
-
})
|
|
19
|
-
.option("library-version", {
|
|
20
|
-
describe: "The library version to install",
|
|
21
|
-
type: "string",
|
|
22
|
-
default: "latest",
|
|
23
|
-
alias: "v",
|
|
24
|
-
})
|
|
25
|
-
.option("provider-version", {
|
|
26
|
-
describe: "The version of the provider to install",
|
|
27
|
-
type: "string",
|
|
28
|
-
default: "latest",
|
|
29
|
-
alias: "vp",
|
|
30
|
-
});
|
|
31
|
-
return yargs;
|
|
32
|
-
},
|
|
33
|
-
handler: async ({ provider, libraryVersion, providerVersion }) => {
|
|
34
|
-
if (provider === "prisma") {
|
|
35
|
-
await (0, prisma_provider_1.prismaProvider)(libraryVersion, providerVersion);
|
|
36
|
-
}
|
|
37
|
-
else if (provider === "provider") {
|
|
38
|
-
await (0, external_provider_1.externalProvider)();
|
|
39
|
-
}
|
|
40
|
-
},
|
|
41
|
-
};
|
|
42
|
-
};
|
|
43
|
-
exports.generateProviders = generateProviders;
|