diff --git a/packages/cli/package.json b/packages/cli/package.json index d66402c..4c961b0 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -20,7 +20,7 @@ "scripts": { "prebuild": "tsx ../../scripts/build-docs-bundle.ts", "build": "tsup", - "postbuild": "mkdir -p dist/generated && cp src/generated/docs-bundle.json dist/generated/", + "postbuild": "node -e \"const fs=require('node:fs');fs.mkdirSync('dist/generated',{recursive:true});fs.copyFileSync('src/generated/docs-bundle.json','dist/generated/docs-bundle.json')\"", "dev": "tsup --watch", "test": "vitest run", "test:watch": "vitest", diff --git a/packages/cli/src/commands/subscriptions.ts b/packages/cli/src/commands/subscriptions.ts index ffd5ef2..afb6e36 100644 --- a/packages/cli/src/commands/subscriptions.ts +++ b/packages/cli/src/commands/subscriptions.ts @@ -139,6 +139,7 @@ export function registerSubscriptionsCommands(program: Command): void { .description("Create a subscription from JSON file") .requiredOption("--file ", "JSON file with subscription data") .option("--activate", "Activate all base plans after creation") + .option("--regions-version ", "Regional pricing version (default 2022/02)") .action(async (options) => { const config = await loadConfig(); const packageName = resolvePackageName(program.opts()["app"], config); @@ -150,7 +151,10 @@ export function registerSubscriptionsCommands(program: Command): void { command: "subscriptions create", action: "create", target: `subscription from ${options.file}`, - details: options.activate ? { activate: true } : undefined, + details: { + ...(options.activate ? { activate: true } : {}), + ...(options.regionsVersion ? { regionsVersion: options.regionsVersion } : {}), + }, }, format, formatOutput, @@ -161,7 +165,12 @@ export function registerSubscriptionsCommands(program: Command): void { const client = await getClient(config); const data = await readJsonFile(options.file); - const result = await createSubscription(client, packageName, data as Subscription); + const result = await createSubscription( + client, + packageName, + data as Subscription, + options.regionsVersion, + ); if (options.activate && result.basePlans) { for (const bp of result.basePlans) { @@ -183,6 +192,7 @@ export function registerSubscriptionsCommands(program: Command): void { .description("Update a subscription from JSON file") .requiredOption("--file ", "JSON file with subscription data") .option("--update-mask ", "Comma-separated field mask") + .option("--regions-version ", "Regional pricing version (default 2022/02)") .action(async (productId: string, options) => { const config = await loadConfig(); const packageName = resolvePackageName(program.opts()["app"], config); @@ -194,7 +204,11 @@ export function registerSubscriptionsCommands(program: Command): void { command: "subscriptions update", action: "update", target: productId, - details: { file: options.file, updateMask: options.updateMask }, + details: { + file: options.file, + updateMask: options.updateMask, + regionsVersion: options.regionsVersion, + }, }, format, formatOutput, @@ -211,6 +225,7 @@ export function registerSubscriptionsCommands(program: Command): void { productId, data as Subscription, options.updateMask, + options.regionsVersion, ); console.log(formatOutput(result, format)); }); diff --git a/packages/core/src/commands/subscriptions.ts b/packages/core/src/commands/subscriptions.ts index 9395cf3..b449811 100644 --- a/packages/core/src/commands/subscriptions.ts +++ b/packages/core/src/commands/subscriptions.ts @@ -178,11 +178,12 @@ export async function createSubscription( client: PlayApiClient, packageName: string, data: Subscription, + regionsVersion?: string, ): Promise { validatePackageName(packageName); validateSubscriptionData(data); const sanitized = sanitizeSubscription(data); - return client.subscriptions.create(packageName, sanitized, data.productId); + return client.subscriptions.create(packageName, sanitized, data.productId, regionsVersion); } const SUBSCRIPTION_ID_FIELDS = new Set(["productId", "packageName"]); @@ -199,13 +200,14 @@ export async function updateSubscription( productId: string, data: Subscription, updateMask?: string, + regionsVersion?: string, ): Promise { validatePackageName(packageName); validateSku(productId); validateSubscriptionData(data); const sanitized = sanitizeSubscription(data); const mask = updateMask || deriveSubscriptionUpdateMask(data); - return client.subscriptions.update(packageName, productId, sanitized, mask); + return client.subscriptions.update(packageName, productId, sanitized, mask, regionsVersion); } export async function deleteSubscription(