@botpress/cli 0.0.9 → 0.0.11
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/dist/api-client.js +107 -0
- package/dist/app/api-utils.js +9 -3
- package/dist/app/base.js +1 -3
- package/dist/app/errors.js +8 -0
- package/dist/app/file-paths.js +4 -2
- package/dist/app/index.js +17 -12
- package/dist/app/user.js +73 -23
- package/dist/code-generation/action.js +70 -0
- package/dist/code-generation/channel.js +51 -0
- package/dist/code-generation/configuration.js +40 -0
- package/dist/code-generation/const.js +31 -0
- package/dist/code-generation/event.js +41 -0
- package/dist/code-generation/index.js +80 -0
- package/dist/code-generation/integration-impl.js +147 -0
- package/dist/code-generation/integration-instance.js +79 -0
- package/dist/code-generation/message.js +41 -0
- package/dist/code-generation/module.js +115 -0
- package/dist/code-generation/typings.js +16 -0
- package/dist/command-definitions.js +61 -0
- package/dist/command-implementations/add-command.js +124 -0
- package/dist/command-implementations/base-command.js +53 -0
- package/dist/command-implementations/bot-commands.js +89 -0
- package/dist/command-implementations/build-command.js +48 -0
- package/dist/command-implementations/bundle-command.js +58 -0
- package/dist/command-implementations/deploy-command.js +162 -0
- package/dist/command-implementations/dev-command.js +168 -0
- package/dist/command-implementations/gen-command.js +58 -0
- package/dist/command-implementations/global-command.js +111 -0
- package/dist/command-implementations/index.js +78 -0
- package/dist/command-implementations/init-command.js +85 -0
- package/dist/command-implementations/integration-commands.js +107 -0
- package/dist/command-implementations/login-command.js +75 -0
- package/dist/command-implementations/logout-command.js +34 -0
- package/dist/command-implementations/project-command.js +115 -0
- package/dist/command-implementations/serve-command.js +53 -0
- package/dist/command-tree.js +59 -0
- package/dist/config.js +85 -112
- package/dist/consts.js +14 -1
- package/dist/errors.js +156 -0
- package/dist/index.js +13 -243
- package/dist/integration-ref.js +61 -0
- package/dist/logger/base-logger.js +5 -20
- package/dist/logger/index.js +3 -2
- package/dist/path-utils.js +6 -0
- package/dist/register-yargs.js +85 -0
- package/dist/typings.js +16 -0
- package/dist/utils/cache-utils.js +99 -0
- package/dist/utils/esbuild-utils.js +89 -0
- package/dist/utils/event-emitter.js +62 -0
- package/dist/utils/file-watcher.js +68 -0
- package/dist/utils/index.js +55 -0
- package/dist/utils/path-utils.js +83 -0
- package/dist/utils/prompt-utils.js +75 -0
- package/dist/utils/require-utils.js +49 -0
- package/dist/utils/string-utils.js +38 -0
- package/dist/worker/child-entrypoint.js +3 -3
- package/package.json +7 -5
- package/templates/echo-bot/.botpress/project.cache.json +1 -0
- package/templates/echo-bot/package.json +22 -0
- package/templates/echo-bot/readme.md +5 -0
- package/templates/echo-bot/src/index.ts +44 -0
- package/templates/echo-bot/tsconfig.json +15 -0
- package/templates/empty-integration/.botpress/implementation/actions/index.ts +7 -0
- package/templates/empty-integration/.botpress/implementation/channels/channel/audio.ts +10 -0
- package/templates/empty-integration/.botpress/implementation/channels/channel/card.ts +17 -0
- package/templates/empty-integration/.botpress/implementation/channels/channel/carousel.ts +19 -0
- package/templates/empty-integration/.botpress/implementation/channels/channel/choice.ts +14 -0
- package/templates/empty-integration/.botpress/implementation/channels/channel/dropdown.ts +14 -0
- package/templates/empty-integration/.botpress/implementation/channels/channel/file.ts +11 -0
- package/templates/empty-integration/.botpress/implementation/channels/channel/image.ts +10 -0
- package/templates/empty-integration/.botpress/implementation/channels/channel/index.ts +40 -0
- package/templates/empty-integration/.botpress/implementation/channels/channel/location.ts +11 -0
- package/templates/empty-integration/.botpress/implementation/channels/channel/markdown.ts +10 -0
- package/templates/empty-integration/.botpress/implementation/channels/channel/text.ts +10 -0
- package/templates/empty-integration/.botpress/implementation/channels/channel/video.ts +10 -0
- package/templates/empty-integration/.botpress/implementation/channels/index.ts +10 -0
- package/templates/empty-integration/.botpress/implementation/configuration.ts +10 -0
- package/templates/empty-integration/.botpress/implementation/events/index.ts +7 -0
- package/templates/empty-integration/.botpress/implementation/index.ts +17 -0
- package/templates/empty-integration/.botpress/index.ts +1 -0
- package/templates/empty-integration/.botpress/project.cache.json +1 -0
- package/templates/empty-integration/integration.definition.ts +13 -0
- package/templates/empty-integration/package.json +22 -0
- package/templates/empty-integration/readme.md +5 -0
- package/templates/empty-integration/src/index.ts +58 -0
- package/templates/empty-integration/tsconfig.json +15 -0
- package/.ignore.me.github/index.ts +0 -38
- package/dist/github-download.js +0 -159
- package/dist/github-fetch.js +0 -173
package/dist/index.js
CHANGED
|
@@ -18,260 +18,30 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
18
18
|
mod
|
|
19
19
|
));
|
|
20
20
|
var import_yargs_extra = __toESM(require("@bpinternal/yargs-extra"));
|
|
21
|
-
var
|
|
22
|
-
var
|
|
23
|
-
var
|
|
21
|
+
var import_command_definitions = __toESM(require("./command-definitions"));
|
|
22
|
+
var import_command_implementations = __toESM(require("./command-implementations"));
|
|
23
|
+
var tree = __toESM(require("./command-tree"));
|
|
24
|
+
var errors = __toESM(require("./errors"));
|
|
24
25
|
var import_logger = require("./logger");
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
const
|
|
26
|
+
var import_register_yargs = require("./register-yargs");
|
|
27
|
+
var utils = __toESM(require("./utils"));
|
|
28
|
+
const CLI_ROOT_DIR = utils.path.join(__dirname, "..");
|
|
28
29
|
const logError = (thrown) => {
|
|
29
|
-
const error =
|
|
30
|
-
|
|
30
|
+
const error = errors.BotpressCLIError.map(thrown);
|
|
31
|
+
new import_logger.Logger().error(error.message);
|
|
31
32
|
};
|
|
32
33
|
const onError = (thrown) => {
|
|
33
34
|
logError(thrown);
|
|
34
|
-
|
|
35
|
+
process.exit(1);
|
|
35
36
|
};
|
|
36
37
|
const yargsFail = (msg) => {
|
|
37
38
|
logError(`${msg}
|
|
38
39
|
`);
|
|
39
40
|
import_yargs_extra.default.showHelp();
|
|
40
|
-
|
|
41
|
+
process.exit(1);
|
|
41
42
|
};
|
|
42
43
|
process.on("uncaughtException", (thrown) => onError(thrown));
|
|
43
44
|
process.on("unhandledRejection", (thrown) => onError(thrown));
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
return (0, import_yargs_extra.cleanupConfig)(schema, { ...argv, ...yargsEnv });
|
|
47
|
-
};
|
|
48
|
-
import_yargs_extra.default.command(
|
|
49
|
-
"login",
|
|
50
|
-
"Login to Botpress Cloud",
|
|
51
|
-
() => import_yargs_extra.default.options(config.loginSchema),
|
|
52
|
-
async (argv) => {
|
|
53
|
-
try {
|
|
54
|
-
const parsed = parseArguments(config.loginSchema, argv);
|
|
55
|
-
const commands = await app.forUser({ ...parsed, ...pkg });
|
|
56
|
-
await commands.login(parsed);
|
|
57
|
-
commands.teardown();
|
|
58
|
-
} catch (e) {
|
|
59
|
-
onError(e);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
).command(
|
|
63
|
-
"logout",
|
|
64
|
-
"Logout of Botpress Cloud",
|
|
65
|
-
() => import_yargs_extra.default.options(config.logoutSchema),
|
|
66
|
-
async (argv) => {
|
|
67
|
-
try {
|
|
68
|
-
const parsed = parseArguments(config.logoutSchema, argv);
|
|
69
|
-
const commands = await app.forUser({ ...parsed, ...pkg });
|
|
70
|
-
await commands.logout();
|
|
71
|
-
commands.teardown();
|
|
72
|
-
} catch (e) {
|
|
73
|
-
onError(e);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
).command("bots", "bots related commands", (yargz) => {
|
|
77
|
-
yargz.command(
|
|
78
|
-
["create", "new"],
|
|
79
|
-
"Create new bot",
|
|
80
|
-
() => yargz.options({ ...config.createBotSchema }),
|
|
81
|
-
async (argv) => {
|
|
82
|
-
try {
|
|
83
|
-
const parsed = parseArguments(config.createBotSchema, argv);
|
|
84
|
-
const commands = await app.forUser({ ...parsed, ...pkg });
|
|
85
|
-
await commands.createBot(parsed);
|
|
86
|
-
commands.teardown();
|
|
87
|
-
} catch (e) {
|
|
88
|
-
onError(e);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
).command(
|
|
92
|
-
["list", "ls"],
|
|
93
|
-
"List bots",
|
|
94
|
-
() => yargz.options({ ...config.listBotsSchema }),
|
|
95
|
-
async (argv) => {
|
|
96
|
-
try {
|
|
97
|
-
const parsed = parseArguments(config.listBotsSchema, argv);
|
|
98
|
-
const commands = await app.forUser({ ...parsed, ...pkg });
|
|
99
|
-
await commands.listBots(parsed);
|
|
100
|
-
commands.teardown();
|
|
101
|
-
} catch (e) {
|
|
102
|
-
onError(e);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
).command(
|
|
106
|
-
"get <botRef>",
|
|
107
|
-
"Get bot",
|
|
108
|
-
() => yargz.positional("botRef", config.botRef).options({ ...config.readBotSchema }),
|
|
109
|
-
async (argv) => {
|
|
110
|
-
try {
|
|
111
|
-
const parsed = parseArguments(config.readBotSchema, argv);
|
|
112
|
-
const commands = await app.forUser({ ...parsed, ...pkg });
|
|
113
|
-
await commands.getBot(argv.botRef, parsed);
|
|
114
|
-
commands.teardown();
|
|
115
|
-
} catch (e) {
|
|
116
|
-
onError(e);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
).command(
|
|
120
|
-
["delete <botRef>", "rm <botRef>"],
|
|
121
|
-
"Delete bot",
|
|
122
|
-
() => yargz.positional("botRef", config.botRef).options({ ...config.deleteBotSchema }),
|
|
123
|
-
async (argv) => {
|
|
124
|
-
try {
|
|
125
|
-
const parsed = parseArguments(config.deleteBotSchema, argv);
|
|
126
|
-
const commands = await app.forUser({ ...parsed, ...pkg });
|
|
127
|
-
await commands.deleteBot(argv.botRef, parsed);
|
|
128
|
-
commands.teardown();
|
|
129
|
-
} catch (e) {
|
|
130
|
-
onError(e);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
);
|
|
134
|
-
}).command("integrations", "integrations related commands", (yargz) => {
|
|
135
|
-
yargz.command(
|
|
136
|
-
["list", "ls"],
|
|
137
|
-
"List integrations",
|
|
138
|
-
() => yargz.options({ ...config.listIntegrationsSchema }),
|
|
139
|
-
async (argv) => {
|
|
140
|
-
try {
|
|
141
|
-
const parsed = parseArguments(config.listIntegrationsSchema, argv);
|
|
142
|
-
const commands = await app.forUser({ ...parsed, ...pkg });
|
|
143
|
-
await commands.listIntegrations(parsed);
|
|
144
|
-
commands.teardown();
|
|
145
|
-
} catch (e) {
|
|
146
|
-
onError(e);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
).command(
|
|
150
|
-
"get <integrationRef>",
|
|
151
|
-
"Get integration",
|
|
152
|
-
() => yargz.positional("integrationRef", config.integrationRef).options({ ...config.readIntegrationSchema }),
|
|
153
|
-
async (argv) => {
|
|
154
|
-
try {
|
|
155
|
-
const parsed = parseArguments(config.readIntegrationSchema, argv);
|
|
156
|
-
const commands = await app.forUser({ ...parsed, ...pkg });
|
|
157
|
-
await commands.getIntegration(argv.integrationRef, parsed);
|
|
158
|
-
commands.teardown();
|
|
159
|
-
} catch (e) {
|
|
160
|
-
onError(e);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
).command(
|
|
164
|
-
["delete <integrationRef>", "rm <integrationRef>"],
|
|
165
|
-
"Delete integration",
|
|
166
|
-
() => yargz.positional("integrationRef", config.integrationRef).options({ ...config.deleteIntegrationSchema }),
|
|
167
|
-
async (argv) => {
|
|
168
|
-
try {
|
|
169
|
-
const parsed = parseArguments(config.readIntegrationSchema, argv);
|
|
170
|
-
const commands = await app.forUser({ ...parsed, ...pkg });
|
|
171
|
-
await commands.deleteIntegration(argv.integrationRef, parsed);
|
|
172
|
-
commands.teardown();
|
|
173
|
-
} catch (e) {
|
|
174
|
-
onError(e);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
);
|
|
178
|
-
}).command(
|
|
179
|
-
"bundle",
|
|
180
|
-
"Bundle a botpress project",
|
|
181
|
-
() => import_yargs_extra.default.options(config.bundleSchema),
|
|
182
|
-
async (argv) => {
|
|
183
|
-
try {
|
|
184
|
-
const parsed = parseArguments(config.bundleSchema, argv);
|
|
185
|
-
const commands = await app.forProject({ ...parsed, ...pkg });
|
|
186
|
-
await commands.bundleProject(parsed);
|
|
187
|
-
commands.teardown();
|
|
188
|
-
} catch (e) {
|
|
189
|
-
onError(e);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
).command(
|
|
193
|
-
"gen",
|
|
194
|
-
"Generate typings for intellisense during development",
|
|
195
|
-
() => import_yargs_extra.default.options(config.generateSchema),
|
|
196
|
-
async (argv) => {
|
|
197
|
-
try {
|
|
198
|
-
const parsed = parseArguments(config.generateSchema, argv);
|
|
199
|
-
const commands = await app.forProject({ ...parsed, ...pkg });
|
|
200
|
-
await commands.generateTypings(parsed);
|
|
201
|
-
commands.teardown();
|
|
202
|
-
} catch (e) {
|
|
203
|
-
onError(e);
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
).command(
|
|
207
|
-
"build",
|
|
208
|
-
"Generate typings and bundle a botpress project",
|
|
209
|
-
() => import_yargs_extra.default.options(config.buildSchema),
|
|
210
|
-
async (argv) => {
|
|
211
|
-
try {
|
|
212
|
-
const parsed = parseArguments(config.buildSchema, argv);
|
|
213
|
-
const commands = await app.forProject({ ...parsed, ...pkg });
|
|
214
|
-
await commands.buildProject(parsed);
|
|
215
|
-
commands.teardown();
|
|
216
|
-
} catch (e) {
|
|
217
|
-
onError(e);
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
).command(
|
|
221
|
-
"serve",
|
|
222
|
-
"Serve your project locally",
|
|
223
|
-
() => import_yargs_extra.default.options(config.serveSchema),
|
|
224
|
-
async (argv) => {
|
|
225
|
-
try {
|
|
226
|
-
const parsed = parseArguments(config.serveSchema, argv);
|
|
227
|
-
const commands = await app.forProject({ ...parsed, ...pkg });
|
|
228
|
-
await commands.serveProject(parsed);
|
|
229
|
-
commands.teardown();
|
|
230
|
-
} catch (e) {
|
|
231
|
-
onError(e);
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
).command(
|
|
235
|
-
"deploy",
|
|
236
|
-
"Deploy your project",
|
|
237
|
-
() => import_yargs_extra.default.options(config.deploySchema),
|
|
238
|
-
async (argv) => {
|
|
239
|
-
try {
|
|
240
|
-
const parsed = parseArguments(config.deploySchema, argv);
|
|
241
|
-
const commands = await app.forProject({ ...parsed, ...pkg });
|
|
242
|
-
await commands.deployProject(parsed);
|
|
243
|
-
commands.teardown();
|
|
244
|
-
} catch (e) {
|
|
245
|
-
onError(e);
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
).command(
|
|
249
|
-
"dev",
|
|
250
|
-
"Run your project in dev mode",
|
|
251
|
-
() => import_yargs_extra.default.options(config.devSchema),
|
|
252
|
-
async (argv) => {
|
|
253
|
-
try {
|
|
254
|
-
const parsed = parseArguments(config.devSchema, argv);
|
|
255
|
-
const commands = await app.forProject({ ...parsed, ...pkg });
|
|
256
|
-
await commands.devProject(parsed);
|
|
257
|
-
commands.teardown();
|
|
258
|
-
} catch (e) {
|
|
259
|
-
onError(e);
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
).command(
|
|
263
|
-
"add <integrationRef>",
|
|
264
|
-
"Install an integration in your bot",
|
|
265
|
-
(yargz) => yargz.positional("integrationRef", config.integrationRef).options(config.addSchema),
|
|
266
|
-
async (argv) => {
|
|
267
|
-
try {
|
|
268
|
-
const parsed = parseArguments(config.addSchema, argv);
|
|
269
|
-
const commands = await app.forProject({ ...parsed, ...pkg });
|
|
270
|
-
await commands.installIntegration(argv.integrationRef, parsed);
|
|
271
|
-
commands.teardown();
|
|
272
|
-
} catch (e) {
|
|
273
|
-
onError(e);
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
);
|
|
45
|
+
const commands = tree.zipTree(import_command_definitions.default, import_command_implementations.default);
|
|
46
|
+
(0, import_register_yargs.registerYargs)(import_yargs_extra.default, commands, { cliRootDir: CLI_ROOT_DIR });
|
|
277
47
|
void import_yargs_extra.default.version(false).scriptName("bp").demandCommand(1, "You didn't provide any command. Use the --help flag to see the list of available commands.").recommendCommands().strict().help().fail(yargsFail).parse();
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
+
mod
|
|
23
|
+
));
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var integration_ref_exports = {};
|
|
26
|
+
__export(integration_ref_exports, {
|
|
27
|
+
formatIntegrationRef: () => formatIntegrationRef,
|
|
28
|
+
parseIntegrationRef: () => parseIntegrationRef
|
|
29
|
+
});
|
|
30
|
+
module.exports = __toCommonJS(integration_ref_exports);
|
|
31
|
+
var import_semver = __toESM(require("semver"));
|
|
32
|
+
var uuid = __toESM(require("uuid"));
|
|
33
|
+
const LATEST_TAG = "latest";
|
|
34
|
+
const formatIntegrationRef = (ref) => {
|
|
35
|
+
if (ref.type === "id") {
|
|
36
|
+
return ref.id;
|
|
37
|
+
}
|
|
38
|
+
return `${ref.name}@${ref.version}`;
|
|
39
|
+
};
|
|
40
|
+
const parseIntegrationRef = (ref) => {
|
|
41
|
+
if (uuid.validate(ref)) {
|
|
42
|
+
return { type: "id", id: ref };
|
|
43
|
+
}
|
|
44
|
+
if (!ref.includes("@")) {
|
|
45
|
+
return { type: "name", name: ref, version: LATEST_TAG };
|
|
46
|
+
}
|
|
47
|
+
const [name, version] = ref.split("@");
|
|
48
|
+
if (!name || !version) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const cleanedVersion = version === LATEST_TAG ? version : import_semver.default.clean(version);
|
|
52
|
+
if (!cleanedVersion) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
return { type: "name", name, version: cleanedVersion };
|
|
56
|
+
};
|
|
57
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
58
|
+
0 && (module.exports = {
|
|
59
|
+
formatIntegrationRef,
|
|
60
|
+
parseIntegrationRef
|
|
61
|
+
});
|
|
@@ -89,7 +89,7 @@ class BaseLogger {
|
|
|
89
89
|
this.opts = { ...DEFAULT_OPTIONS, ...opts };
|
|
90
90
|
}
|
|
91
91
|
log(message, props = {}) {
|
|
92
|
-
if (this.opts.json) {
|
|
92
|
+
if (this.opts.json && !props.stderr) {
|
|
93
93
|
return;
|
|
94
94
|
}
|
|
95
95
|
const prefix = this._resolvePrefix(props.prefix);
|
|
@@ -102,44 +102,29 @@ class BaseLogger {
|
|
|
102
102
|
}
|
|
103
103
|
const { depth } = opts;
|
|
104
104
|
const msg = import_util.default.inspect(data, { colors: true, depth });
|
|
105
|
-
this.
|
|
105
|
+
this.log(msg);
|
|
106
106
|
}
|
|
107
107
|
debug(message, metadata) {
|
|
108
|
-
if (!this.opts.verbose
|
|
108
|
+
if (!this.opts.verbose) {
|
|
109
109
|
return;
|
|
110
110
|
}
|
|
111
111
|
this.log(import_chalk.default.grey(message), { metadata, prefix: { symbol: "\u25CF", fg: "blue" } });
|
|
112
112
|
}
|
|
113
113
|
started(message, metadata) {
|
|
114
|
-
if (this.opts.json) {
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
114
|
this.log(message, { metadata, prefix: { symbol: "\u25CB", fg: "purple" } });
|
|
118
115
|
}
|
|
119
116
|
success(message, metadata) {
|
|
120
|
-
if (this.opts.json) {
|
|
121
|
-
return;
|
|
122
|
-
}
|
|
123
117
|
this.log(message, { metadata, prefix: { symbol: "\u2713", fg: "green" } });
|
|
124
118
|
}
|
|
125
119
|
warn(message, metadata) {
|
|
126
|
-
if (this.opts.json) {
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
120
|
this.log(message, { metadata, prefix: { symbol: "\u26A0", fg: "yellow" } });
|
|
130
121
|
}
|
|
131
122
|
error(message, metadata) {
|
|
132
|
-
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
this.log(message, { metadata, prefix: { symbol: "\xD7", fg: "red" } });
|
|
123
|
+
this.log(message, { metadata, prefix: { symbol: "\xD7", fg: "red" }, stderr: true });
|
|
136
124
|
}
|
|
137
125
|
box(message) {
|
|
138
|
-
if (this.opts.json) {
|
|
139
|
-
return;
|
|
140
|
-
}
|
|
141
126
|
const box = (0, import_boxen.default)(message, BOX_OPTIONS);
|
|
142
|
-
this.
|
|
127
|
+
this.log(box);
|
|
143
128
|
}
|
|
144
129
|
_resolvePrefix(prefix) {
|
|
145
130
|
if (!prefix) {
|
package/dist/logger/index.js
CHANGED
|
@@ -27,12 +27,13 @@ class Logger extends import_base_logger.BaseLogger {
|
|
|
27
27
|
static _previousLine;
|
|
28
28
|
print(message, props = {}) {
|
|
29
29
|
this.cleanup();
|
|
30
|
+
const log = props.stderr ? console.error : console.info;
|
|
30
31
|
const { metadata, prefix } = props;
|
|
31
32
|
if (prefix) {
|
|
32
|
-
|
|
33
|
+
log(prefix, message, metadata ?? "");
|
|
33
34
|
return;
|
|
34
35
|
}
|
|
35
|
-
|
|
36
|
+
log(message, metadata ?? "");
|
|
36
37
|
}
|
|
37
38
|
line() {
|
|
38
39
|
this.cleanup();
|
package/dist/path-utils.js
CHANGED
|
@@ -28,6 +28,7 @@ __export(path_utils_exports, {
|
|
|
28
28
|
cwd: () => cwd,
|
|
29
29
|
isAbsolute: () => isAbsolute,
|
|
30
30
|
isPath: () => isPath,
|
|
31
|
+
join: () => join,
|
|
31
32
|
relativeFrom: () => relativeFrom,
|
|
32
33
|
rmExtension: () => rmExtension,
|
|
33
34
|
toUnix: () => toUnix
|
|
@@ -37,6 +38,10 @@ var import_path = __toESM(require("path"));
|
|
|
37
38
|
const cwd = () => process.cwd();
|
|
38
39
|
const isAbsolute = (path) => import_path.default.isAbsolute(path);
|
|
39
40
|
const isPath = (path) => isAbsolute(path) || path.startsWith(".");
|
|
41
|
+
const join = (abs, ...paths) => {
|
|
42
|
+
const joined = import_path.default.join(abs, ...paths);
|
|
43
|
+
return import_path.default.normalize(joined);
|
|
44
|
+
};
|
|
40
45
|
const rmExtension = (filename) => filename.replace(/\.[^/.]+$/, "");
|
|
41
46
|
const toUnix = (path) => path.split(import_path.default.sep).join(import_path.default.posix.sep);
|
|
42
47
|
const absoluteFrom = (rootdir, target) => {
|
|
@@ -60,6 +65,7 @@ const relativeFrom = (rootdir, target) => {
|
|
|
60
65
|
cwd,
|
|
61
66
|
isAbsolute,
|
|
62
67
|
isPath,
|
|
68
|
+
join,
|
|
63
69
|
relativeFrom,
|
|
64
70
|
rmExtension,
|
|
65
71
|
toUnix
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
+
mod
|
|
23
|
+
));
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var register_yargs_exports = {};
|
|
26
|
+
__export(register_yargs_exports, {
|
|
27
|
+
registerYargs: () => registerYargs
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(register_yargs_exports);
|
|
30
|
+
var import_yargs_extra = require("@bpinternal/yargs-extra");
|
|
31
|
+
var import_lodash = __toESM(require("lodash"));
|
|
32
|
+
var tree = __toESM(require("./command-tree"));
|
|
33
|
+
const parseArguments = (schema, argv) => {
|
|
34
|
+
const yargsEnv = (0, import_yargs_extra.parseEnv)(schema, "BP");
|
|
35
|
+
return (0, import_yargs_extra.cleanupConfig)(schema, { ...argv, ...yargsEnv });
|
|
36
|
+
};
|
|
37
|
+
const registerYargs = (yargz, commands, props) => {
|
|
38
|
+
for (const cmdName in commands) {
|
|
39
|
+
const command = commands[cmdName];
|
|
40
|
+
if (tree.guards.command.isSubTree(command)) {
|
|
41
|
+
yargz.command(cmdName, command.description ?? cmdName, (y) => {
|
|
42
|
+
registerYargs(y, command.subcommands, props);
|
|
43
|
+
return y;
|
|
44
|
+
});
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
const { schema, description, alias } = command;
|
|
48
|
+
const aliases = alias ? [cmdName, alias] : [cmdName];
|
|
49
|
+
const options = Object.entries(schema);
|
|
50
|
+
let positionals = options.filter(
|
|
51
|
+
(value) => !!value[1].positional
|
|
52
|
+
);
|
|
53
|
+
let usage = aliases;
|
|
54
|
+
if (positionals.length) {
|
|
55
|
+
positionals = import_lodash.default.sortBy(positionals, ([, option]) => option.idx);
|
|
56
|
+
const positionalArgs = positionals.map(
|
|
57
|
+
([optName, option]) => option.demandOption ? `<${optName}>` : `[${optName}]`
|
|
58
|
+
);
|
|
59
|
+
const positionalStr = positionalArgs.join(" ");
|
|
60
|
+
usage = aliases.map((optAlias) => `${optAlias} ${positionalStr}`);
|
|
61
|
+
}
|
|
62
|
+
yargz.command(
|
|
63
|
+
usage,
|
|
64
|
+
description ?? cmdName,
|
|
65
|
+
(y) => {
|
|
66
|
+
for (const [key, option] of Object.entries(schema)) {
|
|
67
|
+
if (option.positional) {
|
|
68
|
+
y = y.positional(key, option);
|
|
69
|
+
} else {
|
|
70
|
+
y = y.option(key, option);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return y;
|
|
74
|
+
},
|
|
75
|
+
async (argv) => {
|
|
76
|
+
const parsed = parseArguments(schema, argv);
|
|
77
|
+
await command.handler({ ...parsed, ...props });
|
|
78
|
+
}
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
83
|
+
0 && (module.exports = {
|
|
84
|
+
registerYargs
|
|
85
|
+
});
|
package/dist/typings.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
var typings_exports = {};
|
|
16
|
+
module.exports = __toCommonJS(typings_exports);
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
+
mod
|
|
23
|
+
));
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var cache_utils_exports = {};
|
|
26
|
+
__export(cache_utils_exports, {
|
|
27
|
+
FSKeyValueCache: () => FSKeyValueCache
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(cache_utils_exports);
|
|
30
|
+
var import_fs = __toESM(require("fs"));
|
|
31
|
+
var import_path = __toESM(require("path"));
|
|
32
|
+
class FSKeyValueCache {
|
|
33
|
+
constructor(_filepath) {
|
|
34
|
+
this._filepath = _filepath;
|
|
35
|
+
}
|
|
36
|
+
_initialized = false;
|
|
37
|
+
async init() {
|
|
38
|
+
if (this._initialized) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const dirname = import_path.default.dirname(this._filepath);
|
|
42
|
+
if (!import_fs.default.existsSync(dirname)) {
|
|
43
|
+
await import_fs.default.promises.mkdir(dirname, { recursive: true });
|
|
44
|
+
}
|
|
45
|
+
if (!import_fs.default.existsSync(this._filepath)) {
|
|
46
|
+
await this._writeJSON(this._filepath, {});
|
|
47
|
+
}
|
|
48
|
+
this._initialized = true;
|
|
49
|
+
}
|
|
50
|
+
async sync(key, value, prompt) {
|
|
51
|
+
await this.init();
|
|
52
|
+
if (value) {
|
|
53
|
+
await this.set(key, value);
|
|
54
|
+
return value;
|
|
55
|
+
}
|
|
56
|
+
const data = await this.get(key);
|
|
57
|
+
const newValue = await prompt(data);
|
|
58
|
+
await this.set(key, newValue);
|
|
59
|
+
return newValue;
|
|
60
|
+
}
|
|
61
|
+
async has(key) {
|
|
62
|
+
await this.init();
|
|
63
|
+
const data = await this._readJSON(this._filepath);
|
|
64
|
+
return data[key] !== void 0;
|
|
65
|
+
}
|
|
66
|
+
async get(key) {
|
|
67
|
+
await this.init();
|
|
68
|
+
const data = await this._readJSON(this._filepath);
|
|
69
|
+
return data[key];
|
|
70
|
+
}
|
|
71
|
+
async set(key, value) {
|
|
72
|
+
await this.init();
|
|
73
|
+
const data = await this._readJSON(this._filepath);
|
|
74
|
+
data[key] = value;
|
|
75
|
+
return this._writeJSON(this._filepath, data);
|
|
76
|
+
}
|
|
77
|
+
async rm(key) {
|
|
78
|
+
await this.init();
|
|
79
|
+
const data = await this._readJSON(this._filepath);
|
|
80
|
+
delete data[key];
|
|
81
|
+
return this._writeJSON(this._filepath, data);
|
|
82
|
+
}
|
|
83
|
+
async clear() {
|
|
84
|
+
await this.init();
|
|
85
|
+
return this._writeJSON(this._filepath, {});
|
|
86
|
+
}
|
|
87
|
+
_writeJSON = (filepath, data) => {
|
|
88
|
+
const fileContent = JSON.stringify(data, null, 2);
|
|
89
|
+
return import_fs.default.promises.writeFile(filepath, fileContent);
|
|
90
|
+
};
|
|
91
|
+
_readJSON = async (filepath) => {
|
|
92
|
+
const fileContent = await import_fs.default.promises.readFile(filepath, "utf8");
|
|
93
|
+
return JSON.parse(fileContent);
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
97
|
+
0 && (module.exports = {
|
|
98
|
+
FSKeyValueCache
|
|
99
|
+
});
|