eng/tools/eng-package-utils/update-samples.js (46 lines of code) (raw):

const path = require("path"); const process = require("process"); const { spawnSync } = require("child_process"); const { getRushSpec } = require("./index"); const fs = require("fs"); const parseArgs = () => { if (process.argv.some((a) => ["-h", "--help"].includes(a.toLowerCase())) || process.argv.length < 3) { console.error("Usage: node update-samples.js <artifact-name>"); console.error("Example: node update-samples.js azure-storage-blob"); } const [scriptPath, artifactName] = process.argv.slice(1); const baseDir = path.resolve(`${path.dirname(scriptPath)}/../../..`); return [baseDir, artifactName]; }; const spawnNode = (cwd, ...args) => { console.log(`Executing: "dev-tool ${args.join(" ")}" in ${cwd}\n\n`); const proc = spawnSync("dev-tool", args, { cwd, shell: true, stdio: "inherit" }); console.log(`\n\process exited with code ${proc.status}`); if (proc.status !== 0) { process.exitCode = proc.status || 1; } return proc.status }; async function main(repoRoot, artifactName) { var rushSpec = await getRushSpec(repoRoot); //Find project root directory using information in rush.json const targetPackage = rushSpec.projects.find( (packageSpec) => packageSpec.packageName.replace("@", "").replace("/", "-") == artifactName ); if (!targetPackage) { console.log(`Package is not found in rush.json for artifact ${artifactName}`); return; } if (targetPackage.versionPolicyName == "management") { console.log(`Skipping update samples for management package ${artifactName}`); return; } const samplesDevPath = path.join(targetPackage.projectFolder, "samples-dev"); if (!fs.existsSync(samplesDevPath)) { console.log(`Samples-dev directory is not present in ${targetPackage.projectFolder}. Skipping udpate samples.`); return; } console.log(`Running samples update for package ${targetPackage.packageName}`); spawnNode(targetPackage.projectFolder, "samples publish --force"); }; const [repoRoot, artifactName] = parseArgs(); main(repoRoot, artifactName);