oclif 4.15.5 → 4.15.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/aws.d.ts CHANGED
@@ -5,12 +5,18 @@ declare const _default: {
5
5
  createCloudfrontInvalidation: (options: CreateInvalidationRequest) => Promise<CreateInvalidationCommandOutput>;
6
6
  };
7
7
  readonly s3: {
8
- copyObject: (options: CopyObjectRequest, ignoreMissing?: boolean) => Promise<CopyObjectOutput>;
8
+ copyObject: (options: CopyObjectRequest, { dryRun, ignoreMissing, namespace }: {
9
+ dryRun?: boolean;
10
+ ignoreMissing?: boolean;
11
+ namespace?: string;
12
+ }) => Promise<CopyObjectOutput>;
9
13
  deleteObjects: (options: DeleteObjectsRequest) => Promise<DeleteObjectsOutput>;
10
14
  getObject: (options: GetObjectRequest) => Promise<GetObjectOutput>;
11
15
  headObject: (options: HeadObjectRequest) => Promise<HeadObjectOutput>;
12
16
  listObjects: (options: ListObjectsV2Request) => Promise<ListObjectsV2Output>;
13
- uploadFile: (local: string, options: PutObjectRequest) => Promise<PutObjectOutput>;
17
+ uploadFile: (local: string, options: PutObjectRequest, { dryRun }?: {
18
+ dryRun?: boolean;
19
+ }) => Promise<PutObjectOutput>;
14
20
  };
15
21
  };
16
22
  export default _default;
package/lib/aws.js CHANGED
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const client_cloudfront_1 = require("@aws-sdk/client-cloudfront");
4
4
  const client_s3_1 = require("@aws-sdk/client-s3");
5
5
  const errors_1 = require("@oclif/core/errors");
6
+ const ux_1 = require("@oclif/core/ux");
6
7
  const fs_extra_1 = require("fs-extra");
7
8
  const log_1 = require("./log");
8
9
  const util_1 = require("./util");
@@ -60,17 +61,27 @@ exports.default = {
60
61
  },
