Skip to content

Commit

Permalink
refactor: extract common method for parsing scriptArgs
Browse files Browse the repository at this point in the history
  • Loading branch information
Chris-Hibbert committed Feb 8, 2025
1 parent d628279 commit 17f2c0d
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 47 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { makeHelpers } from '@agoric/deploy-script-support';
import { parseScriptArgs, makeHelpers } from '@agoric/deploy-script-support';
import { getManifestForReplaceFeeDistributor } from '@agoric/inter-protocol/src/proposals/replace-fee-distributor.js';
import { SECONDS_PER_HOUR } from '@agoric/inter-protocol/src/proposals/econ-behaviors.js';

Expand Down Expand Up @@ -47,31 +47,10 @@ export const defaultProposalBuilder = async (_, opts) => {
});
};

const Usage = `agoric run replace-feedDistributor-combo.js ${[...knownVariants, '<json-config>'].join(' | ')}`;

/** @type {import('@agoric/deploy-script-support/src/externalTypes.js').DeployScriptFunction} */
export default async (homeP, endowments) => {
const { scriptArgs } = endowments;
const variantOrConfig = scriptArgs?.[0];
console.log('replace-feeDistributor-combo', variantOrConfig);

const opts = {};

if (typeof variantOrConfig === 'string') {
if (variantOrConfig[0] === '{') {
try {
opts.config = JSON.parse(variantOrConfig);
} catch (err) {
throw Error(`Failed to parse config argument ${variantOrConfig}`);
}
} else {
opts.variant = variantOrConfig;
}
} else {
console.error(Usage);
throw Error(Usage);
}

const name = 'replace-feeDistributor-combo';
const opts = parseScriptArgs(endowments, name, knownVariants);
const { writeCoreEval } = await makeHelpers(homeP, endowments);

await writeCoreEval('replace-feeDistributor', utils =>
Expand Down
25 changes: 2 additions & 23 deletions packages/builders/scripts/vats/upgrade-mintHolder.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { makeHelpers } from '@agoric/deploy-script-support';
import { makeHelpers, parseScriptArgs } from '@agoric/deploy-script-support';
import { getManifestForUpgradingMintHolder } from '@agoric/vats/src/proposals/upgrade-mintHolder-proposal.js';

const configurations = {
Expand Down Expand Up @@ -94,30 +94,9 @@ export const defaultProposalBuilder = async ({ publishRef, install }, opts) => {
});
};

const Usage = `agoric run upgrade-mintHolder.js ${[...knownVariants, '<json-config>'].join(' | ')}`;

/** @type {import('@agoric/deploy-script-support/src/externalTypes.js').DeployScriptFunction} */
export default async (homeP, endowments) => {
const { scriptArgs } = endowments;
const variantOrConfig = scriptArgs?.[0];
console.log('upgrade-mintHolder', variantOrConfig);

const opts = {};

if (typeof variantOrConfig === 'string') {
if (variantOrConfig[0] === '{') {
try {
opts.config = JSON.parse(variantOrConfig);
} catch (err) {
throw Error(`Failed to parse config argument ${variantOrConfig}`);
}
} else {
opts.variant = variantOrConfig;
}
} else {
console.error(Usage);
throw Error(Usage);
}
const opts = parseScriptArgs(endowments, 'upgrade-mintHolder', knownVariants);

const { writeCoreEval } = await makeHelpers(homeP, endowments);
await writeCoreEval(`upgrade-mintHolder`, utils =>
Expand Down
33 changes: 33 additions & 0 deletions packages/deploy-script-support/src/parseCoreEvalArgs.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/**
* To customize proposals for multiple environments, we pass the "variant"
* identifier in scriptArgs. The variant must match a knownVariant.
*
* @param {import('./externalTypes.js').DeployScriptEndownments} endowments
* @param {string} name a name to use in error messages or Usage suggestions.
* @param {string[]} knownVariants
*/
export const parseScriptArgs = async (endowments, name, knownVariants) => {
const { scriptArgs } = endowments;
const variantOrConfig = scriptArgs?.[0];
console.log(`${name}`, variantOrConfig);

const Usage = `agoric run ${name}.js ${[...knownVariants, '<json-config>'].join(' | ')}`;
const opts = {};

if (typeof variantOrConfig === 'string') {
if (variantOrConfig[0] === '{') {
try {
opts.config = JSON.parse(variantOrConfig);
} catch (err) {
throw Error(`Failed to parse config argument ${variantOrConfig}`);
}
} else {
opts.variant = variantOrConfig;
}
} else {
console.error(Usage);
throw Error(Usage);
}

return opts;
};

0 comments on commit 17f2c0d

Please sign in to comment.