From 39f5372464b6b4c3f40ece71803dc93a0becd2a7 Mon Sep 17 00:00:00 2001 From: Ran Cohen Date: Thu, 17 Feb 2022 18:11:55 +0200 Subject: [PATCH] Fix tarballs based commands not considering config from package.json (#799) * fix: remove flags defaults and let Tarballs.buildConfig to determine final config * fix: applying fix on promote command * fix: set xz true by default * Update tarballs.ts --- src/commands/pack/tarballs.ts | 12 ++++-------- src/commands/promote.ts | 11 +++-------- src/commands/upload/tarballs.ts | 13 ++++--------- src/tarballs/config.ts | 2 +- 4 files changed, 12 insertions(+), 26 deletions(-) diff --git a/src/commands/pack/tarballs.ts b/src/commands/pack/tarballs.ts index c3dee8ef..1f9151f4 100644 --- a/src/commands/pack/tarballs.ts +++ b/src/commands/pack/tarballs.ts @@ -11,20 +11,16 @@ This can be used to create oclif CLIs that use the system node or that come prel static flags = { root: Flags.string({char: 'r', description: 'path to oclif CLI root', default: '.', required: true}), - targets: Flags.string({char: 't', - description: 'comma-separated targets to pack (e.g.: linux-arm,win32-x64)', - default: Tarballs.TARGETS.join(','), - }), - xz: Flags.boolean({description: 'also build xz', allowNo: true, default: true}), - tarball: Flags.string({char: 't', description: 'optionally specify a path to a tarball already generated by NPM', required: false}), + targets: Flags.string({char: 't', description: 'comma-separated targets to pack (e.g.: linux-arm,win32-x64)'}), + xz: Flags.boolean({description: 'also build xz', allowNo: true}), + tarball: Flags.string({char: 'l', description: 'optionally specify a path to a tarball already generated by NPM', required: false}), } async run(): Promise { const prevCwd = qq.cwd() if (process.platform === 'win32') throw new Error('pack does not function on windows') const {flags} = await this.parse(PackTarballs) - const targets = flags.targets.split(',') - const buildConfig = await Tarballs.buildConfig(flags.root, {xz: flags.xz, targets: targets}) + const buildConfig = await Tarballs.buildConfig(flags.root, {xz: flags.xz, targets: flags?.targets?.split(',')}) if (buildConfig.targets.length === 0) { throw new Error('Please specify one or more valid targets.') } diff --git a/src/commands/promote.ts b/src/commands/promote.ts index cdc2de9d..d696bf63 100644 --- a/src/commands/promote.ts +++ b/src/commands/promote.ts @@ -14,24 +14,19 @@ export default class Promote extends Command { version: Flags.string({description: 'semantic version of the CLI to promote', required: true}), sha: Flags.string({description: '7-digit short git commit SHA of the CLI to promote', required: true}), channel: Flags.string({description: 'which channel to promote to', required: true, default: 'stable'}), - targets: Flags.string({ - char: 't', - description: 'comma-separated targets to promote (e.g.: linux-arm,win32-x64)', - default: Tarballs.TARGETS.join(','), - }), + targets: Flags.string({char: 't', description: 'comma-separated targets to promote (e.g.: linux-arm,win32-x64)'}), deb: Flags.boolean({char: 'd', description: 'promote debian artifacts'}), macos: Flags.boolean({char: 'm', description: 'promote macOS pkg'}), win: Flags.boolean({char: 'w', description: 'promote Windows exe'}), 'max-age': Flags.string({char: 'a', description: 'cache control max-age in seconds', default: '86400'}), - xz: Flags.boolean({description: 'also upload xz', allowNo: true, default: true}), + xz: Flags.boolean({description: 'also upload xz', allowNo: true}), indexes: Flags.boolean({description: 'append the promoted urls into the index files'}), } async run(): Promise { const {flags} = await this.parse(Promote) const maxAge = `max-age=${flags['max-age']}` - const targets = flags.targets.split(',') - const buildConfig = await Tarballs.buildConfig(flags.root, {targets}) + const buildConfig = await Tarballs.buildConfig(flags.root, {targets: flags?.targets?.split(',')}) const {s3Config, config} = buildConfig const indexDefaults = { version: flags.version, diff --git a/src/commands/upload/tarballs.ts b/src/commands/upload/tarballs.ts index 9dbed0c1..0fb79cdf 100644 --- a/src/commands/upload/tarballs.ts +++ b/src/commands/upload/tarballs.ts @@ -15,19 +15,14 @@ export default class UploadTarballs extends Command { static flags = { root: Flags.string({char: 'r', description: 'path to oclif CLI root', default: '.', required: true}), - targets: Flags.string({ - char: 't', - description: 'comma-separated targets to upload (e.g.: linux-arm,win32-x64)', - default: Tarballs.TARGETS.join(','), - }), - xz: Flags.boolean({description: 'also upload xz', allowNo: true, default: true}), + targets: Flags.string({char: 't', description: 'comma-separated targets to upload (e.g.: linux-arm,win32-x64)'}), + xz: Flags.boolean({description: 'also upload xz', allowNo: true}), } async run(): Promise { const {flags} = await this.parse(UploadTarballs) if (process.platform === 'win32') throw new Error('upload does not function on windows') - const targets = flags.targets.split(',') - const buildConfig = await Tarballs.buildConfig(flags.root, {targets, xz: flags.xz}) + const buildConfig = await Tarballs.buildConfig(flags.root, {xz: flags.xz, targets: flags?.targets?.split(',')}) const {s3Config, dist, config, xz} = buildConfig // fail early if targets are not built @@ -77,7 +72,7 @@ export default class UploadTarballs extends Command { await aws.s3.uploadFile(dist(manifest), {...ManifestS3Options, Key: cloudKey}) } - if (targets.length > 0) log('uploading targets') + if (buildConfig.targets.length > 0) log('uploading targets') // eslint-disable-next-line no-await-in-loop for (const target of buildConfig.targets) await uploadTarball(target) log(`done uploading tarballs & manifests for v${config.version}-${buildConfig.gitSha}`) diff --git a/src/tarballs/config.ts b/src/tarballs/config.ts index 221c2aa7..942fcdb7 100644 --- a/src/tarballs/config.ts +++ b/src/tarballs/config.ts @@ -70,7 +70,7 @@ export async function buildConfig(root: string, options: {xz?: boolean; targets? config, tmp, updateConfig, - xz: typeof options.xz === 'boolean' ? options.xz : Boolean(updateConfig.s3.xz), + xz: options?.xz ?? updateConfig?.s3?.xz ?? true, dist: (...args: string[]) => path.join(config.root, 'dist', ...args), s3Config: updateConfig.s3, nodeVersion,