61
62
  get s3() {
62
63
  return {
63
- copyObject: (options, ignoreMissing = false) => new Promise((resolve, reject) => {
64
- (0, log_1.log)('s3:copyObject', `from s3://${options.CopySource}`, `to s3://${options.Bucket}/${options.Key}`);
64
+ copyObject: (options, { dryRun, ignoreMissing, namespace }) => new Promise((resolve, reject) => {
65
+ const logNamespace = namespace ? `> ${namespace}` : `> s3://${options.CopySource}`;
66
+ ux_1.ux.stdout(logNamespace);
67
+ ux_1.ux.stdout(' action: copy');
68
+ ux_1.ux.stdout(` source: s3://${options.CopySource}`);
69
+ ux_1.ux.stdout(` target: s3://${options.Bucket}/${options.Key}`);
70
+ ux_1.ux.stdout();
71
+ if (dryRun)
72
+ return;
65
73
  aws.s3
66
74
  ?.send(new client_s3_1.CopyObjectCommand(options))
67
75
  .then((data) => resolve(data))
68
76
  .catch((error) => {
69
77
  if (error.Code === 'NoSuchKey') {
70
78
  if (ignoreMissing) {
71
- (0, log_1.log)('s3:copyObject', `s3://${options.CopySource} does not exist - skipping because of --ignore-missing`);
79
+ ux_1.ux.stdout(logNamespace);
80
+ ux_1.ux.stdout(` warning: s3://${options.CopySource} does not exist - skipping because of --ignore-missing`);
72
81
  return;
73
82
  }
83
+ ux_1.ux.stdout(logNamespace);
84
+ ux_1.ux.stdout(` error: s3://${options.CopySource} does not exist`);
74
85
  reject(new errors_1.CLIError(`Failed to copy source object s3://${options.CopySource} to s3://${options.Bucket}/${options.Key} because the source object does not exist`, {
75
86
  suggestions: [
76
87
  'Use the "oclif upload" to upload the object first',
@@ -110,8 +121,14 @@ exports.default = {
110
121
  .then((data) => resolve(data))
111
122
  .catch((error) => reject(error));
112
123
  }),
113
- uploadFile: (local, options) => new Promise((resolve, reject) => {
114
- (0, log_1.log)('s3:uploadFile', (0, util_1.prettifyPaths)(local), `s3://${options.Bucket}/${options.Key}`);
124
+ uploadFile: (local, options, { dryRun } = {}) => new Promise((resolve, reject) => {
125
+ ux_1.ux.stdout(`> ${local}`);
126
+ ux_1.ux.stdout(' action: upload');
127
+ ux_1.ux.stdout(` source: ${(0, util_1.prettifyPaths)(local)}`);
128
+ ux_1.ux.stdout(` target: s3://${options.Bucket}/${options.Key}`);
129
+ ux_1.ux.stdout();
130
+ if (dryRun)
131
+ return;
115
132
  options.Body = (0, fs_extra_1.createReadStream)(local);
116
133
  aws.s3
117
134
  ?.send(new client_s3_1.PutObjectCommand(options))
@@ -4,6 +4,7 @@ export default class Promote extends Command {
4
4
  static flags: {
5
5
  channel: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
6
6
  deb: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ 'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
8
  'ignore-missing': import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
9
  indexes: import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
10
  macos: import("@oclif/core/interfaces").BooleanFlag<boolean>;
@@ -39,6 +39,9 @@ class Promote extends core_1.Command {
39
39
  static flags = {
40
40
  channel: core_1.Flags.string({ default: 'stable', description: 'Channel to promote to.', required: true }),
41
41
  deb: core_1.Flags.boolean({ char: 'd', description: 'Promote debian artifacts.' }),
42
+ 'dry-run': core_1.Flags.boolean({
43
+ description: 'Run the command without uploading to S3 or copying versioned tarballs/installers to channel.',
44
+ }),
42
45
  'ignore-missing': core_1.Flags.boolean({
43
46
  description: 'Ignore missing tarballs/installers and continue promoting the rest.',
44
47
  }),
@@ -57,6 +60,7 @@ class Promote extends core_1.Command {
57
60
  if (flags['ignore-missing']) {
58
61
  this.warn("--ignore-missing flag is being used - This command will continue to run even if a promotion fails because it doesn't exist");
59
62
  }
63
+ this.log(`Promoting v${flags.version} (${flags.sha}) to ${flags.channel} channel\n`);
60
64
  const buildConfig = await Tarballs.buildConfig(flags.root, { targets: flags?.targets?.split(',') });
61
65
  const { config, s3Config } = buildConfig;
62
66
  const indexDefaults = {
@@ -75,8 +79,6 @@ class Promote extends core_1.Command {
75
79
  const cloudBucketCommitKey = (shortKey) => path.join(s3Config.bucket, (0, upload_util_1.commitAWSDir)(flags.version, flags.sha, s3Config), shortKey);
76
80
  const cloudChannelKey = (shortKey) => path.join((0, upload_util_1.channelAWSDir)(flags.channel, s3Config), shortKey);
77
81
  // copy tarballs manifests
78
- if (buildConfig.targets.length > 0)
79
- this.log(`\nPromoting buildmanifests & unversioned tarballs to ${flags.channel}`);
80
82
  const promoteManifest = async (target) => {
81
83
  const manifest = (0, upload_util_1.templateShortKey)('manifest', {
82
84
  arch: target.arch,
@@ -91,7 +93,11 @@ class Promote extends core_1.Command {
91
93
  ...awsDefaults,
92
94
  CopySource: cloudBucketCommitKey(manifest),
93
95
  Key: cloudChannelKey(unversionedManifest),
94
- }, flags['ignore-missing']);
96
+ }, {
97
+ dryRun: flags['dry-run'],
98
+ ignoreMissing: flags['ignore-missing'],
99
+ namespace: unversionedManifest,
100
+ });
95
101
  };
96
102
  const promoteGzTarballs = async (target) => {
97
103
  const versionedTarGzName = (0, upload_util_1.templateShortKey)('versioned', {
@@ -111,9 +117,20 @@ class Promote extends core_1.Command {
111
117
  ...awsDefaults,
112
118
  CopySource: versionedTarGzKey,
113
119
  Key: unversionedTarGzKey,
114
- }, flags['ignore-missing']),
120
+ }, {
121
+ dryRun: flags['dry-run'],
122
+ ignoreMissing: flags['ignore-missing'],
123
+ namespace: unversionedTarGzName,
124
+ }),
115
125
  ...(flags.indexes
116
- ? [(0, version_indexes_1.appendToIndex)({ ...indexDefaults, filename: unversionedTarGzName, originalUrl: versionedTarGzKey })]
126
+ ? [
127
+ (0, version_indexes_1.appendToIndex)({
128
+ ...indexDefaults,
129
+ dryRun: flags['dry-run'],
130
+ filename: unversionedTarGzName,
131
+ originalUrl: versionedTarGzKey,
132
+ }),
133
+ ]
117
134
  : []),
118
135
  ]);
119
136
  };
@@ -135,14 +152,24 @@ class Promote extends core_1.Command {
135
152
  ...awsDefaults,
136
153
  CopySource: versionedTarXzKey,
137
154
  Key: unversionedTarXzKey,
138
- }, flags['ignore-missing']),
155
+ }, {
156
+ dryRun: flags['dry-run'],
157
+ ignoreMissing: flags['ignore-missing'],
158
+ namespace: unversionedTarXzName,
159
+ }),
139
160
  ...(flags.indexes
140
- ? [(0, version_indexes_1.appendToIndex)({ ...indexDefaults, filename: unversionedTarXzName, originalUrl: versionedTarXzKey })]
161
+ ? [
162
+ (0, version_indexes_1.appendToIndex)({
163
+ ...indexDefaults,
164
+ dryRun: flags['dry-run'],
165
+ filename: unversionedTarXzName,
166
+ originalUrl: versionedTarXzKey,
167
+ }),
168
+ ]
141
169
  : []),
142
170
  ]);
143
171
  };
144
172
  const promoteMacInstallers = async () => {
145
- this.log(`\nPromoting macos pkgs to ${flags.channel}`);
146
173
  const arches = (0, util_1.uniq)(buildConfig.targets.filter((t) => t.platform === 'darwin').map((t) => t.arch));
147
174
  await Promise.all(arches.map(async (arch) => {
148
175
  const darwinPkg = (0, upload_util_1.templateShortKey)('macos', { arch, bin: config.bin, sha: flags.sha, version: flags.version });
@@ -154,16 +181,26 @@ class Promote extends core_1.Command {
154
181
  ...awsDefaults,
155
182
  CopySource: darwinCopySource,
156
183
  Key: cloudChannelKey(unversionedPkg),
157
- }, flags['ignore-missing']),
184
+ }, {
185
+ dryRun: flags['dry-run'],
186
+ ignoreMissing: flags['ignore-missing'],
187
+ namespace: unversionedPkg,
188
+ }),
158
189
  ...(flags.indexes
159
- ? [(0, version_indexes_1.appendToIndex)({ ...indexDefaults, filename: unversionedPkg, originalUrl: darwinCopySource })]
190
+ ? [
191
+ (0, version_indexes_1.appendToIndex)({
192
+ ...indexDefaults,
193
+ dryRun: flags['dry-run'],
194
+ filename: unversionedPkg,
195
+ originalUrl: darwinCopySource,
196
+ }),
197
+ ]
160
198
  : []),
161
199
  ]);
162
200
  }));
163
201
  };
164
202
  const promoteWindowsInstallers = async () => {
165
203
  // copy win exe
166
- this.log(`\nPromoting windows exe to ${flags.channel}`);
167
204
  const arches = buildConfig.targets.filter((t) => t.platform === 'win32').map((t) => t.arch);
168
205
  await Promise.all(arches.map(async (arch) => {
169
206
  const winPkg = (0, upload_util_1.templateShortKey)('win32', { arch, bin: config.bin, sha: flags.sha, version: flags.version });
@@ -175,9 +212,20 @@ class Promote extends core_1.Command {
175
212
  ...awsDefaults,
176
213
  CopySource: winCopySource,
177
214
  Key: cloudChannelKey(unversionedExe),
178
- }, flags['ignore-missing']),
215
+ }, {
216
+ dryRun: flags['dry-run'],
217
+ ignoreMissing: flags['ignore-missing'],
218
+ namespace: unversionedExe,
219
+ }),
179
220
  ...(flags.indexes
180
- ? [(0, version_indexes_1.appendToIndex)({ ...indexDefaults, filename: unversionedExe, originalUrl: winCopySource })]
221
+ ? [
222
+ (0, version_indexes_1.appendToIndex)({
223
+ ...indexDefaults,
224
+ dryRun: flags['dry-run'],
225
+ filename: unversionedExe,
226
+ originalUrl: winCopySource,
227
+ }),
228
+ ]
181
229
  : []),
182
230
  ]);
183
231
  core_1.ux.action.stop('successfully');
@@ -201,7 +249,6 @@ class Promote extends core_1.Command {
201
249
  'InRelease',
202
250
  'Release.gpg',
203
251
  ];
204
- this.log(`\nPromoting debian artifacts to ${flags.channel}`);
205
252
  await Promise.all(debArtifacts.flatMap((artifact) => {
206
253
  const debCopySource = cloudBucketCommitKey(`apt/${artifact}`);
207
254
  const debKey = cloudChannelKey(`apt/${artifact}`);
@@ -215,12 +262,20 @@ class Promote extends core_1.Command {
215
262
  ...awsDefaults,
216
263
  CopySource: debCopySource,
217
264
  Key: debKey,
218
- }, flags['ignore-missing']),
265
+ }, {
266
+ dryRun: flags['dry-run'],
267
+ ignoreMissing: flags['ignore-missing'],
268
+ namespace: debKey,
269
+ }),
219
270
  aws_1.default.s3.copyObject({
220
271
  ...awsDefaults,
221
272
  CopySource: debCopySource,
222
273
  Key: workaroundKey,
223
- }, flags['ignore-missing']),
274
+ }, {
275
+ dryRun: flags['dry-run'],
276
+ ignoreMissing: flags['ignore-missing'],
277
+ namespace: workaroundKey,
278
+ }),
224
279
  ];
225
280
  }));
226
281
  };
