@gunshi/plugin-renderer 0.29.3 → 0.29.4
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/lib/index.js +14 -37
- package/package.json +8 -8
package/lib/index.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ANONYMOUS_COMMAND_NAME, plugin } from "@gunshi/plugin";
|
|
2
|
-
|
|
3
2
|
//#region ../../node_modules/.pnpm/args-tokens@0.24.3/node_modules/args-tokens/lib/utils.js
|
|
4
3
|
/**
|
|
5
4
|
* Entry point of utils.
|
|
@@ -21,7 +20,6 @@ import { ANONYMOUS_COMMAND_NAME, plugin } from "@gunshi/plugin";
|
|
|
21
20
|
function kebabnize(str) {
|
|
22
21
|
return str.replace(/[A-Z]/g, (match, offset) => (offset > 0 ? "-" : "") + match.toLowerCase());
|
|
23
22
|
}
|
|
24
|
-
|
|
25
23
|
//#endregion
|
|
26
24
|
//#region ../gunshi/src/utils.ts
|
|
27
25
|
/**
|
|
@@ -100,20 +98,8 @@ function deepFreeze(obj, ignores = []) {
|
|
|
100
98
|
}
|
|
101
99
|
return Object.freeze(obj);
|
|
102
100
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
//#region ../shared/src/constants.ts
|
|
106
|
-
/**
|
|
107
|
-
* @author kazuya kawaguchi (a.k.a. kazupon)
|
|
108
|
-
* @license MIT
|
|
109
|
-
*/
|
|
110
|
-
const BUILT_IN_PREFIX = "_";
|
|
111
|
-
const PLUGIN_PREFIX = "g";
|
|
112
|
-
const ARG_PREFIX = "arg";
|
|
113
|
-
const BUILT_IN_KEY_SEPARATOR = ":";
|
|
114
|
-
const BUILD_IN_PREFIX_AND_KEY_SEPARATOR = `${BUILT_IN_PREFIX}${BUILT_IN_KEY_SEPARATOR}`;
|
|
115
|
-
const ARG_PREFIX_AND_KEY_SEPARATOR = `${ARG_PREFIX}${BUILT_IN_KEY_SEPARATOR}`;
|
|
116
|
-
const ARG_NEGATABLE_PREFIX = "no-";
|
|
101
|
+
const BUILD_IN_PREFIX_AND_KEY_SEPARATOR = `_:`;
|
|
102
|
+
const ARG_PREFIX_AND_KEY_SEPARATOR = `arg:`;
|
|
117
103
|
const COMMON_ARGS = {
|
|
118
104
|
help: {
|
|
119
105
|
type: "boolean",
|
|
@@ -126,7 +112,6 @@ const COMMON_ARGS = {
|
|
|
126
112
|
description: "Display this version"
|
|
127
113
|
}
|
|
128
114
|
};
|
|
129
|
-
|
|
130
115
|
//#endregion
|
|
131
116
|
//#region ../resources/locales/en-US.json
|
|
132
117
|
var NEGATABLE = "Negatable of";
|
|
@@ -145,7 +130,6 @@ var en_US_default = {
|
|
|
145
130
|
help: "Display this help message",
|
|
146
131
|
version: "Display this version"
|
|
147
132
|
};
|
|
148
|
-
|
|
149
133
|
//#endregion
|
|
150
134
|
//#region ../shared/src/utils.ts
|
|
151
135
|
/**
|
|
@@ -163,7 +147,7 @@ var en_US_default = {
|
|
|
163
147
|
* @returns Prefixed built-in key.
|
|
164
148
|
*/
|
|
165
149
|
function resolveBuiltInKey(key) {
|
|
166
|
-
return
|
|
150
|
+
return `_:${key}`;
|
|
167
151
|
}
|
|
168
152
|
/**
|
|
169
153
|
* Resolve a namespaced key for argument resources.
|
|
@@ -178,7 +162,7 @@ function resolveBuiltInKey(key) {
|
|
|
178
162
|
* @returns Prefixed argument key.
|
|
179
163
|
*/
|
|
180
164
|
function resolveArgKey(key, name) {
|
|
181
|
-
return `${name ? `${name}
|
|
165
|
+
return `${name ? `${name}:` : ""}arg:${key}`;
|
|
182
166
|
}
|
|
183
167
|
/**
|
|
184
168
|
* Resolve a namespaced key for non-built-in resources.
|
|
@@ -192,7 +176,7 @@ function resolveArgKey(key, name) {
|
|
|
192
176
|
* @returns Prefixed non-built-in key.
|
|
193
177
|
*/
|
|
194
178
|
function resolveKey(key, name) {
|
|
195
|
-
return `${name ? `${name}
|
|
179
|
+
return `${name ? `${name}:` : ""}${key}`;
|
|
196
180
|
}
|
|
197
181
|
/**
|
|
198
182
|
* Resolve command examples.
|
|
@@ -215,7 +199,7 @@ async function resolveExamples$1(ctx, examples) {
|
|
|
215
199
|
* @returns A namespaced key for the plugin.
|
|
216
200
|
*/
|
|
217
201
|
function namespacedId(id) {
|
|
218
|
-
return
|
|
202
|
+
return `g:${id}`;
|
|
219
203
|
}
|
|
220
204
|
/**
|
|
221
205
|
* Generate a short and long option pair for command arguments.
|
|
@@ -230,7 +214,6 @@ function makeShortLongOptionPair(schema, name, toKebab) {
|
|
|
230
214
|
if (schema.short) key = `-${schema.short}, ${key}`;
|
|
231
215
|
return key;
|
|
232
216
|
}
|
|
233
|
-
|
|
234
217
|
//#endregion
|
|
235
218
|
//#region ../shared/src/localization.ts
|
|
236
219
|
/**
|
|
@@ -259,8 +242,8 @@ function localizable(ctx, cmd, translate) {
|
|
|
259
242
|
if (key.startsWith(namaspacedArgKey)) {
|
|
260
243
|
let argKey = key.slice(namaspacedArgKey.length);
|
|
261
244
|
let negatable = false;
|
|
262
|
-
if (argKey.startsWith(
|
|
263
|
-
argKey = argKey.slice(
|
|
245
|
+
if (argKey.startsWith("no-")) {
|
|
246
|
+
argKey = argKey.slice(3);
|
|
264
247
|
negatable = true;
|
|
265
248
|
}
|
|
266
249
|
const schema = ctx.args[argKey];
|
|
@@ -273,7 +256,6 @@ function localizable(ctx, cmd, translate) {
|
|
|
273
256
|
}
|
|
274
257
|
return localize;
|
|
275
258
|
}
|
|
276
|
-
|
|
277
259
|
//#endregion
|
|
278
260
|
//#region src/header.ts
|
|
279
261
|
/**
|
|
@@ -286,7 +268,6 @@ function renderHeader(ctx) {
|
|
|
286
268
|
const title = ctx.env.description || ctx.env.name || "";
|
|
287
269
|
return Promise.resolve(title ? `${title} (${ctx.env.name || ""}${ctx.env.version ? ` v${ctx.env.version}` : ""})` : title);
|
|
288
270
|
}
|
|
289
|
-
|
|
290
271
|
//#endregion
|
|
291
272
|
//#region src/types.ts
|
|
292
273
|
/**
|
|
@@ -297,7 +278,6 @@ function renderHeader(ctx) {
|
|
|
297
278
|
* The unique identifier for usage renderer plugin.
|
|
298
279
|
*/
|
|
299
280
|
const pluginId = namespacedId("renderer");
|
|
300
|
-
|
|
301
281
|
//#endregion
|
|
302
282
|
//#region src/usage.ts
|
|
303
283
|
/**
|
|
@@ -533,14 +513,14 @@ function getOptionalArgsPairs(ctx) {
|
|
|
533
513
|
acc[name] = key;
|
|
534
514
|
if (schema.type === "boolean" && schema.negatable && !COMMON_ARGS_KEYS.includes(name)) {
|
|
535
515
|
const displayName = ctx.toKebab || schema.toKebab ? kebabnize(name) : name;
|
|
536
|
-
acc[
|
|
516
|
+
acc[`no-${name}`] = `--no-${displayName}`;
|
|
537
517
|
}
|
|
538
518
|
return acc;
|
|
539
519
|
}, Object.create(null));
|
|
540
520
|
}
|
|
541
|
-
const resolveNegatableKey = (key) => key.split(
|
|
521
|
+
const resolveNegatableKey = (key) => key.split("no-")[1];
|
|
542
522
|
function resolveNegatableType(key, ctx) {
|
|
543
|
-
return ctx.args[key.startsWith(
|
|
523
|
+
return ctx.args[key.startsWith("no-") ? resolveNegatableKey(key) : key].type;
|
|
544
524
|
}
|
|
545
525
|
async function generateDefaultDisplayValue(ctx, schema) {
|
|
546
526
|
return `${await ctx.extensions[pluginId].text(resolveBuiltInKey("DEFAULT"))}: ${schema.default}`;
|
|
@@ -568,14 +548,14 @@ async function generateOptionalArgsUsage(ctx, optionsPairs) {
|
|
|
568
548
|
const optionSchemaMaxLength = ctx.env.usageOptionType ? Math.max(...Object.entries(optionsPairs).map(([key]) => resolveNegatableType(key, ctx).length)) : 0;
|
|
569
549
|
return (await Promise.all(Object.entries(optionsPairs).map(async ([key, value]) => {
|
|
570
550
|
let rawDesc = await ctx.extensions[pluginId].text(resolveArgKey(key, ctx.name));
|
|
571
|
-
if (!rawDesc && key.startsWith(
|
|
551
|
+
if (!rawDesc && key.startsWith("no-")) {
|
|
572
552
|
const name = resolveNegatableKey(key);
|
|
573
553
|
const schema = ctx.args[name];
|
|
574
554
|
const optionKey = makeShortLongOptionPair(schema, name, ctx.toKebab);
|
|
575
555
|
rawDesc = `${await ctx.extensions[pluginId].text(resolveBuiltInKey("NEGATABLE"))} ${optionKey}`;
|
|
576
556
|
}
|
|
577
557
|
const optionsSchema = ctx.env.usageOptionType ? `[${resolveNegatableType(key, ctx)}] ` : "";
|
|
578
|
-
const valueDesc = key.startsWith(
|
|
558
|
+
const valueDesc = key.startsWith("no-") ? "" : await resolveDisplayValue(ctx, key);
|
|
579
559
|
const desc = `${optionsSchema ? optionsSchema.padEnd(optionSchemaMaxLength + 3) : ""}${rawDesc}`;
|
|
580
560
|
const descLength = desc.length + valueDesc.length;
|
|
581
561
|
const option = `${value.padEnd((descLength > 0 ? optionsMaxLength : 0) + ctx.env.middleMargin)}${desc}${valueDesc ? ` ${valueDesc}` : ""}`;
|
|
@@ -602,7 +582,6 @@ function generatePositionalSymbols(args) {
|
|
|
602
582
|
return elements.join(" ");
|
|
603
583
|
}).join(" ") : "";
|
|
604
584
|
}
|
|
605
|
-
|
|
606
585
|
//#endregion
|
|
607
586
|
//#region src/validation.ts
|
|
608
587
|
/**
|
|
@@ -617,7 +596,6 @@ function renderValidationErrors(_ctx, error) {
|
|
|
617
596
|
for (const err of error.errors) messages.push(err.message);
|
|
618
597
|
return Promise.resolve(messages.join("\n"));
|
|
619
598
|
}
|
|
620
|
-
|
|
621
599
|
//#endregion
|
|
622
600
|
//#region src/index.ts
|
|
623
601
|
/**
|
|
@@ -693,6 +671,5 @@ function renderer() {
|
|
|
693
671
|
}
|
|
694
672
|
});
|
|
695
673
|
}
|
|
696
|
-
|
|
697
674
|
//#endregion
|
|
698
|
-
export { renderer as default, pluginId, renderHeader, renderUsage, renderValidationErrors };
|
|
675
|
+
export { renderer as default, pluginId, renderHeader, renderUsage, renderValidationErrors };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gunshi/plugin-renderer",
|
|
3
3
|
"description": "usage renderer plugin for gunshi",
|
|
4
|
-
"version": "0.29.
|
|
4
|
+
"version": "0.29.4",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "kazuya kawaguchi",
|
|
7
7
|
"email": "kawakazu80@gmail.com"
|
|
@@ -53,20 +53,20 @@
|
|
|
53
53
|
}
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
56
|
-
"@gunshi/plugin": "0.29.
|
|
56
|
+
"@gunshi/plugin": "0.29.4"
|
|
57
57
|
},
|
|
58
58
|
"peerDependencies": {
|
|
59
|
-
"@gunshi/plugin-i18n": "0.29.
|
|
59
|
+
"@gunshi/plugin-i18n": "0.29.4"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
|
-
"deno": "^2.7.
|
|
63
|
-
"jsr": "^0.
|
|
62
|
+
"deno": "^2.7.11",
|
|
63
|
+
"jsr": "^0.14.3",
|
|
64
64
|
"jsr-exports-lint": "^0.4.2",
|
|
65
65
|
"publint": "^0.3.18",
|
|
66
66
|
"tsdown": "0.15.12",
|
|
67
|
-
"typedoc": "^0.28.
|
|
68
|
-
"typedoc-plugin-markdown": "^4.
|
|
69
|
-
"@gunshi/shared": "0.29.
|
|
67
|
+
"typedoc": "^0.28.18",
|
|
68
|
+
"typedoc-plugin-markdown": "^4.11.0",
|
|
69
|
+
"@gunshi/shared": "0.29.4"
|
|
70
70
|
},
|
|
71
71
|
"scripts": {
|
|
72
72
|
"build": "tsdown",
|