@scalebun/cli 1.7.0 → 1.8.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/lib/index.js CHANGED
@@ -14,20 +14,31 @@ const migrate_codepush_1 = require("./commands/migrate-codepush");
14
14
  const ci_init_1 = require("./commands/ci-init");
15
15
  const quickstart_1 = require("./commands/quickstart");
16
16
  const ui_1 = require("./utils/ui");
17
+ const banner_1 = require("./ui/banner");
17
18
  const program = new commander_1.Command();
18
19
  // Read the version from package.json so it can never drift from the published
19
20
  // version. The compiled entry lives at lib/index.js, so ../package.json is the
20
21
  // CLI manifest. (Hardcoding it left `scalebun --version` reporting 0.1.0 long
21
22
  // after the package had moved on.)
22
23
  const { version } = require('../package.json');
24
+ /**
25
+ * The no-arg splash: art (mark + wordmark) is gated by shouldShowArt(); the
26
+ * status line and command table are the command's actual output and always print.
27
+ */
28
+ function printSplash() {
29
+ if ((0, banner_1.shouldShowArt)())
30
+ process.stdout.write((0, banner_1.banner)({ version }));
31
+ (0, ui_1.renderStatus)();
32
+ (0, ui_1.renderCommands)();
33
+ }
23
34
  program
24
35
  .name('scalebun')
25
36
  .description('Scalebun CLI — OTA bundle publishing and management')
26
37
  .version(version)
38
+ // Registered so a strict parser doesn't reject it; shouldShowArt() reads argv.
39
+ .option('--no-banner', 'Hide the splash art (status + commands still print)')
27
40
  .action(() => {
28
- (0, ui_1.renderBanner)();
29
- (0, ui_1.renderStatus)();
30
- (0, ui_1.renderCommands)();
41
+ printSplash();
31
42
  });
32
43
  // `registerLoginCommand` was imported and never called, so `scalebun login`
33
44
  // did not exist — every other command depends on the credentials it writes,
