- cli/serve.ts: session.hello with a per-session secret, typed methods per tool, project.inspect, portfolio.status over many project folders, progress notifications, cancellation - cli/lib/confirm-token.ts: single-use HMAC tokens bound to method + canonical params + expiry; writes are dry runs without one; no submit / release / publish method exists - cli/lib/runner.ts: shared child runner for mcp and serve, works from a compiled binary - --json on check, testflight / ppo status, next-build, next-version-code, analytics compare, prices import; inspect command; confirm() always answers no under serve - tools/build-sidecars.ts: bun build --compile for five targets, ad-hoc re-sign on macOS, path leak check - tests/serve.test.ts: methods, token binding / expiry / replay, shared vector, stdio and compiled smoke
21 lines
1.2 KiB
TypeScript
21 lines
1.2 KiB
TypeScript
// Next safe build number (CFBundleVersion) from App Store Connect: one above the highest build ever uploaded for the
|
|
// app, across every version train. Prints only the number on stdout, so scripts can use it:
|
|
// storebound apple next-build -> 42
|
|
// xcodebuild ... CURRENT_PROJECT_VERSION=$(storebound apple next-build)
|
|
// Then attach exactly that build: storebound apple listing --version x.y.z --build 42 (never "the latest").
|
|
import type { Ctx } from '../lib/ctx';
|
|
import { need } from '../lib/ctx';
|
|
import { printJson } from '../lib/log';
|
|
import { nextBuildNumber } from '../lib/release';
|
|
import { ascClient } from './asc';
|
|
|
|
export async function run(ctx: Ctx): Promise<void> {
|
|
const { config, root } = ctx.loaded;
|
|
const c = await ascClient(root, need(config.apple?.bundleId, 'apple.bundleId'), config.apple?.appId);
|
|
const appId = await c.app();
|
|
const builds = await c.all(`/v1/builds?filter[app]=${appId}&limit=200&fields[builds]=version`);
|
|
const next = nextBuildNumber(builds.map(b => String(b.attributes.version)));
|
|
if (ctx.args.has('json')) { printJson({ next, builds: builds.length }); return; }
|
|
console.error(`[apple] ${builds.length} builds on App Store Connect; next build number:`);
|
|
console.log(next);
|
|
}
|