@scalebun/cli 1.10.2 → 1.11.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/commands/ci-init.d.ts.map +1 -1
- package/lib/commands/ci-init.js +80 -2
- package/lib/commands/ci-init.js.map +1 -1
- package/lib/commands/doctor.d.ts.map +1 -1
- package/lib/commands/doctor.js +148 -3
- package/lib/commands/doctor.js.map +1 -1
- package/lib/commands/link.d.ts +16 -0
- package/lib/commands/link.d.ts.map +1 -0
- package/lib/commands/link.js +164 -0
- package/lib/commands/link.js.map +1 -0
- package/lib/commands/login.d.ts.map +1 -1
- package/lib/commands/login.js +29 -7
- package/lib/commands/login.js.map +1 -1
- package/lib/commands/ota-bundle.d.ts +15 -2
- package/lib/commands/ota-bundle.d.ts.map +1 -1
- package/lib/commands/ota-bundle.js +142 -12
- package/lib/commands/ota-bundle.js.map +1 -1
- package/lib/commands/ota-channels.d.ts.map +1 -1
- package/lib/commands/ota-channels.js +213 -21
- package/lib/commands/ota-channels.js.map +1 -1
- package/lib/commands/ota-inspect.d.ts +3 -0
- package/lib/commands/ota-inspect.d.ts.map +1 -0
- package/lib/commands/ota-inspect.js +258 -0
- package/lib/commands/ota-inspect.js.map +1 -0
- package/lib/commands/ota-keys.d.ts +18 -0
- package/lib/commands/ota-keys.d.ts.map +1 -1
- package/lib/commands/ota-keys.js +149 -4
- package/lib/commands/ota-keys.js.map +1 -1
- package/lib/commands/ota-promote.d.ts +3 -0
- package/lib/commands/ota-promote.d.ts.map +1 -0
- package/lib/commands/ota-promote.js +194 -0
- package/lib/commands/ota-promote.js.map +1 -0
- package/lib/commands/ota-publish.d.ts.map +1 -1
- package/lib/commands/ota-publish.js +108 -38
- package/lib/commands/ota-publish.js.map +1 -1
- package/lib/commands/ota-rollout.d.ts.map +1 -1
- package/lib/commands/ota-rollout.js +201 -171
- package/lib/commands/ota-rollout.js.map +1 -1
- package/lib/commands/quickstart.d.ts.map +1 -1
- package/lib/commands/quickstart.js +110 -8
- package/lib/commands/quickstart.js.map +1 -1
- package/lib/commands/shell.d.ts +28 -0
- package/lib/commands/shell.d.ts.map +1 -0
- package/lib/commands/shell.js +512 -0
- package/lib/commands/shell.js.map +1 -0
- package/lib/index.js +140 -4
- package/lib/index.js.map +1 -1
- package/lib/ui/menu.d.ts +109 -0
- package/lib/ui/menu.d.ts.map +1 -0
- package/lib/ui/menu.js +314 -0
- package/lib/ui/menu.js.map +1 -0
- package/lib/utils/bundle.d.ts.map +1 -1
- package/lib/utils/bundle.js +7 -1
- package/lib/utils/bundle.js.map +1 -1
- package/lib/utils/context.d.ts +88 -0
- package/lib/utils/context.d.ts.map +1 -0
- package/lib/utils/context.js +247 -0
- package/lib/utils/context.js.map +1 -0
- package/lib/utils/credentials.d.ts +16 -0
- package/lib/utils/credentials.d.ts.map +1 -1
- package/lib/utils/credentials.js +14 -3
- package/lib/utils/credentials.js.map +1 -1
- package/lib/utils/guide.d.ts +63 -0
- package/lib/utils/guide.d.ts.map +1 -0
- package/lib/utils/guide.js +189 -0
- package/lib/utils/guide.js.map +1 -0
- package/lib/utils/output.d.ts +96 -0
- package/lib/utils/output.d.ts.map +1 -0
- package/lib/utils/output.js +135 -0
- package/lib/utils/output.js.map +1 -0
- package/lib/utils/prompt.d.ts +80 -6
- package/lib/utils/prompt.d.ts.map +1 -1
- package/lib/utils/prompt.js +184 -20
- package/lib/utils/prompt.js.map +1 -1
- package/lib/utils/provenance.d.ts +30 -0
- package/lib/utils/provenance.d.ts.map +1 -0
- package/lib/utils/provenance.js +157 -0
- package/lib/utils/provenance.js.map +1 -0
- package/lib/utils/resolve.d.ts +81 -0
- package/lib/utils/resolve.d.ts.map +1 -0
- package/lib/utils/resolve.js +139 -0
- package/lib/utils/resolve.js.map +1 -0
- package/lib/utils/sdkBin.d.ts +18 -0
- package/lib/utils/sdkBin.d.ts.map +1 -0
- package/lib/utils/sdkBin.js +76 -0
- package/lib/utils/sdkBin.js.map +1 -0
- package/lib/utils/ui.d.ts +10 -1
- package/lib/utils/ui.d.ts.map +1 -1
- package/lib/utils/ui.js +18 -57
- package/lib/utils/ui.js.map +1 -1
- package/lib/utils/validate.d.ts +62 -0
- package/lib/utils/validate.d.ts.map +1 -0
- package/lib/utils/validate.js +189 -0
- package/lib/utils/validate.js.map +1 -0
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ci-init.d.ts","sourceRoot":"","sources":["../../src/commands/ci-init.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"ci-init.d.ts","sourceRoot":"","sources":["../../src/commands/ci-init.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+PpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsE5D"}
|
package/lib/commands/ci-init.js
CHANGED
|
@@ -36,6 +36,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.registerCiInitCommand = registerCiInitCommand;
|
|
37
37
|
const fs = __importStar(require("fs"));
|
|
38
38
|
const path = __importStar(require("path"));
|
|
39
|
+
const credentials_1 = require("../utils/credentials");
|
|
40
|
+
const client_1 = require("../api/client");
|
|
41
|
+
const resolve_1 = require("../utils/resolve");
|
|
39
42
|
/**
|
|
40
43
|
* `scalebun ci init` — generate working CI/CD pipelines for OTA publishing.
|
|
41
44
|
*
|
|
@@ -116,7 +119,13 @@ jobs:
|
|
|
116
119
|
# ── Manual controls ──────────────────────────────────────────────────
|
|
117
120
|
- name: Widen rollout
|
|
118
121
|
if: inputs.action == 'rollout'
|
|
119
|
-
|
|
122
|
+
# Same rule as COMMIT_MESSAGE above: workflow inputs are attacker-typed
|
|
123
|
+
# strings, and \${{ }} inside run: splices them into the shell with
|
|
124
|
+
# SCALEBUN_TOKEN in scope. env keeps the value data. (The CLI validates
|
|
125
|
+
# 0-100 anyway, but validation there is no reason to splice here.)
|
|
126
|
+
env:
|
|
127
|
+
ROLLOUT_PERCENT: \${{ inputs.percent }}
|
|
128
|
+
run: npx scalebun ota rollout --app-id "$SCALEBUN_APP_ID" --percent "$ROLLOUT_PERCENT"
|
|
120
129
|
|
|
121
130
|
- name: Pause release
|
|
122
131
|
if: inputs.action == 'pause'
|
|
@@ -177,6 +186,46 @@ ota-rollback:
|
|
|
177
186
|
script:
|
|
178
187
|
- npx scalebun ota rollback --app-id "$SCALEBUN_APP_ID" --yes
|
|
179
188
|
`;
|
|
189
|
+
async function fetchSetup(appIdOpt) {
|
|
190
|
+
const creds = (0, credentials_1.readCredentials)();
|
|
191
|
+
if (!creds)
|
|
192
|
+
return null;
|
|
193
|
+
try {
|
|
194
|
+
const appId = await (0, resolve_1.resolveAppId)({ appId: appIdOpt, nonInteractive: true });
|
|
195
|
+
const api = new client_1.ApiClient(creds);
|
|
196
|
+
return await api.get(`/saas/apps/${appId}/ota/ci-setup`);
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
// Every failure here is recoverable: the caller falls back to the local
|
|
200
|
+
// template. Nothing about setting up CI should require the network.
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
function channelNames(setup) {
|
|
205
|
+
return (setup.channels ?? [])
|
|
206
|
+
.map((c) => (typeof c === 'string' ? c : c?.name ?? ''))
|
|
207
|
+
.filter(Boolean);
|
|
208
|
+
}
|
|
209
|
+
function printSetupFacts(setup) {
|
|
210
|
+
console.log('');
|
|
211
|
+
console.log(` Rendered for ${setup.appName} (${setup.appId})`);
|
|
212
|
+
const plats = setup.platforms?.length ? setup.platforms.join(', ') : 'none published yet';
|
|
213
|
+
const chans = channelNames(setup);
|
|
214
|
+
console.log(` Platforms ${plats}`);
|
|
215
|
+
console.log(` Channels ${chans.length ? chans.join(', ') : 'none yet — create one before the first run'}`);
|
|
216
|
+
if (setup.secrets?.length) {
|
|
217
|
+
console.log('');
|
|
218
|
+
console.log(' Secrets to add to your CI:');
|
|
219
|
+
for (const sec of setup.secrets) {
|
|
220
|
+
// A value the server legitimately knows is printed so it can be pasted;
|
|
221
|
+
// a token is never echoed by this endpoint and is not invented here.
|
|
222
|
+
const rhs = sec.value ? sec.value : 'you supply this';
|
|
223
|
+
console.log(` ${sec.name.padEnd(20)} ${rhs}`);
|
|
224
|
+
if (sec.why)
|
|
225
|
+
console.log(` ${' '.repeat(20)} ${sec.why}`);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
180
229
|
function writeTemplate(targetPath, content) {
|
|
181
230
|
if (fs.existsSync(targetPath)) {
|
|
182
231
|
console.error(`❌ ${path.relative(process.cwd(), targetPath)} already exists — refusing to overwrite.\n` +
|
|
@@ -202,12 +251,41 @@ function registerCiInitCommand(program) {
|
|
|
202
251
|
ci.command('init')
|
|
203
252
|
.description('Generate a CI/CD pipeline for OTA publishing (publish / rollout / pause / rollback)')
|
|
204
253
|
.option('--provider <name>', 'CI provider: github | gitlab', 'github')
|
|
205
|
-
.
|
|
254
|
+
.option('--app-id <id>', 'Scalebun app ID (resolved from scalebun.json when omitted)')
|
|
255
|
+
.option('--offline', 'Skip the server and write the generic template')
|
|
256
|
+
.action(async (opts) => {
|
|
206
257
|
const provider = opts.provider.toLowerCase();
|
|
258
|
+
// Ask the server for a workflow that knows this app's real platforms and
|
|
259
|
+
// channels. Falls back silently — see fetchSetup.
|
|
260
|
+
const setup = opts.offline ? null : await fetchSetup(opts.appId);
|
|
207
261
|
if (provider === 'github') {
|
|
208
262
|
const target = path.join(process.cwd(), '.github', 'workflows', 'scalebun-ota.yml');
|
|
263
|
+
const rendered = setup?.workflow?.content;
|
|
264
|
+
if (rendered) {
|
|
265
|
+
const at = setup?.workflow?.path
|
|
266
|
+
? path.join(process.cwd(), setup.workflow.path)
|
|
267
|
+
: target;
|
|
268
|
+
if (!writeTemplate(at, rendered))
|
|
269
|
+
process.exit(1);
|
|
270
|
+
console.log(`✅ GitHub Actions pipeline generated: ${path.relative(process.cwd(), at)}`);
|
|
271
|
+
printSetupFacts(setup);
|
|
272
|
+
console.log('');
|
|
273
|
+
console.log('Next steps:');
|
|
274
|
+
console.log(' 1. Create an access token: dashboard → Settings → Access Tokens');
|
|
275
|
+
console.log(' (or run `scalebun login` locally and copy the scalebun_pat_… it prints)');
|
|
276
|
+
console.log(' 2. Add the secrets above to your repository.');
|
|
277
|
+
console.log(' 3. Push — the workflow publishes, then rollout / pause / rollback run on demand.');
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
209
280
|
if (writeTemplate(target, GITHUB_ACTIONS_WORKFLOW)) {
|
|
210
281
|
printNextSteps('GitHub Actions', path.relative(process.cwd(), target));
|
|
282
|
+
// Say WHICH pipeline this is. A generic template that silently claims
|
|
283
|
+
// to be app-specific is how you end up publishing to a channel that
|
|
284
|
+
// does not exist and blaming the CLI.
|
|
285
|
+
console.log('');
|
|
286
|
+
console.log(' ℹ️ Generic template — the channel and platform in it are defaults,');
|
|
287
|
+
console.log(" not this app's. Sign in and re-run for one rendered from your");
|
|
288
|
+
console.log(' real channels and platforms.');
|
|
211
289
|
}
|
|
212
290
|
else {
|
|
213
291
|
process.exit(1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ci-init.js","sourceRoot":"","sources":["../../src/commands/ci-init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"ci-init.js","sourceRoot":"","sources":["../../src/commands/ci-init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2IpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAM5D;AAED;;;GAGG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAsQ/C"}
|
package/lib/commands/doctor.js
CHANGED
|
@@ -32,17 +32,27 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
32
32
|
return result;
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
35
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
39
|
exports.registerDoctorCommand = registerDoctorCommand;
|
|
37
40
|
exports.runDoctor = runDoctor;
|
|
38
41
|
const fs = __importStar(require("fs"));
|
|
42
|
+
const crypto = __importStar(require("crypto"));
|
|
39
43
|
const path = __importStar(require("path"));
|
|
44
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
45
|
+
const output_1 = require("../utils/output");
|
|
40
46
|
const credentials_1 = require("../utils/credentials");
|
|
41
47
|
const client_1 = require("../api/client");
|
|
42
48
|
const bundle_1 = require("../utils/bundle");
|
|
43
49
|
const findings = [];
|
|
44
50
|
function report(level, title, detail) {
|
|
45
51
|
findings.push({ level, title, detail });
|
|
52
|
+
// Under --json the findings array IS the output; printing icons alongside it
|
|
53
|
+
// would corrupt the document a pipeline is trying to parse.
|
|
54
|
+
if ((0, output_1.isJson)())
|
|
55
|
+
return;
|
|
46
56
|
const icon = level === 'ok' ? '✅' : level === 'warn' ? '⚠️ ' : '❌';
|
|
47
57
|
console.log(`${icon} ${title}`);
|
|
48
58
|
if (detail)
|
|
@@ -74,6 +84,91 @@ function findFile(dir, names, maxDepth = 6) {
|
|
|
74
84
|
}
|
|
75
85
|
return null;
|
|
76
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* The public half of the local signing key, as the hex the SDK wants.
|
|
89
|
+
*
|
|
90
|
+
* ed25519 SPKI is a fixed 12-byte header followed by the 32-byte key, so the
|
|
91
|
+
* raw value is the tail. Returns null rather than throwing: a key file that
|
|
92
|
+
* cannot be parsed is worth reporting as "pin your key" with a placeholder,
|
|
93
|
+
* not as a crashed doctor.
|
|
94
|
+
*/
|
|
95
|
+
function derivePublicKeyHex(privateKeyPath) {
|
|
96
|
+
try {
|
|
97
|
+
const priv = crypto.createPrivateKey(fs.readFileSync(privateKeyPath));
|
|
98
|
+
const der = crypto.createPublicKey(priv).export({ type: 'spki', format: 'der' });
|
|
99
|
+
return Buffer.from(der.subarray(der.length - 32)).toString('hex');
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Does this project pin a signing key anywhere the SDK would read?
|
|
107
|
+
*
|
|
108
|
+
* Deliberately a text search across config and source rather than an attempt to
|
|
109
|
+
* resolve the app's real init call: the key can legitimately arrive from
|
|
110
|
+
* app.json, an Expo config plugin, a native constant or a JS literal, and a
|
|
111
|
+
* check that only understood one of those would report a false alarm for every
|
|
112
|
+
* app that chose another. A mention is enough to stop nagging; the warning's
|
|
113
|
+
* job is to catch the app that has never heard of the setting.
|
|
114
|
+
*/
|
|
115
|
+
function pinsSigningKey(cwd) {
|
|
116
|
+
const needle = /publicSigningKeys?\s*[:=]/;
|
|
117
|
+
const roots = ['app.json', 'app.config.js', 'app.config.ts', 'scalebun.json', 'src', 'app'];
|
|
118
|
+
const seen = (dir, depth) => {
|
|
119
|
+
if (depth < 0)
|
|
120
|
+
return false;
|
|
121
|
+
let entries;
|
|
122
|
+
try {
|
|
123
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
for (const e of entries) {
|
|
129
|
+
const full = path.join(dir, e.name);
|
|
130
|
+
if (e.isFile() && /\.(ts|tsx|js|jsx|json|kt|java|swift|m|mm)$/.test(e.name)) {
|
|
131
|
+
try {
|
|
132
|
+
if (needle.test(fs.readFileSync(full, 'utf8')))
|
|
133
|
+
return true;
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
/* unreadable file proves nothing */
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
else if (e.isDirectory() && !['node_modules', 'Pods', 'build', '.git'].includes(e.name)) {
|
|
140
|
+
if (seen(full, depth - 1))
|
|
141
|
+
return true;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return false;
|
|
145
|
+
};
|
|
146
|
+
for (const r of roots) {
|
|
147
|
+
const full = path.join(cwd, r);
|
|
148
|
+
if (!fs.existsSync(full))
|
|
149
|
+
continue;
|
|
150
|
+
if (fs.statSync(full).isDirectory()) {
|
|
151
|
+
if (seen(full, 4))
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
try {
|
|
156
|
+
if (needle.test(fs.readFileSync(full, 'utf8')))
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
/* ignore */
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
// Native config counts too — that is in fact the RIGHT place for it.
|
|
165
|
+
for (const nat of ['android/app/src/main', 'ios']) {
|
|
166
|
+
const full = path.join(cwd, nat);
|
|
167
|
+
if (fs.existsSync(full) && seen(full, 5))
|
|
168
|
+
return true;
|
|
169
|
+
}
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
77
172
|
function parseMinor(version) {
|
|
78
173
|
if (!version)
|
|
79
174
|
return null;
|
|
@@ -84,6 +179,7 @@ function registerDoctorCommand(program) {
|
|
|
84
179
|
program
|
|
85
180
|
.command('doctor')
|
|
86
181
|
.description('Check that this project is correctly set up for OTA updates')
|
|
182
|
+
.option('--json', 'Machine-readable findings; exit 3 when a check blocks')
|
|
87
183
|
.action(() => runDoctor());
|
|
88
184
|
}
|
|
89
185
|
/**
|
|
@@ -94,7 +190,10 @@ async function runDoctor() {
|
|
|
94
190
|
findings.length = 0; // reusable across calls in one process
|
|
95
191
|
{
|
|
96
192
|
const cwd = process.cwd();
|
|
97
|
-
|
|
193
|
+
// Guarded: a banner on stdout ahead of the JSON body makes the whole
|
|
194
|
+
// document unparseable, which is the usual way --json ships broken.
|
|
195
|
+
if (!(0, output_1.isJson)())
|
|
196
|
+
console.log('\nScalebun doctor\n');
|
|
98
197
|
// ── 1. Credentials ─────────────────────────────────────────────────────
|
|
99
198
|
const creds = (0, credentials_1.readCredentials)();
|
|
100
199
|
if (!creds) {
|
|
@@ -224,7 +323,29 @@ async function runDoctor() {
|
|
|
224
323
|
// ── 5. Signing ─────────────────────────────────────────────────────────
|
|
225
324
|
const keyPath = path.join(cwd, '.scalebun', 'ota-signing-key.pem');
|
|
226
325
|
if (fs.existsSync(keyPath)) {
|
|
227
|
-
|
|
326
|
+
// "Publishes are signed" was true and misleading. Signing has two
|
|
327
|
+
// halves and this only ever checked the first: the CLI signs, the
|
|
328
|
+
// server stores and serves the signature — and the device accepts the
|
|
329
|
+
// bundle on SHA-256 alone unless the app pins the public key. An
|
|
330
|
+
// unpinned app gets integrity (the bytes arrived intact) and no
|
|
331
|
+
// authenticity (they came from you), which is the difference between a
|
|
332
|
+
// corrupted download and a substituted one.
|
|
333
|
+
//
|
|
334
|
+
// Reported here because this is the only place that can see both the
|
|
335
|
+
// key and the app source, and because a green tick claiming a security
|
|
336
|
+
// property the device never enforces is worse than no check at all.
|
|
337
|
+
const pinned = pinsSigningKey(cwd);
|
|
338
|
+
if (pinned) {
|
|
339
|
+
report('ok', 'ed25519 signing key present, and the app pins a public key — signatures are enforced');
|
|
340
|
+
}
|
|
341
|
+
else {
|
|
342
|
+
const pub = derivePublicKeyHex(keyPath);
|
|
343
|
+
report('warn', 'Bundles are signed, but nothing verifies the signature', 'The device accepts updates on SHA-256 integrity alone until the app pins the\n' +
|
|
344
|
+
'public key. Add it to your ScaleBun init config:\n' +
|
|
345
|
+
` ota: { publicSigningKey: '${pub ?? '<public key hex>'}' }\n` +
|
|
346
|
+
'Pin it where an OTA bundle CANNOT rewrite it — native config baked at build\n' +
|
|
347
|
+
'time, not a JS constant, or an update could disable its own verification.');
|
|
348
|
+
}
|
|
228
349
|
const gitignore = path.join(cwd, '.gitignore');
|
|
229
350
|
const ignored = fs.existsSync(gitignore) && /(^|\n)\s*\.scalebun\/?\s*(\n|$)/.test(fs.readFileSync(gitignore, 'utf-8'));
|
|
230
351
|
if (!ignored) {
|
|
@@ -239,14 +360,38 @@ async function runDoctor() {
|
|
|
239
360
|
// ── Summary ────────────────────────────────────────────────────────────
|
|
240
361
|
const fails = findings.filter((f) => f.level === 'fail').length;
|
|
241
362
|
const warns = findings.filter((f) => f.level === 'warn').length;
|
|
363
|
+
// Machine mode: the findings ARE the output, and a blocking failure is a
|
|
364
|
+
// deliberate gate (exit 3) rather than a usage error (exit 1). That is
|
|
365
|
+
// the distinction a CI job needs — "your project is not OTA-ready" and
|
|
366
|
+
// "you typed the command wrong" want opposite responses.
|
|
367
|
+
if ((0, output_1.isJson)()) {
|
|
368
|
+
(0, output_1.emit)(() => { }, {
|
|
369
|
+
ok: fails === 0,
|
|
370
|
+
blocking: fails,
|
|
371
|
+
warnings: warns,
|
|
372
|
+
findings,
|
|
373
|
+
});
|
|
374
|
+
if (fails > 0)
|
|
375
|
+
process.exit(output_1.ExitCode.Gate);
|
|
376
|
+
return;
|
|
377
|
+
}
|
|
242
378
|
console.log('');
|
|
243
379
|
if (fails > 0) {
|
|
244
380
|
console.log(`${fails} blocking issue(s), ${warns} warning(s). Fix the ❌ items before shipping OTA.`);
|
|
245
|
-
process.exit(
|
|
381
|
+
process.exit(output_1.ExitCode.Gate);
|
|
246
382
|
}
|
|
247
383
|
console.log(warns > 0
|
|
248
384
|
? `No blocking issues (${warns} warning(s)). You can ship OTA updates.`
|
|
249
385
|
: 'All checks passed. You can ship OTA updates.');
|
|
386
|
+
// "You can ship OTA updates" and then no way to. The signing-key warning
|
|
387
|
+
// is the one worth acting on before the first release, so offer it when
|
|
388
|
+
// that is what the warning was about.
|
|
389
|
+
(0, output_1.printNextSteps)([
|
|
390
|
+
{ label: 'Ship an update', argv: ['ota', 'publish'] },
|
|
391
|
+
...(findings.some((f) => f.title.startsWith('No signing key'))
|
|
392
|
+
? [{ label: 'Sign your bundles', argv: ['ota', 'generate-key-pair'] }]
|
|
393
|
+
: []),
|
|
394
|
+
], chalk_1.default.cyan);
|
|
250
395
|
}
|
|
251
396
|
}
|
|
252
397
|
//# sourceMappingURL=doctor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* `scalebun link` — bind this directory to an app, once.
|
|
4
|
+
*
|
|
5
|
+
* The missing noun. Nine commands hard-required `--app-id <cuid>`, so every
|
|
6
|
+
* 3am invocation began by finding a 25-character id in a browser. Linking
|
|
7
|
+
* writes `scalebun.json` at the project root and the flag disappears from
|
|
8
|
+
* every later command in this tree.
|
|
9
|
+
*
|
|
10
|
+
* `scalebun.json` is COMMITTED, not ignored — an app id is not a secret (it
|
|
11
|
+
* appears in every dashboard URL) and the whole point is that a teammate who
|
|
12
|
+
* clones the repo inherits the binding. The signing key next to it in
|
|
13
|
+
* `.scalebun/` is the secret, and that is gitignored separately.
|
|
14
|
+
*/
|
|
15
|
+
export declare function registerLinkCommands(program: Command): void;
|
|
16
|
+
//# sourceMappingURL=link.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/commands/link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuH3D"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.registerLinkCommands = registerLinkCommands;
|
|
40
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
41
|
+
const fs = __importStar(require("fs"));
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
const client_1 = require("../api/client");
|
|
44
|
+
const credentials_1 = require("../utils/credentials");
|
|
45
|
+
const apps_1 = require("../utils/apps");
|
|
46
|
+
const prompt_1 = require("../utils/prompt");
|
|
47
|
+
const resolve_1 = require("../utils/resolve");
|
|
48
|
+
const output_1 = require("../utils/output");
|
|
49
|
+
const context_1 = require("../utils/context");
|
|
50
|
+
/**
|
|
51
|
+
* `scalebun link` — bind this directory to an app, once.
|
|
52
|
+
*
|
|
53
|
+
* The missing noun. Nine commands hard-required `--app-id <cuid>`, so every
|
|
54
|
+
* 3am invocation began by finding a 25-character id in a browser. Linking
|
|
55
|
+
* writes `scalebun.json` at the project root and the flag disappears from
|
|
56
|
+
* every later command in this tree.
|
|
57
|
+
*
|
|
58
|
+
* `scalebun.json` is COMMITTED, not ignored — an app id is not a secret (it
|
|
59
|
+
* appears in every dashboard URL) and the whole point is that a teammate who
|
|
60
|
+
* clones the repo inherits the binding. The signing key next to it in
|
|
61
|
+
* `.scalebun/` is the secret, and that is gitignored separately.
|
|
62
|
+
*/
|
|
63
|
+
function registerLinkCommands(program) {
|
|
64
|
+
program
|
|
65
|
+
.command('link')
|
|
66
|
+
.description('Bind this project to an app so --app-id is never needed again')
|
|
67
|
+
.option('--app-id <id>', 'Skip the picker and link this app')
|
|
68
|
+
.option('--channel <name>', 'Default channel for publish and promote', 'production')
|
|
69
|
+
.option('--json', 'Machine-readable output')
|
|
70
|
+
.action(async (opts) => {
|
|
71
|
+
const creds = (0, credentials_1.readCredentials)();
|
|
72
|
+
if (!creds) {
|
|
73
|
+
(0, output_1.fail)('Not signed in.', ['Run `scalebun login` first.'], output_1.ExitCode.Usage);
|
|
74
|
+
}
|
|
75
|
+
// Link the directory the user is standing in, unless an ancestor is
|
|
76
|
+
// already linked — re-linking a subdirectory of a linked project would
|
|
77
|
+
// create a second, shadowing config nobody asked for.
|
|
78
|
+
const existingRoot = (0, context_1.findProjectRoot)();
|
|
79
|
+
const root = existingRoot ?? process.cwd();
|
|
80
|
+
const existing = (0, context_1.readProjectConfig)(root);
|
|
81
|
+
let entry = null;
|
|
82
|
+
if (!opts.appId) {
|
|
83
|
+
if ((0, resolve_1.isNonInteractive)({ nonInteractive: (0, output_1.isJson)() })) {
|
|
84
|
+
(0, output_1.fail)('--app-id is required.', ['This shell is not interactive, so the app cannot be chosen here.'], output_1.ExitCode.Usage);
|
|
85
|
+
}
|
|
86
|
+
let entries;
|
|
87
|
+
try {
|
|
88
|
+
entries = await (0, apps_1.fetchAllApps)(new client_1.ApiClient(creds));
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
(0, output_1.failFromError)('Could not list apps', err);
|
|
92
|
+
}
|
|
93
|
+
if (!entries.length) {
|
|
94
|
+
(0, output_1.fail)('This account has no apps yet.', ['Create one in the dashboard, then re-run.'], output_1.ExitCode.Usage);
|
|
95
|
+
}
|
|
96
|
+
if (entries.length === 1) {
|
|
97
|
+
entry = entries[0];
|
|
98
|
+
console.log(chalk_1.default.dim(`Using your only app: ${entry.app.name}`));
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
entry = await (0, prompt_1.select)('Which app should this project use?', entries.map((e) => ({
|
|
102
|
+
label: `${e.app.name} ${chalk_1.default.dim(`${e.orgName} / ${e.projectName}`)}`,
|
|
103
|
+
value: e,
|
|
104
|
+
})));
|
|
105
|
+
(0, prompt_1.closePrompts)();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
const appId = opts.appId ?? entry.app.id;
|
|
109
|
+
const appName = entry?.app.name;
|
|
110
|
+
const saved = (0, context_1.writeProjectConfig)(root, {
|
|
111
|
+
appId,
|
|
112
|
+
...(appName ? { appName } : {}),
|
|
113
|
+
channel: opts.channel ?? existing?.channel ?? 'production',
|
|
114
|
+
});
|
|
115
|
+
const rel = path.relative(process.cwd(), path.join(root, context_1.PROJECT_FILE)) || context_1.PROJECT_FILE;
|
|
116
|
+
const ctx = (0, context_1.getContext)();
|
|
117
|
+
(0, output_1.emit)(() => {
|
|
118
|
+
console.log('');
|
|
119
|
+
console.log(`🔗 Linked to ${chalk_1.default.bold(appName ?? appId)}`);
|
|
120
|
+
console.log(` ${chalk_1.default.dim(rel)}`);
|
|
121
|
+
console.log(` ${chalk_1.default.dim(`channel: ${saved.channel}`)}`);
|
|
122
|
+
console.log('');
|
|
123
|
+
console.log(chalk_1.default.dim(' Commit this file — an app id is not a secret, and a teammate'));
|
|
124
|
+
console.log(chalk_1.default.dim(' who clones the repo inherits the binding.'));
|
|
125
|
+
console.log('');
|
|
126
|
+
// Say what this actually bought, in the terms the user cares about.
|
|
127
|
+
console.log(' --app-id is now optional for every command here.');
|
|
128
|
+
if (!ctx.isNativeProject) {
|
|
129
|
+
console.log(chalk_1.default.dim(' No android/ or ios/ here — run this from your app root to wire OTA too.'));
|
|
130
|
+
(0, output_1.printNextSteps)([{ label: 'Check the project', argv: ['doctor'] }], chalk_1.default.cyan);
|
|
131
|
+
}
|
|
132
|
+
else if (ctx.stage < 3) {
|
|
133
|
+
(0, output_1.printNextSteps)([
|
|
134
|
+
{ label: 'Wire the native side', argv: ['init', ctx.platforms[0]] },
|
|
135
|
+
{ label: 'Check what else is needed', argv: ['doctor'] },
|
|
136
|
+
], chalk_1.default.cyan);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
(0, output_1.printNextSteps)([
|
|
140
|
+
{ label: 'Ship an update', argv: ['ota', 'publish'] },
|
|
141
|
+
{ label: 'See what is live', argv: ['ota', 'status'] },
|
|
142
|
+
], chalk_1.default.cyan);
|
|
143
|
+
}
|
|
144
|
+
}, { ok: true, appId, appName: appName ?? null, channel: saved.channel, file: path.join(root, context_1.PROJECT_FILE) });
|
|
145
|
+
});
|
|
146
|
+
program
|
|
147
|
+
.command('unlink')
|
|
148
|
+
.description('Remove the app binding from this project')
|
|
149
|
+
.action(() => {
|
|
150
|
+
const root = (0, context_1.findProjectRoot)();
|
|
151
|
+
if (!root) {
|
|
152
|
+
(0, output_1.fail)('This directory is not linked.', ['Nothing to remove.'], output_1.ExitCode.Usage);
|
|
153
|
+
}
|
|
154
|
+
const file = path.join(root, context_1.PROJECT_FILE);
|
|
155
|
+
try {
|
|
156
|
+
fs.unlinkSync(file);
|
|
157
|
+
}
|
|
158
|
+
catch (err) {
|
|
159
|
+
(0, output_1.fail)(`Could not remove ${file}: ${err?.message ?? err}`, [], output_1.ExitCode.Usage);
|
|
160
|
+
}
|
|
161
|
+
console.log(`🔗 Unlinked. Removed ${chalk_1.default.dim(file)}`);
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/commands/link.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiCpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoB3D;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAkFhE"}
|