@@ -2,6 +2,7 @@ import { Command } from '@oclif/core';
2
2
  export default class UploadDeb extends Command {
3
3
  static description: string;
4
4
  static flags: {
5
+ 'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
5
6
  root: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
6
7
  };
7
8
  run(): Promise<void>;
@@ -36,6 +36,7 @@ const upload_util_1 = require("../../upload-util");
36
36
  class UploadDeb extends core_1.Command {
37
37
  static description = 'Upload deb package built with `pack deb`.';
38
38
  static flags = {
39
+ 'dry-run': core_1.Flags.boolean({ description: 'Run the command without uploading to S3.' }),
39
40
  root: core_1.Flags.string({ char: 'r', default: '.', description: 'Path to oclif CLI root.', required: true }),
40
41
  };
41
42
  async run() {
@@ -54,7 +55,9 @@ class UploadDeb extends core_1.Command {
54
55
  const cloudKeyBase = (0, upload_util_1.commitAWSDir)(config.pjson.version, buildConfig.gitSha, s3Config);
55
56
  const upload = (file) => {
56
57
  const cloudKey = `${cloudKeyBase}/apt/${file}`;
57
- return aws_1.default.s3.uploadFile(dist(file), { ...S3Options, CacheControl: 'max-age=86400', Key: cloudKey });
58
+ return aws_1.default.s3.uploadFile(dist(file), { ...S3Options, CacheControl: 'max-age=86400', Key: cloudKey }, {
59
+ dryRun: flags['dry-run'],
60
+ });
58
61
  };
59
62
  // apt expects ../apt/dists/versionName/[artifacts] but oclif wants versions/sha/apt/[artifacts]
60
63
  // see https://github.com/oclif/oclif/issues/347 for the AWS-redirect that solves this
@@ -62,7 +65,9 @@ class UploadDeb extends core_1.Command {
62
65
  // with this, the docs are correct. The copies are all done in parallel so it shouldn't be too costly.
63
66
  const uploadWorkaround = (file) => {
64
67
  const cloudKey = `${cloudKeyBase}/apt/./${file}`;
65
- return aws_1.default.s3.uploadFile(dist(file), { ...S3Options, CacheControl: 'max-age=86400', Key: cloudKey });
68
+ return aws_1.default.s3.uploadFile(dist(file), { ...S3Options, CacheControl: 'max-age=86400', Key: cloudKey }, {
69
+ dryRun: flags['dry-run'],
70
+ });
66
71
  };
67
72
  const uploadDeb = async (arch) => {
68
73
  const deb = (0, upload_util_1.templateShortKey)('deb', {
@@ -2,6 +2,7 @@ import { Command, Interfaces } from '@oclif/core';
2
2
  export default class UploadMacos extends Command {
3
3
  static description: string;
4
4
  static flags: {
5
+ 'dry-run': Interfaces.BooleanFlag<boolean>;
5
6
  root: Interfaces.OptionFlag<string, Interfaces.CustomOptions>;
6
7
  targets: Interfaces.OptionFlag<string | undefined, Interfaces.CustomOptions>;
7
8
  };
@@ -36,6 +36,7 @@ const util_1 = require("../../util");
36
36
  class UploadMacos extends core_1.Command {
37
37
  static description = 'Upload macos installers built with `pack macos`.';
38
38
  static flags = {
39
+ 'dry-run': core_1.Flags.boolean({ description: 'Run the command without uploading to S3.' }),
39
40
  root: core_1.Flags.string({ char: 'r', default: '.', description: 'Path to oclif CLI root.', required: true }),
40
41
  targets: core_1.Flags.string({
41
42
  char: 't',
@@ -61,7 +62,9 @@ class UploadMacos extends core_1.Command {
61
62
  const cloudKey = `${cloudKeyBase}/${templateKey}`;
62
63
  const localPkg = dist(`macos/${templateKey}`);
63
64
  if (fs.existsSync(localPkg))
64
- await aws_1.default.s3.uploadFile(localPkg, { ...S3Options, CacheControl: 'max-age=86400', Key: cloudKey });
65
+ await aws_1.default.s3.uploadFile(localPkg, { ...S3Options, CacheControl: 'max-age=86400', Key: cloudKey }, {
66
+ dryRun: flags['dry-run'],
67
+ });
65
68
  else
66
69
  this.error('Cannot find macOS pkg', {
67
70
  suggestions: ['Run "oclif pack macos" before uploading'],
@@ -2,6 +2,7 @@ import { Command, Interfaces } from '@oclif/core';
2
2
  export default class UploadTarballs extends Command {
3
3
  static description: string;
4
4
  static flags: {
5
+ 'dry-run': Interfaces.BooleanFlag<boolean>;
5
6
  root: Interfaces.OptionFlag<string, Interfaces.CustomOptions>;
6
7
  targets: Interfaces.OptionFlag<string | undefined, Interfaces.CustomOptions>;
7
8
  xz: Interfaces.BooleanFlag<boolean>;
@@ -35,6 +35,7 @@ const upload_util_1 = require("../../upload-util");
35
35
  class UploadTarballs extends core_1.Command {
36
36
  static description = 'Upload an oclif CLI to S3.';
37
37
  static flags = {
38
+ 'dry-run': core_1.Flags.boolean({ description: 'Run the command without uploading to S3.' }),
38
39
  root: core_1.Flags.string({ char: 'r', default: '.', description: 'Path to oclif CLI root.', required: true }),
39
40
  targets: core_1.Flags.string({ char: 't', description: 'Comma-separated targets to upload (e.g.: linux-arm,win32-x64).' }),
40
41
  xz: core_1.Flags.boolean({ allowNo: true, description: 'Also upload xz.' }),
@@ -81,6 +82,8 @@ class UploadTarballs extends core_1.Command {
81
82
  CacheControl: 'max-age=604800',
82
83
  ContentType: 'application/gzip',
83
84
  Key: cloudKey,
85
+ }, {
86
+ dryRun: flags['dry-run'],
84
87
  });
85
88
  };
86
89
  const maybeUploadManifest = async () => {
@@ -93,6 +96,8 @@ class UploadTarballs extends core_1.Command {
93
96
  CacheControl: 'max-age=86400',
94
97
  ContentType: 'application/json',
95
98
  Key: cloudKey,
99
+ }, {
100
+ dryRun: flags['dry-run'],
96
101
  });
97
102
  }
98
103
  core_1.ux.warn(`Cannot find buildmanifest ${local}. CLI will not be able to update itself.`);
@@ -2,6 +2,7 @@ import { Command } from '@oclif/core';
2
2
  export default class UploadWin extends Command {
3
3
  static description: string;
4
4
  static flags: {
5
+ 'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
5
6
  root: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
6
7
  targets: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
8
  };
@@ -35,6 +35,7 @@ const upload_util_1 = require("../../upload-util");
35
35
  class UploadWin extends core_1.Command {
36
36
  static description = 'Upload windows installers built with `pack win`.';
37
37
  static flags = {
38
+ 'dry-run': core_1.Flags.boolean({ description: 'Run the command without uploading to S3.' }),
38
39
  root: core_1.Flags.string({ char: 'r', default: '.', description: 'Path to oclif CLI root.', required: true }),
39
40
  targets: core_1.Flags.string({ description: 'Comma-separated targets to pack (e.g.: win32-x64,win32-x86,win32-arm64).' }),
40
41
  };
@@ -71,7 +72,9 @@ class UploadWin extends core_1.Command {
71
72
  const localExe = dist(`win32/${templateKey}`);
72
73
  const cloudKey = `${cloudKeyBase}/${templateKey}`;
73
74
  if (fs.existsSync(localExe))
74
- await aws_1.default.s3.uploadFile(localExe, { ...S3Options, CacheControl: 'max-age=86400', Key: cloudKey });
75
+ await aws_1.default.s3.uploadFile(localExe, { ...S3Options, CacheControl: 'max-age=86400', Key: cloudKey }, {
76
+ dryRun: flags['dry-run'],
77
+ });
75
78
  };
76
79
  await Promise.all([uploadWin('x64'), uploadWin('x86'), uploadWin('arm64')]);
77
80
  (0, log_1.log)(`done uploading windows executables for v${config.version}-${buildConfig.gitSha}`);
@@ -1,5 +1,6 @@
1
1
  import { BuildConfig } from './tarballs';
2
2
  export declare const appendToIndex: (input: {
3
+ dryRun?: boolean;
3
4
  filename: string;
4
5
  maxAge: string;
5
6
  originalUrl: string;
@@ -100,6 +100,8 @@ const appendToIndex = async (input) => {
100
100
  Bucket: s3Config.bucket,
101
101
  CacheControl: maxAge,
102
102
  Key: key,
103
+ }, {
104
+ dryRun: input.dryRun,
103
105
  });
104
106
  // cleans up local fs
105
107
  await fs.remove(jsonFileName);
@@ -381,6 +381,12 @@
381
381
  "allowNo": false,
382
382
  "type": "boolean"
383
383
  },
384
+ "dry-run": {
385
+ "description": "Run the command without uploading to S3 or copying versioned tarballs/installers to channel.",
386
+ "name": "dry-run",
387
+ "allowNo": false,
388
+ "type": "boolean"
389
+ },
384
390
  "ignore-missing": {
385
391
  "description": "Ignore missing tarballs/installers and continue promoting the rest.",
386
392
  "name": "ignore-missing",
@@ -940,6 +946,12 @@
940
946
  "args": {},
941
947
  "description": "Upload deb package built with `pack deb`.",
942
948
  "flags": {
949
+ "dry-run": {
950
+ "description": "Run the command without uploading to S3.",
951
+ "name": "dry-run",
952
+ "allowNo": false,
953
+ "type": "boolean"
954
+ },
943
955
  "root": {
944
956
  "char": "r",
945
957
  "description": "Path to oclif CLI root.",
@@ -972,6 +984,12 @@
972
984
  "args": {},
973
985
  "description": "Upload macos installers built with `pack macos`.",
974
986
  "flags": {
987
+ "dry-run": {
988
+ "description": "Run the command without uploading to S3.",
989
+ "name": "dry-run",
990
+ "allowNo": false,
991
+ "type": "boolean"
992
+ },
975
993
  "root": {
976
994
  "char": "r",
977
995
  "description": "Path to oclif CLI root.",
@@ -1012,6 +1030,12 @@
1012
1030
  "args": {},
1013
1031
  "description": "Upload an oclif CLI to S3.",
1014
1032
  "flags": {
1033
+ "dry-run": {
1034
+ "description": "Run the command without uploading to S3.",
1035
+ "name": "dry-run",
1036
+ "allowNo": false,
1037
+ "type": "boolean"
1038
+ },
1015
1039
  "root": {
1016
1040
  "char": "r",
1017
1041
  "description": "Path to oclif CLI root.",
@@ -1058,6 +1082,12 @@
1058
1082
  "args": {},
1059
1083
  "description": "Upload windows installers built with `pack win`.",
1060
1084
  "flags": {
1085
+ "dry-run": {
1086
+ "description": "Run the command without uploading to S3.",
1087
+ "name": "dry-run",
1088
+ "allowNo": false,
1089
+ "type": "boolean"
1090
+ },
1061
1091
  "root": {
1062
1092
  "char": "r",
1063
1093
  "description": "Path to oclif CLI root.",
@@ -1093,5 +1123,5 @@
1093
1123
  ]
1094
1124
  }
1095
1125
  },
1096
- "version": "4.15.5"
1126
+ "version": "4.15.6"
1097
1127
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "oclif",
3
3
  "description": "oclif: create your own CLI",
4
- "version": "4.15.5",
4
+ "version": "4.15.6",
5
5
  "author": "Salesforce",
6
6
  "bin": {
7
7
  "oclif": "bin/run.js"