@@ -48,9 +59,7 @@ const migrate = program.command('migrate').description('Migration utilities from
48
59
  (0, migrate_codepush_1.registerMigrateCodepushCommand)(migrate);
49
60
  (0, ci_init_1.registerCiInitCommand)(program);
50
61
  if (process.argv.length <= 2) {
51
- (0, ui_1.renderBanner)();
52
- (0, ui_1.renderStatus)();
53
- (0, ui_1.renderCommands)();
62
+ printSplash();
54
63
  }
55
64
  else {
56
65
  program.parse(process.argv);
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,yCAAoC;AACpC,4CAAwD;AACxD,8CAA0D;AAC1D,wDAAmE;AACnE,sDAAiE;AACjE,0DAAqE;AACrE,oEAA8E;AAC9E,kDAA6D;AAC7D,wDAAoE;AACpE,8CAA0D;AAC1D,kEAA6E;AAC7E,gDAA2D;AAC3D,sDAAuF;AACvF,mCAAwE;AAExE,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAC9E,mCAAmC;AACnC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAEtE,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,qDAAqD,CAAC;KAClE,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,GAAG,EAAE;IACX,IAAA,iBAAY,GAAE,CAAC;IACf,IAAA,iBAAY,GAAE,CAAC;IACf,IAAA,mBAAc,GAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEL,4EAA4E;AAC5E,4EAA4E;AAC5E,4DAA4D;AAC5D,IAAA,4BAAoB,EAAC,OAAO,CAAC,CAAC;AAC9B,IAAA,sCAAyB,EAAC,OAAO,CAAC,CAAC;AACnC,IAAA,gCAAmB,EAAC,OAAO,CAAC,CAAC;AAC7B,IAAA,8BAAqB,EAAC,OAAO,CAAC,CAAC;AAE/B,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;AACxE,IAAA,uCAAyB,EAAC,GAAG,CAAC,CAAC;AAC/B,IAAA,qCAAwB,EAAC,GAAG,CAAC,CAAC;AAC9B,IAAA,yCAA0B,EAAC,GAAG,CAAC,CAAC;AAChC,IAAA,kDAA8B,EAAC,GAAG,CAAC,CAAC;AACpC,IAAA,iCAAsB,EAAC,GAAG,CAAC,CAAC;AAC5B,IAAA,wCAA0B,EAAC,GAAG,CAAC,CAAC;AAChC,IAAA,8BAAqB,EAAC,OAAO,CAAC,CAAC;AAE/B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,0CAA0C,CAAC,CAAC;AACnG,IAAA,iDAA8B,EAAC,OAAO,CAAC,CAAC;AACxC,IAAA,+BAAqB,EAAC,OAAO,CAAC,CAAC;AAE/B,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;IAC7B,IAAA,iBAAY,GAAE,CAAC;IACf,IAAA,iBAAY,GAAE,CAAC;IACf,IAAA,mBAAc,GAAE,CAAC;AACnB,CAAC;KAAM,CAAC;IACN,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,yCAAoC;AACpC,4CAAwD;AACxD,8CAA0D;AAC1D,wDAAmE;AACnE,sDAAiE;AACjE,0DAAqE;AACrE,oEAA8E;AAC9E,kDAA6D;AAC7D,wDAAoE;AACpE,8CAA0D;AAC1D,kEAA6E;AAC7E,gDAA2D;AAC3D,sDAAuF;AACvF,mCAA0D;AAC1D,wCAAoD;AAEpD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAC9E,mCAAmC;AACnC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAEtE;;;GAGG;AACH,SAAS,WAAW;IAClB,IAAI,IAAA,sBAAa,GAAE;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAA,eAAM,EAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAC/D,IAAA,iBAAY,GAAE,CAAC;IACf,IAAA,mBAAc,GAAE,CAAC;AACnB,CAAC;AAED,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,qDAAqD,CAAC;KAClE,OAAO,CAAC,OAAO,CAAC;IACjB,+EAA+E;KAC9E,MAAM,CAAC,aAAa,EAAE,qDAAqD,CAAC;KAC5E,MAAM,CAAC,GAAG,EAAE;IACX,WAAW,EAAE,CAAC;AAChB,CAAC,CAAC,CAAC;AAEL,4EAA4E;AAC5E,4EAA4E;AAC5E,4DAA4D;AAC5D,IAAA,4BAAoB,EAAC,OAAO,CAAC,CAAC;AAC9B,IAAA,sCAAyB,EAAC,OAAO,CAAC,CAAC;AACnC,IAAA,gCAAmB,EAAC,OAAO,CAAC,CAAC;AAC7B,IAAA,8BAAqB,EAAC,OAAO,CAAC,CAAC;AAE/B,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;AACxE,IAAA,uCAAyB,EAAC,GAAG,CAAC,CAAC;AAC/B,IAAA,qCAAwB,EAAC,GAAG,CAAC,CAAC;AAC9B,IAAA,yCAA0B,EAAC,GAAG,CAAC,CAAC;AAChC,IAAA,kDAA8B,EAAC,GAAG,CAAC,CAAC;AACpC,IAAA,iCAAsB,EAAC,GAAG,CAAC,CAAC;AAC5B,IAAA,wCAA0B,EAAC,GAAG,CAAC,CAAC;AAChC,IAAA,8BAAqB,EAAC,OAAO,CAAC,CAAC;AAE/B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,0CAA0C,CAAC,CAAC;AACnG,IAAA,iDAA8B,EAAC,OAAO,CAAC,CAAC;AACxC,IAAA,+BAAqB,EAAC,OAAO,CAAC,CAAC;AAE/B,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;IAC7B,WAAW,EAAE,CAAC;AAChB,CAAC;KAAM,CAAC;IACN,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { MARK } from './mark';
2
+ export { MARK };
3
+ export declare const WORDMARK: readonly string[];
4
+ /** Real TTY width wins; COLUMNS only covers the non-TTY case (pipes, tests). */
5
+ export declare function termWidth(): number;
6
+ export interface BannerOptions {
7
+ version?: string;
8
+ tagline?: string;
9
+ /** include the rabbit (default true) */
10
+ mark?: boolean;
11
+ /** terminal width override */
12
+ width?: number;
13
+ /** colour level override (0 none · 1 basic · 2 256 · 3 truecolor) */
14
+ level?: number;
15
+ }
16
+ export declare function banner(o?: BannerOptions): string;
17
+ /**
18
+ * Gates the ART ONLY (mark + wordmark). The splash body — status line and
19
+ * command table — is the output of the no-arg command, not banner decoration,
20
+ * so it must NOT be gated by this. Keep the two concerns separate.
21
+ */
22
+ export declare function shouldShowArt(argv?: string[]): boolean;
23
+ //# sourceMappingURL=banner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../src/ui/banner.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,IAAI,EAAU,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAE,IAAI,EAAE,CAAC;AAGhB,eAAO,MAAM,QAAQ,EAAE,SAAS,MAAM,EAOrC,CAAC;AA4DF,gFAAgF;AAChF,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAID,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,MAAM,CAAC,CAAC,GAAE,aAAkB,GAAG,MAAM,CAwDpD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAK7E"}
@@ -0,0 +1,160 @@
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.WORDMARK = exports.MARK = void 0;
7
+ exports.termWidth = termWidth;
8
+ exports.banner = banner;
9
+ exports.shouldShowArt = shouldShowArt;
10
+ // scalebun/src/ui/banner.ts
11
+ // Ported from the reference banner.mjs — do NOT retune the width thresholds, the
12
+ // gradient stops, the colour ladder, or the mark art. The mark is pre-rendered;
13
+ // regenerate with `pnpm --filter @scalebun/cli gen:mark` if the logo changes.
14
+ // Glyph set is ▀ ▄ █ + space only: the CP437 legacy subset that every monospace
15
+ // font ships (braille U+2800 does NOT ship in DejaVu Sans Mono / Liberation Mono
16
+ // and renders as tofu).
17
+ const chalk_1 = __importDefault(require("chalk"));
18
+ const mark_1 = require("./mark");
19
+ Object.defineProperty(exports, "MARK", { enumerable: true, get: function () { return mark_1.MARK; } });
20
+ const MARK_H = mark_1.MARK.length;
21
+ exports.WORDMARK = [
22
+ '███████╗ ██████╗ █████╗ ██╗ ███████╗██████╗ ██╗ ██╗███╗ ██╗',
23
+ '██╔════╝██╔════╝██╔══██╗██║ ██╔════╝██╔══██╗██║ ██║████╗ ██║',
24
+ '███████╗██║ ███████║██║ █████╗ ██████╔╝██║ ██║██╔██╗ ██║',
25
+ '╚════██║██║ ██╔══██║██║ ██╔══╝ ██╔══██╗██║ ██║██║╚██╗██║',
26
+ '███████║╚██████╗██║ ██║███████╗███████╗██████╔╝╚██████╔╝██║ ╚████║',
27
+ '╚══════╝ ╚═════╝╚═╝ ╚═╝╚══════╝╚══════╝╚═════╝ ╚═════╝ ╚═╝ ╚═══╝',
28
+ ];
29
+ const WORD_W = exports.WORDMARK[0].length;
30
+ /* ── colour ─────────────────────────────────────────────────────────── */
31
+ // Detection is chalk's (`chalk.level`), the CLI's single source of truth for
32
+ // colour support — it also parses argv, so `--no-color` / `--color=never` are
33
+ // honoured here exactly as they are for the status box and command table. The
34
+ // raw-ANSI emitters below stay local: they do per-character gradient with
35
+ // repeat-collapsing, which chalk does not offer.
36
+ const BRAND = [80, 70, 229]; // #5046E5, flat logo indigo
37
+ const GRAD = [
38
+ [108, 92, 231], // #6C5CE7
39
+ [244, 114, 208], // #F472D0
40
+ ];
41
+ function rgb256(r, g, b) {
42
+ const q = (v) => Math.round((v / 255) * 5);
43
+ return 16 + 36 * q(r) + 6 * q(g) + q(b);
44
+ }
45
+ function fg(level, r, g, b) {
46
+ if (level >= 3)
47
+ return `\x1b[38;2;${r};${g};${b}m`;
48
+ if (level === 2)
49
+ return `\x1b[38;5;${rgb256(r, g, b)}m`;
50
+ if (level === 1)
51
+ return '\x1b[95m'; // bright magenta
52
+ return '';
53
+ }
54
+ const RESET = (lvl) => (lvl ? '\x1b[0m' : '');
55
+ const STEPS = 12; // quantised: 12 stops instead of one escape per character
56
+ function mix(t) {
57
+ const [a, b] = GRAD;
58
+ const q = Math.round(t * (STEPS - 1)) / (STEPS - 1);
59
+ return [
60
+ Math.round(a[0] + (b[0] - a[0]) * q),
61
+ Math.round(a[1] + (b[1] - a[1]) * q),
62
+ Math.round(a[2] + (b[2] - a[2]) * q),
63
+ ];
64
+ }
65
+ /** Per-character horizontal gradient. Falls back to one flat escape below truecolor. */
66
+ function gradient(line, level) {
67
+ if (level === 0)
68
+ return line;
69
+ if (level < 3)
70
+ return fg(level, GRAD[0][0], GRAD[0][1], GRAD[0][2]) + line + RESET(level);
71
+ let out = '';
72
+ let last = '';
73
+ for (let i = 0; i < line.length; i++) {
74
+ const [r, g, b] = mix(i / Math.max(1, line.length - 1));
75
+ const c = fg(3, r, g, b);
76
+ if (c !== last) {
77
+ out += c;
78
+ last = c;
79
+ } // collapse repeats
80
+ out += line[i];
81
+ }
82
+ return out + RESET(level);
83
+ }
84
+ /* ── layout ─────────────────────────────────────────────────────────── */
85
+ /** Real TTY width wins; COLUMNS only covers the non-TTY case (pipes, tests). */
86
+ function termWidth() {
87
+ return process.stdout.columns || Number(process.env.COLUMNS) || 80;
88
+ }
89
+ const pad = (s, n) => s + ' '.repeat(Math.max(0, n - s.length));
90
+ function banner(o = {}) {
91
+ const version = o.version ?? '0.0.0';
92
+ const tagline = o.tagline ?? 'Enterprise OTA Update & Telemetry Control Plane';
93
+ const level = o.level ?? chalk_1.default.level; // 0 none · 1 basic · 2 256 · 3 truecolor
94
+ const width = o.width ?? termWidth();
95
+ const dim = level ? '\x1b[90m' : '';
96
+ const R = RESET(level);
97
+ // Narrow terminals: no art at all. One line beats a broken picture.
98
+ if (width < 46)
99
+ return `${fg(level, BRAND[0], BRAND[1], BRAND[2])}scalebun${R} ${dim}v${version}${R}\n`;
100
+ const GAP = 2;
101
+ const OFF = GAP + 3; // gap used by the compact lockup
102
+ const brand = fg(level, BRAND[0], BRAND[1], BRAND[2]);
103
+ const lines = [];
104
+ // Full lockup — mark + block wordmark, wordmark optically centred.
105
+ if (o.mark !== false && width >= mark_1.MARK_W + GAP + WORD_W) {
106
+ const top = Math.floor((MARK_H - exports.WORDMARK.length) / 2) - 1;
107
+ for (let i = 0; i < MARK_H; i++) {
108
+ const left = brand + pad(mark_1.MARK[i] ?? '', mark_1.MARK_W) + R;
109
+ const wi = i - top;
110
+ let right = '';
111
+ if (wi >= 0 && wi < exports.WORDMARK.length)
112
+ right = gradient(exports.WORDMARK[wi], level);
113
+ else if (wi === exports.WORDMARK.length + 1)
114
+ right = `${dim}v${version} · ${tagline}${R}`;
115
+ lines.push(right ? left + ' '.repeat(GAP) + right : left);
116
+ }
117
+ return lines.join('\n').replace(/[ \t]+$/gm, '') + '\n';
118
+ }
119
+ // Compact lockup — mark + type. Same composition as the `quiet` direction, so
120
+ // an 80-column terminal still gets the rabbit.
121
+ const shortTag = 'OTA updates and telemetry';
122
+ const tag = width >= mark_1.MARK_W + OFF + tagline.length ? tagline : shortTag;
123
+ if (o.mark !== false && width >= mark_1.MARK_W + OFF + shortTag.length) {
124
+ const bold = level ? '\x1b[1m' : '';
125
+ const type = [
126
+ `${bold}${fg(level, GRAD[0][0], GRAD[0][1], GRAD[0][2])}scalebun${R} ${dim}v${version}${R}`,
127
+ `${dim}${tag}${R}`,
128
+ ];
129
+ const top = Math.floor((MARK_H - type.length) / 2);
130
+ for (let i = 0; i < MARK_H; i++) {
131
+ const left = brand + pad(mark_1.MARK[i] ?? '', mark_1.MARK_W) + R;
132
+ const ti = i - top;
133
+ const right = ti >= 0 && ti < type.length ? type[ti] : '';
134
+ lines.push(right ? left + ' '.repeat(OFF) + right : left);
135
+ }
136
+ return lines.join('\n').replace(/[ \t]+$/gm, '') + '\n';
137
+ }
138
+ // No room beside the mark: type only.
139
+ if (width >= WORD_W)
140
+ exports.WORDMARK.forEach((l) => lines.push(gradient(l, level)));
141
+ else
142
+ lines.push(`${fg(level, BRAND[0], BRAND[1], BRAND[2])}scalebun${R}`);
143
+ lines.push('');
144
+ lines.push(`${dim}v${version} · ${width >= 60 ? tagline : shortTag}${R}`);
145
+ return lines.join('\n') + '\n';
146
+ }
147
+ /**
148
+ * Gates the ART ONLY (mark + wordmark). The splash body — status line and
149
+ * command table — is the output of the no-arg command, not banner decoration,
150
+ * so it must NOT be gated by this. Keep the two concerns separate.
151
+ */
152
+ function shouldShowArt(argv = process.argv.slice(2)) {
153
+ if (argv.includes('--no-banner') || process.env.SCALEBUN_NO_BANNER)
154
+ return false;
155
+ if (process.env.CI && !process.stdout.isTTY)
156
+ return false;
157
+ const cmd = argv.find((a) => !a.startsWith('-'));
158
+ return !cmd || cmd === 'help'; // bare `scalebun` and `scalebun help` only
159
+ }
160
+ //# sourceMappingURL=banner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/ui/banner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const MARK: readonly string[];
2
+ export declare const MARK_W = 20;
3
+ //# sourceMappingURL=mark.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mark.d.ts","sourceRoot":"","sources":["../../src/ui/mark.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,IAAI,EAAE,SAAS,MAAM,EAejC,CAAC;AACF,eAAO,MAAM,MAAM,KAAK,CAAC"}
package/lib/ui/mark.js ADDED
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MARK_W = exports.MARK = void 0;
4
+ /* eslint-disable */
5
+ // prettier-ignore
6
+ // GENERATED by tools/gen-mark.mjs — do not edit by hand.
7
+ exports.MARK = [
8
+ " ▄▄█████",
9
+ " █████ ████████",
10
+ "███████ ███████",
11
+ "███ ████ ▄███▀ ▀▀",
12
+ "████ ███ ████▀",
13
+ "▀███▄███▄████▄▄",
14
+ " ▀███████████████▄",
15
+ " ████▀▀▀ ▀▀████▄",
16
+ "████ ▄▄▄ ▀███",
17
+ "███ ███ ▄███",
18
+ "███ ▀███",
19
+ "███▄ ▄▄▄ ▄████",
20
+ "▀████▄▄▄▄▄▄███████▀",
21
+ " ▀██████████▀▀▀▀",
22
+ ];
23
+ exports.MARK_W = 20;
24
+ //# sourceMappingURL=mark.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mark.js","sourceRoot":"","sources":["../../src/ui/mark.ts"],"names":[],"mappings":";;;AAAA,oBAAoB;AACpB,kBAAkB;AAClB,yDAAyD;AAC5C,QAAA,IAAI,GAAsB;IACrC,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,iBAAiB;IACjB,iBAAiB;IACjB,oBAAoB;IACpB,sBAAsB;IACtB,sBAAsB;IACtB,sBAAsB;IACtB,sBAAsB;IACtB,sBAAsB;IACtB,qBAAqB;IACrB,mBAAmB;CACpB,CAAC;AACW,QAAA,MAAM,GAAG,EAAE,CAAC"}
package/lib/utils/ui.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- export declare function renderBanner(): void;
2
1
  export declare function renderStatus(): void;
3
2
  export declare function renderCommands(): void;
4
3
  //# sourceMappingURL=ui.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/utils/ui.ts"],"names":[],"mappings":"AAQA,wBAAgB,YAAY,IAAI,IAAI,CAUnC;AAED,wBAAgB,YAAY,IAAI,IAAI,CAUnC;AAED,wBAAgB,cAAc,IAAI,IAAI,CAwDrC"}
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/utils/ui.ts"],"names":[],"mappings":"AAMA,wBAAgB,YAAY,IAAI,IAAI,CAUnC;AAED,wBAAgB,cAAc,IAAI,IAAI,CAwDrC"}
package/lib/utils/ui.js CHANGED
@@ -3,26 +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.renderBanner = renderBanner;
7
6
  exports.renderStatus = renderStatus;
8
7
  exports.renderCommands = renderCommands;
9
8
  const chalk_1 = __importDefault(require("chalk"));
10
9
  const credentials_1 = require("./credentials");
11
- // Read the real version from package.json so the banner never drifts from the
12
- // published version. Compiled entry is lib/utils/ui.js ../../package.json is
13
- // the CLI manifest. (The banner used to hardcode "v0.1.0".)
14
- const { version } = require('../../package.json');
15
- function renderBanner() {
16
- const logo = `
17
- ${chalk_1.default.magenta('███████╗')} ${chalk_1.default.magenta('██████╗')} ${chalk_1.default.magenta('██╗ ██╗')} ${chalk_1.default.magenta('██╗')} ${chalk_1.default.magenta('███████╗')} ${chalk_1.default.magenta('██████╗')} ${chalk_1.default.magenta('██╗ ██╗')} ${chalk_1.default.magenta('███╗ ██╗')}
18
- ${chalk_1.default.magenta('██╔════╝')} ${chalk_1.default.magenta('██╔════╝')} ${chalk_1.default.magenta('██║ ██║')} ${chalk_1.default.magenta('██║')} ${chalk_1.default.magenta('██╔════╝')} ${chalk_1.default.magenta('██╔══██╗')} ${chalk_1.default.magenta('██║ ██║')} ${chalk_1.default.magenta('████╗ ██║')}
19
- ${chalk_1.default.magenta('███████╗')} ${chalk_1.default.magenta('██║')} ${chalk_1.default.magenta('██║ ██║')} ${chalk_1.default.magenta('██║')} ${chalk_1.default.magenta('█████╗')} ${chalk_1.default.magenta('██████╔╝')} ${chalk_1.default.magenta('██║ ██║')} ${chalk_1.default.magenta('██╔██╗ ██║')}
20
- ${chalk_1.default.magenta('╚════██║')} ${chalk_1.default.magenta('██║')} ${chalk_1.default.magenta('██║ ██║')} ${chalk_1.default.magenta('██║')} ${chalk_1.default.magenta('██╔══╝')} ${chalk_1.default.magenta('██╔══██╗')} ${chalk_1.default.magenta('██║ ██║')} ${chalk_1.default.magenta('██║╚██╗██║')}
21
- ${chalk_1.default.magenta('███████║')} ${chalk_1.default.magenta('╚██████╗')} ${chalk_1.default.magenta('╚██████╔╝')} ${chalk_1.default.magenta('███████╗')} ${chalk_1.default.magenta('███████╗')} ${chalk_1.default.magenta('██████╔╝')} ${chalk_1.default.magenta('╚██████╔╝')} ${chalk_1.default.magenta('██║ ╚████║')}
22
- `;
23
- console.log(logo);
24
- console.log(chalk_1.default.bold.cyan(' ⚡ Scalebun CLI') + chalk_1.default.dim(` v${version} — Enterprise OTA Update & Telemetry Control Plane\n`));
25
- }
10
+ // NOTE: the splash art (mark + wordmark) now lives in ../ui/banner.ts. This file
11
+ // keeps only the status box and command table — the body of the no-arg command.
26
12
  function renderStatus() {
27
13
  const creds = (0, credentials_1.readCredentials)();
28
14
  console.log(chalk_1.default.gray('┌─────────────────────────────────────────────────────────────┐'));
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/utils/ui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/utils/ui.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scalebun/cli",
3
- "version": "1.7.0",
3
+ "version": "1.8.0",
4
4
  "description": "Scalebun CLI — OTA bundle publishing and management",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -28,6 +28,7 @@
28
28
  "build": "tsc",
29
29
  "dev": "tsc --watch",
30
30
  "typecheck": "tsc --noEmit",
31
- "clean": "rm -rf lib"
31
+ "clean": "rm -rf lib",
32
+ "gen:mark": "node tools/gen-mark.mjs assets/scalebun-mark.svg 20 14"
32
33
  }
33
34
  }