Play console steps without an API as agent plans: play-store-settings (App category; play listing cannot set it), play-app-content (every card in order, one owner batch) and its cards (privacy policy, ads, sign in details, advertising ID, government, financial, health), play-production-countries and play-production-release; IARC plan with the Terms of Use agreement, follow-ups (console.contentRating.details, products[].randomRewards, social) and the Summary's final Save; config play.category / countries / managedPublishing, console.appContent; check, validate, play status and play release reminders; inPageLoop helper and material checkbox clicks; App Privacy published signal; first IAPs via apple iap-submit --with-version. Pitfalls 27, 28
This commit is contained in:
parent
dbd9f2973c
commit
b7bfe89151
37 changed files with 1624 additions and 121 deletions
|
|
@ -2,12 +2,14 @@
|
|||
// storebound console verify <form> [--from-text <file|->] [--json]
|
||||
// apple-app-privacy: the page text of the App Privacy page (the Data Types section's per-type summaries; the App Store
|
||||
// Connect API has no App Privacy endpoint). play-app-record: the JSON of the plan's capture snippet (input states) or
|
||||
// the page text. play-content-rating, play-target-audience: the summary page text. apple-app-record: the App Store
|
||||
// the page text. play-content-rating, play-target-audience: the summary page text. play-app-content: the plan's
|
||||
// capture JSON (cards still showing "Start <Name> declaration"); play-store-settings, the other App content cards and
|
||||
// play-production-countries / -release: the page text after Save. apple-app-record: the App Store
|
||||
// Connect API (the app by bundle id; a GET) or, with --from-text, the page text. apple-age-rating: the API.
|
||||
// Exit 1 on any mismatch, and when nothing could be matched. Pure logic in cli/lib/console-verify.ts. MCP: console_verify.
|
||||
import { readFileSync } from 'node:fs';
|
||||
import type { Ctx } from '../lib/ctx';
|
||||
import { FORM_IDS, isForm } from '../lib/console-answers';
|
||||
import { isPlanForm, PLAN_FORM_IDS } from '../lib/console-answers';
|
||||
import { verifyAgeRatingApi, verifyAppRecordApi, type VerifyResult, verifyTable, verifyText } from '../lib/console-verify';
|
||||
import { printJson } from '../lib/log';
|
||||
|
||||
|
|
@ -20,7 +22,7 @@ export async function run(ctx: Ctx): Promise<void> {
|
|||
const { config, root } = ctx.loaded;
|
||||
const args = ctx.args, json = args.has('json');
|
||||
const form = args._[0];
|
||||
if (!isForm(form)) throw new Error(`console verify <form> [--from-text <file|->]: one of ${FORM_IDS.join(', ')}`);
|
||||
if (!isPlanForm(form)) throw new Error(`console verify <form> [--from-text <file|->]: one of ${PLAN_FORM_IDS.join(', ')}`);
|
||||
const from = args.get('from-text'), inline = args.get('text');
|
||||
let r: VerifyResult;
|
||||
if (from !== undefined || inline !== undefined) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue