apple signing ensure with automatic signing only adds capabilities (no profiles or certificates; the dry run says so) and lists unused storebound profiles with the exact delete command, never run; every capability write is read back (lag retries, timeout) and fails with the API answers when one did not stick; apple status, signing status and validate compare the App ID, apple.signing.capabilities and the iOS project's entitlements (CODE_SIGN_ENTITLEMENTS too) and name what is missing where; api writes outside a terminal say TTY by design and name the dedicated command; pitfalls 64-66; tests
This commit is contained in:
parent
357319a775
commit
daae3715bf
12 changed files with 463 additions and 23 deletions
|
|
@ -59,6 +59,8 @@ export interface AppleSnapshot {
|
|||
iaps: { productId: string; state: string; reviewScreenshot: boolean }[];
|
||||
expectedProducts: string[];
|
||||
privacyUrl: UrlCheck;
|
||||
/** App ID capabilities vs apple.signing.capabilities vs the iOS project's entitlements (cli/lib/signing.ts compareCapabilities). */
|
||||
capabilityMismatches?: { msg: string; fix: string }[];
|
||||
/** Local renders (Apple sizes only), checked before upload. Optional: validate fills it when a renders dir exists. */
|
||||
renders?: RendersCheck;
|
||||
/** Auto-renewable subscriptions on App Store Connect (validate reads them when the config has subscriptions). */
|
||||
|
|
@ -218,6 +220,8 @@ export function appleRules(s: AppleSnapshot): Finding[] {
|
|||
if (s.iaps.length && !f.some(x => x.code === 'iap')) add('ok', 'iap', `${s.iaps.length} in-app purchases ready`);
|
||||
|
||||
f.push(...appleSubscriptionRules(s));
|
||||
for (const m of s.capabilityMismatches ?? []) add('warn', 'capabilities', m.msg, m.fix);
|
||||
if (s.capabilityMismatches && !s.capabilityMismatches.length) add('ok', 'capabilities', 'capabilities match (App ID, config, project entitlements)');
|
||||
add(urlOk(s.privacyUrl) ? 'ok' : 'blocker', 'privacy-url', `privacy policy ${s.privacyUrl.url}: ${urlMsg(s.privacyUrl)}`, 'privacy-policy skill');
|
||||
if (s.profile) f.push(...profileRules('apple', s.profile, { reviewDetail: s.reviewDetail, descriptions: s.locales.map(l => ({ locale: l.locale, text: l.description ?? '' })) }));
|
||||
f.push(...rendersFindings('apple', s.renders));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue