heroku 9.1.0-beta.0 → 9.2.0-beta.0

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.
Files changed (32) hide show
  1. package/lib/commands/addons/create.js +5 -0
  2. package/lib/commands/authorizations/create.js +1 -5
  3. package/lib/commands/authorizations/info.js +1 -5
  4. package/lib/commands/authorizations/revoke.js +1 -5
  5. package/lib/commands/authorizations/rotate.js +1 -5
  6. package/lib/commands/authorizations/update.js +1 -5
  7. package/lib/commands/autocomplete/options.js +1 -1
  8. package/lib/commands/ci/index.js +1 -1
  9. package/lib/commands/ci/info.js +1 -1
  10. package/lib/commands/ci/last.js +1 -1
  11. package/lib/commands/ci/rerun.js +1 -1
  12. package/lib/commands/ci/run.d.ts +1 -0
  13. package/lib/commands/ci/run.js +2 -1
  14. package/lib/commands/config/edit.js +1 -1
  15. package/lib/commands/container/push.js +3 -0
  16. package/lib/commands/local/run.js +4 -2
  17. package/lib/commands/pg/backups/schedule.js +6 -12
  18. package/lib/commands/pg/credentials/rotate.d.ts +1 -0
  19. package/lib/commands/pg/credentials/rotate.js +1 -0
  20. package/lib/commands/pg/settings/auto-explain/log-min-duration.d.ts +1 -4
  21. package/lib/commands/pg/settings/auto-explain/log-min-duration.js +1 -1
  22. package/lib/commands/pg/settings/log-min-duration-statement.d.ts +1 -4
  23. package/lib/commands/pg/settings/log-min-duration-statement.js +1 -1
  24. package/lib/commands/ps/scale.js +0 -22
  25. package/lib/commands/ps/type.js +0 -22
  26. package/lib/commands/redis/cli.js +1 -2
  27. package/lib/commands/run/index.js +2 -1
  28. package/lib/lib/ci/interfaces/kolkrabbi.d.ts +1 -1
  29. package/lib/lib/run/helpers.d.ts +1 -0
  30. package/lib/lib/run/helpers.js +13 -1
  31. package/oclif.manifest.json +22 -6
  32. package/package.json +5 -6
@@ -42,12 +42,17 @@ function parseConfig(args) {
42
42
  class Create extends command_1.Command {
43
43
  async run() {
44
44
  var _a;
45
+ this.allowArbitraryFlags = true;
45
46
  const _b = await this.parse(Create), { flags, args } = _b, restParse = tslib_1.__rest(_b, ["flags", "args"]);
46
47
  const { app, name, as, wait, confirm } = flags;
47
48
  const servicePlan = args['service:plan'];
48
49
  const argv = restParse.argv
49
50
  // oclif duplicates specified args in argv
50
51
  .filter(arg => arg !== servicePlan);
52
+ if (restParse.nonExistentFlags && restParse.nonExistentFlags.length > 0) {
53
+ process.stderr.write(` ${color_1.default.yellow('›')} For example: ${color_1.default.cyan(`heroku addons:create -a ${app} ${restParse.raw[0].input} -- ${restParse.nonExistentFlags.join(' ')}`)}`);
54
+ process.stderr.write(` ${color_1.default.yellow('›')} See https://devcenter.heroku.com/changelog-items/2925 for more info.\n`);
55
+ }
51
56
  const config = parseConfig(argv);
52
57
  let addon;
53
58
  try {
@@ -8,7 +8,7 @@ class AuthorizationsCreate extends command_1.Command {
8
8
  async run() {
9
9
  const { flags } = await this.parse(AuthorizationsCreate);
10
10
  core_1.ux.action.start('Creating OAuth Authorization');
11
- const { body: auth, headers } = await this.heroku.post('/oauth/authorizations', {
11
+ const { body: auth } = await this.heroku.post('/oauth/authorizations', {
12
12
  body: {
13
13
  description: flags.description,
14
14
  scope: flags.scope ? flags.scope.split(',') : undefined,
@@ -16,10 +16,6 @@ class AuthorizationsCreate extends command_1.Command {
16
16
  },
17
17
  });
18
18
  core_1.ux.action.stop();
19
- const apiWarnings = headers['warning-message'] || '';
20
- if (apiWarnings) {
21
- core_1.ux.warn(apiWarnings);
22
- }
23
19
  if (flags.short) {
24
20
  core_1.ux.log(auth.access_token && auth.access_token.token);
25
21
  }
@@ -6,11 +6,7 @@ const authorizations_1 = require("../../lib/authorizations/authorizations");
6
6
  class AuthorizationsInfo extends command_1.Command {
7
7
  async run() {
8
8
  const { args, flags } = await this.parse(AuthorizationsInfo);
9
- const { body: authentication, headers } = await this.heroku.get(`/oauth/authorizations/${args.id}`);
10
- const apiWarnings = headers['warning-message'] || '';
11
- if (apiWarnings) {
12
- core_1.ux.warn(apiWarnings);
13
- }
9
+ const { body: authentication } = await this.heroku.get(`/oauth/authorizations/${args.id}`);
14
10
  if (flags.json) {
15
11
  core_1.ux.styledJSON(authentication);
16
12
  }
@@ -7,11 +7,7 @@ class AuthorizationsRevoke extends command_1.Command {
7
7
  async run() {
8
8
  const { args } = await this.parse(AuthorizationsRevoke);
9
9
  core_1.ux.action.start('Revoking OAuth Authorization');
10
- const { body: auth, headers } = await this.heroku.delete(`/oauth/authorizations/${encodeURIComponent(args.id)}`);
11
- const apiWarnings = headers['warning-message'] || '';
12
- if (apiWarnings) {
13
- core_1.ux.warn(apiWarnings);
14
- }
10
+ const { body: auth } = await this.heroku.delete(`/oauth/authorizations/${encodeURIComponent(args.id)}`);
15
11
  core_1.ux.action.stop(`done, revoked authorization from ${color_1.default.cyan(auth.description)}`);
16
12
  }
17
13
  }
@@ -7,11 +7,7 @@ class AuthorizationsRotate extends command_1.Command {
7
7
  async run() {
8
8
  const { args } = await this.parse(AuthorizationsRotate);
9
9
  core_1.ux.action.start('Rotating OAuth Authorization');
10
- const { body: authorization, headers } = await this.heroku.post(`/oauth/authorizations/${encodeURIComponent(args.id)}/actions/regenerate-tokens`);
11
- const apiWarnings = headers['warning-message'] || '';
12
- if (apiWarnings) {
13
- core_1.ux.warn(apiWarnings);
14
- }
10
+ const { body: authorization } = await this.heroku.post(`/oauth/authorizations/${encodeURIComponent(args.id)}/actions/regenerate-tokens`);
15
11
  core_1.ux.action.stop();
16
12
  (0, authorizations_1.display)(authorization);
17
13
  }
@@ -14,16 +14,12 @@ class AuthorizationsUpdate extends command_1.Command {
14
14
  secret: flags['client-secret'],
15
15
  };
16
16
  }
17
- const { body: authentication, headers } = await this.heroku.patch(`/oauth/authorizations/${args.id}`, {
17
+ const { body: authentication } = await this.heroku.patch(`/oauth/authorizations/${args.id}`, {
18
18
  body: {
19
19
  description: flags.description,
20
20
  client,
21
21
  },
22
22
  });
23
- const apiWarnings = headers['warning-message'] || '';
24
- if (apiWarnings) {
25
- core_1.ux.warn(apiWarnings);
26
- }
27
23
  core_1.ux.action.stop();
28
24
  (0, authorizations_1.display)(authentication);
29
25
  }
@@ -16,7 +16,7 @@ class Options extends base_1.AutocompleteBase {
16
16
  // *args: refers to a Command's static args
17
17
  // *argv: refers to the current execution's command line positional input
18
18
  // Klass: (class) Command class
19
- // completion: (object) object with data/methods to build/retrive options from cache
19
+ // completion: (object) object with data/methods to build/retrieve options from cache
20
20
  // curPosition*: the current argv position the shell is trying to complete
21
21
  // options: (string) white-space separated list of values for the shell to use for completion
22
22
  async run() {
@@ -18,7 +18,7 @@ CiIndex.examples = [
18
18
  `,
19
19
  ];
20
20
  CiIndex.flags = {
21
- app: command_1.flags.string({ char: 'a', description: 'app name' }),
21
+ app: command_1.flags.app(),
22
22
  remote: command_1.flags.remote(),
23
23
  watch: command_1.flags.boolean({ description: 'keep running and watch for new and update tests', required: false }),
24
24
  pipeline: command_1.flags.pipeline({ required: false }),
@@ -20,7 +20,7 @@ CiInfo.examples = [
20
20
  `,
21
21
  ];
22
22
  CiInfo.flags = {
23
- app: command_1.flags.string({ char: 'a', description: 'app name' }),
23
+ app: command_1.flags.app(),
24
24
  remote: command_1.flags.remote(),
25
25
  node: command_1.flags.string({ description: 'the node number to show its setup and output', required: false }),
26
26
  pipeline: command_1.flags.pipeline({ required: false }),
@@ -25,7 +25,7 @@ CiLast.examples = [
25
25
  `,
26
26
  ];
27
27
  CiLast.flags = {
28
- app: command_1.flags.string({ char: 'a', description: 'app name' }),
28
+ app: command_1.flags.app(),
29
29
  remote: command_1.flags.remote(),
30
30
  node: command_1.flags.string({ description: 'the node number to show its setup and output', required: false }),
31
31
  pipeline: command_1.flags.pipeline({ required: false }),
@@ -45,7 +45,7 @@ CiReRun.examples = [
45
45
  `,
46
46
  ];
47
47
  CiReRun.flags = {
48
- app: command_1.flags.string({ char: 'a', description: 'app name' }),
48
+ app: command_1.flags.app(),
49
49
  remote: command_1.flags.remote(),
50
50
  pipeline: command_1.flags.pipeline({ required: false }),
51
51
  };
@@ -4,6 +4,7 @@ export default class CiRun extends Command {
4
4
  static examples: string[];
5
5
  static flags: {
6
6
  app: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
7
+ remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
7
8
  pipeline: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
8
9
  };
9
10
  run(): Promise<void>;
@@ -37,6 +37,7 @@ CiRun.examples = [
37
37
  `,
38
38
  ];
39
39
  CiRun.flags = {
40
- app: command_1.flags.string({ char: 'a', description: 'app name' }),
40
+ app: command_1.flags.app(),
41
+ remote: command_1.flags.remote(),
41
42
  pipeline: command_1.flags.pipeline({ required: false }),
42
43
  };
@@ -20,7 +20,7 @@ function removeDeleted(newConfig, original) {
20
20
  for (const k of Object.keys(original)) {
21
21
  // The api accepts empty strings
22
22
  // as valid env var values
23
- // In JS an empty string is falsey
23
+ // In JS an empty string is false
24
24
  if (!newConfig[k] && newConfig[k] !== '')
25
25
  newConfig[k] = null;
26
26
  }
@@ -15,6 +15,9 @@ async function selectJobs(jobs, processTypes, recursive) {
15
15
  if (processTypes.length > 0) {
16
16
  filteredJobs = DockerHelper.filterByProcessType(jobs, processTypes);
17
17
  }
18
+ else {
19
+ filteredJobs = jobs;
20
+ }
18
21
  selectedJobs = await DockerHelper.chooseJobs(filteredJobs);
19
22
  }
20
23
  else if (jobs.standard) {
@@ -4,12 +4,14 @@ const completions_1 = require("@heroku-cli/command/lib/completions");
4
4
  const core_1 = require("@oclif/core");
5
5
  const color_1 = require("@heroku-cli/color");
6
6
  const fork_foreman_1 = require("../../lib/local/fork-foreman");
7
+ const helpers_1 = require("../../lib/run/helpers");
7
8
  const fs = require("fs");
8
9
  class Run extends core_1.Command {
9
10
  async run() {
10
11
  const execArgv = ['run'];
11
12
  const { argv, flags } = await this.parse(Run);
12
- if (argv.length === 0) {
13
+ const userArgvInputOrder = (0, helpers_1.revertSortedArgs)(process.argv, argv);
14
+ if (userArgvInputOrder.length === 0) {
13
15
  const errorMessage = 'Usage: heroku local:run [COMMAND]\nMust specify command to run';
14
16
  this.error(errorMessage, { exit: -1 });
15
17
  }
@@ -22,7 +24,7 @@ class Run extends core_1.Command {
22
24
  if (flags.port)
23
25
  execArgv.push('--port', flags.port);
24
26
  execArgv.push('--'); // disable node-foreman flag parsing
25
- execArgv.push(...argv); // eslint-disable-line unicorn/no-array-push-push
27
+ execArgv.push(...userArgvInputOrder); // eslint-disable-line unicorn/no-array-push-push
26
28
  await (0, fork_foreman_1.fork)(execArgv);
27
29
  }
28
30
  }
@@ -24,18 +24,12 @@ class Schedule extends command_1.Command {
24
24
  constructor() {
25
25
  super(...arguments);
26
26
  this.parseDate = function (at) {
27
- const m = at.match(/^([0-2]?[0-9]):00 ?(\S*)$/);
28
- if (!m)
29
- throw new Error("Invalid schedule format: expected --at '[HOUR]:00 [TIMEZONE]'");
30
- const [, hour, timezone] = m;
31
- let scheduledTZ = TZ[timezone.toUpperCase()];
32
- if (!scheduledTZ) {
33
- scheduledTZ = 'UTC';
34
- if (timezone) {
35
- core_1.ux.warn(`Unknown timezone ${color_1.default.yellow(timezone)}. Defaulting to UTC.`);
36
- }
27
+ const m = at.match(/^(0?\d|1\d|2[0-3]):00 ?(\S*)$/);
28
+ if (m) {
29
+ const [, hour, timezone] = m;
30
+ return { hour, timezone: TZ[timezone.toUpperCase()] || timezone || 'UTC' };
37
31
  }
38
- return { hour, timezone: scheduledTZ };
32
+ return core_1.ux.error("Invalid schedule format: expected --at '[HOUR]:00 [TIMEZONE]'", { exit: 1 });
39
33
  };
40
34
  }
41
35
  async run() {
@@ -48,7 +42,7 @@ class Schedule extends command_1.Command {
48
42
  const db = attachment.addon;
49
43
  const at = color_1.default.cyan(`${schedule.hour}:00 ${schedule.timezone}`);
50
44
  const pgResponse = await this.heroku.get(`/client/v11/databases/${db.id}`, { hostname: (0, host_1.default)() })
51
- .catch(error => {
45
+ .catch((error) => {
52
46
  if (error.statusCode !== 404)
53
47
  throw error;
54
48
  core_1.ux.error(`${color_1.default.yellow(db.name)} is not yet provisioned.\nRun ${color_1.default.cyan.bold('heroku addons:wait')} to wait until the db is provisioned.`, { exit: 1 });
@@ -8,6 +8,7 @@ export default class Rotate extends Command {
8
8
  confirm: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
9
9
  force: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
10
10
  app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
11
+ remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
11
12
  };
12
13
  static args: {
13
14
  database: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
@@ -76,6 +76,7 @@ Rotate.flags = {
76
76
  confirm: command_1.flags.string({ char: 'c' }),
77
77
  force: command_1.flags.boolean({ description: 'forces rotating the targeted credentials' }),
78
78
  app: command_1.flags.app({ required: true }),
79
+ remote: command_1.flags.remote(),
79
80
  };
80
81
  Rotate.args = {
81
82
  database: core_1.Args.string(),
@@ -5,10 +5,7 @@ export default class LogMinDuration extends PGSettingsCommand {
5
5
  static description: string;
6
6
  static args: {
7
7
  database: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
8
- value: import("@oclif/core/lib/interfaces/parser").Arg<number | undefined, {
9
- min?: number | undefined;
10
- max?: number | undefined;
11
- }>;
8
+ value: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
12
9
  };
13
10
  protected settingKey: SettingKey;
14
11
  protected convertValue(val: string): number;
@@ -29,5 +29,5 @@ LogMinDuration.description = (0, tsheredoc_1.default)(`
29
29
  `);
30
30
  LogMinDuration.args = {
31
31
  database: core_1.Args.string(),
32
- value: core_1.Args.integer(),
32
+ value: core_1.Args.string(),
33
33
  };
@@ -4,10 +4,7 @@ export default class LogMinDurationStatement extends PGSettingsCommand {
4
4
  static description: string;
5
5
  static args: {
6
6
  database: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
7
- value: import("@oclif/core/lib/interfaces/parser").Arg<number | undefined, {
8
- min?: number | undefined;
9
- max?: number | undefined;
10
- }>;
7
+ value: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
11
8
  };
12
9
  protected settingKey: SettingKey;
13
10
  protected convertValue(val: unknown): number;
@@ -29,5 +29,5 @@ LogMinDurationStatement.description = (0, tsheredoc_1.default)(`
29
29
  `);
30
30
  LogMinDurationStatement.args = {
31
31
  database: core_1.Args.string(),
32
- value: core_1.Args.integer(),
32
+ value: core_1.Args.string(),
33
33
  };
@@ -14,16 +14,6 @@ class Scale extends command_1.Command {
14
14
  const _a = await this.parse(Scale), { flags } = _a, restParse = tslib_1.__rest(_a, ["flags"]);
15
15
  const argv = restParse.argv;
16
16
  const { app } = flags;
17
- // will remove this flag once we have
18
- // successfully launched larger dyno sizes
19
- let isLargerDyno = false;
20
- const { body: largerDynoFeatureFlag } = await this.heroku.get('/account/features/frontend-larger-dynos')
21
- .catch((error) => {
22
- if (error.statusCode === 404) {
23
- return { body: { enabled: false } };
24
- }
25
- throw error;
26
- });
27
17
  function parse(args) {
28
18
  return (0, lodash_1.compact)(args.map(arg => {
29
19
  const change = arg.match(/^([\w-]+)([=+-]\d+)(?::([\w-]+))?$/);
@@ -36,18 +26,6 @@ class Scale extends command_1.Command {
36
26
  }));
37
27
  }
38
28
  const changes = parse(argv);
39
- // checks for larger dyno sizes
40
- // if the feature is not enabled
41
- if (!largerDynoFeatureFlag.enabled) {
42
- changes.forEach(({ size }) => {
43
- const largerDynoNames = /^(?!standard-[12]x$)(performance|private|shield)-(l-ram|xl|2xl)$/i;
44
- isLargerDyno = largerDynoNames.test(size);
45
- if (isLargerDyno) {
46
- const availableDynoSizes = 'eco, basic, standard-1x, standard-2x, performance-m, performance-l, private-s, private-m, private-l, shield-s, shield-m, shield-l';
47
- core_1.ux.error(`No such size as ${size}. Use ${availableDynoSizes}.`, { exit: 1 });
48
- }
49
- });
50
- }
51
29
  if (changes.length === 0) {
52
30
  const { body: formation } = await this.heroku.get(`/apps/${app}/formation`);
53
31
  const { body: appProps } = await this.heroku.get(`/apps/${app}`);
@@ -95,16 +95,6 @@ class Type extends command_1.Command {
95
95
  const _a = await this.parse(Type), { flags } = _a, restParse = tslib_1.__rest(_a, ["flags"]);
96
96
  const argv = restParse.argv;
97
97
  const { app } = flags;
98
- // will remove this flag once we have
99
- // successfully launched larger dyno sizes
100
- let isLargerDyno = false;
101
- const { body: largerDynoFeatureFlag } = await this.heroku.get('/account/features/frontend-larger-dynos')
102
- .catch((error) => {
103
- if (error.statusCode === 404) {
104
- return { body: { enabled: false } };
105
- }
106
- throw error;
107
- });
108
98
  const parse = async () => {
109
99
  if (!argv || argv.length === 0)
110
100
  return [];
@@ -124,18 +114,6 @@ class Type extends command_1.Command {
124
114
  return formation.map(p => ({ type: p.type, size: argv[0] }));
125
115
  };
126
116
  const changes = await parse();
127
- // checks for larger dyno sizes
128
- // if the feature is not enabled
129
- if (!largerDynoFeatureFlag.enabled) {
130
- changes.forEach(({ size }) => {
131
- const largerDynoNames = /^(?!standard-[12]x$)(performance|private|shield)-(l-ram|xl|2xl)$/i;
132
- isLargerDyno = largerDynoNames.test(size);
133
- if (isLargerDyno) {
134
- const availableDynoSizes = 'eco, basic, standard-1x, standard-2x, performance-m, performance-l, private-s, private-m, private-l, shield-s, shield-m, shield-l';
135
- core_1.ux.error(`No such size as ${size}. Use ${availableDynoSizes}.`, { exit: 1 });
136
- }
137
- });
138
- }
139
117
  if (changes.length > 0) {
140
118
  core_1.ux.action.start(`Scaling dynos on ${color_1.default.magenta(app)}`);
141
119
  await this.heroku.patch(`/apps/${app}/formation`, { body: { updates: changes } });
@@ -99,7 +99,6 @@ async function bastionConnect(uri, bastions, config, preferNativeTls) {
99
99
  const tunnel = await new Promise(resolve => {
100
100
  var _a;
101
101
  const ssh2 = new ssh2_1.Client();
102
- resolve(ssh2);
103
102
  ssh2.once('ready', () => resolve(ssh2));
104
103
  ssh2.connect({
105
104
  host: bastions.split(',')[0],
@@ -108,7 +107,7 @@ async function bastionConnect(uri, bastions, config, preferNativeTls) {
108
107
  });
109
108
  });
110
109
  const localPort = await portfinder.getPortPromise({ startPort: 49152, stopPort: 65535 });
111
- const stream = await (0, node_util_1.promisify)(tunnel.forwardOut)('localhost', localPort, uri.hostname, Number.parseInt(uri.port, 10));
110
+ const stream = await (0, node_util_1.promisify)(tunnel.forwardOut.bind(tunnel))('localhost', localPort, uri.hostname, Number.parseInt(uri.port, 10));
112
111
  let client = stream;
113
112
  if (preferNativeTls) {
114
113
  client = tls.connect({
@@ -10,12 +10,13 @@ const debug = (0, debug_1.default)('heroku:run');
10
10
  class Run extends command_1.Command {
11
11
  async run() {
12
12
  const { argv, flags } = await this.parse(Run);
13
+ const userArgvInputOrder = (0, helpers_1.revertSortedArgs)(process.argv, argv);
13
14
  const opts = {
14
15
  'exit-code': flags['exit-code'],
15
16
  'no-tty': flags['no-tty'],
16
17
  app: flags.app,
17
18
  attach: true,
18
- command: (0, helpers_1.buildCommand)(argv),
19
+ command: (0, helpers_1.buildCommand)(userArgvInputOrder),
19
20
  env: flags.env,
20
21
  heroku: this.heroku,
21
22
  listen: flags.listen,
@@ -240,7 +240,7 @@ export interface HerokuPlatformApiPipeline {
240
240
  [k: string]: any;
241
241
  }
242
242
  /**
243
- * A Repository is a reference to a remote DVCs codebase
243
+ * A Repository is a reference to a remote DVCS codebase
244
244
  */
245
245
  export interface KolkrabbiApiRepositories {
246
246
  /**
@@ -1,2 +1,3 @@
1
+ export declare function revertSortedArgs(processArgs: Array<string>, argv: Array<string>): string[];
1
2
  export declare function buildCommand(args: Array<string>): string;
2
3
  export declare function buildEnvFromFlag(flag: string): {};
@@ -1,8 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildEnvFromFlag = exports.buildCommand = void 0;
3
+ exports.buildEnvFromFlag = exports.buildCommand = exports.revertSortedArgs = void 0;
4
4
  /* eslint-disable @typescript-eslint/ban-ts-comment */
5
5
  const core_1 = require("@oclif/core");
6
+ // this function exists because oclif sorts argv
7
+ function revertSortedArgs(processArgs, argv) {
8
+ const originalInputOrder = [];
9
+ // this reorders the arguments in the order the user inputted
10
+ for (const processArg of processArgs) {
11
+ if (argv.includes(processArg)) {
12
+ originalInputOrder.push(processArg);
13
+ }
14
+ }
15
+ return originalInputOrder;
16
+ }
17
+ exports.revertSortedArgs = revertSortedArgs;
6
18
  function buildCommand(args) {
7
19
  if (args.length === 1) {
8
20
  // do not add quotes around arguments if there is only one argument
@@ -3158,7 +3158,7 @@
3158
3158
  "flags": {
3159
3159
  "app": {
3160
3160
  "char": "a",
3161
- "description": "app name",
3161
+ "description": "app to run command against",
3162
3162
  "name": "app",
3163
3163
  "hasDynamicHelp": false,
3164
3164
  "multiple": false,
@@ -3226,7 +3226,7 @@
3226
3226
  "flags": {
3227
3227
  "app": {
3228
3228
  "char": "a",
3229
- "description": "app name",
3229
+ "description": "app to run command against",
3230
3230
  "name": "app",
3231
3231
  "hasDynamicHelp": false,
3232
3232
  "multiple": false,
@@ -3283,7 +3283,7 @@
3283
3283
  "flags": {
3284
3284
  "app": {
3285
3285
  "char": "a",
3286
- "description": "app name",
3286
+ "description": "app to run command against",
3287
3287
  "name": "app",
3288
3288
  "hasDynamicHelp": false,
3289
3289
  "multiple": false,
@@ -3427,7 +3427,7 @@
3427
3427
  "flags": {
3428
3428
  "app": {
3429
3429
  "char": "a",
3430
- "description": "app name",
3430
+ "description": "app to run command against",
3431
3431
  "name": "app",
3432
3432
  "hasDynamicHelp": false,
3433
3433
  "multiple": false,
@@ -3476,12 +3476,20 @@
3476
3476
  "flags": {
3477
3477
  "app": {
3478
3478
  "char": "a",
3479
- "description": "app name",
3479
+ "description": "app to run command against",
3480
3480
  "name": "app",
3481
3481
  "hasDynamicHelp": false,
3482
3482
  "multiple": false,
3483
3483
  "type": "option"
3484
3484
  },
3485
+ "remote": {
3486
+ "char": "r",
3487
+ "description": "git remote of app to use",
3488
+ "name": "remote",
3489
+ "hasDynamicHelp": false,
3490
+ "multiple": false,
3491
+ "type": "option"
3492
+ },
3485
3493
  "pipeline": {
3486
3494
  "char": "p",
3487
3495
  "description": "name of pipeline",
@@ -11680,6 +11688,14 @@
11680
11688
  "hasDynamicHelp": false,
11681
11689
  "multiple": false,
11682
11690
  "type": "option"
11691
+ },
11692
+ "remote": {
11693
+ "char": "r",
11694
+ "description": "git remote of app to use",
11695
+ "name": "remote",
11696
+ "hasDynamicHelp": false,
11697
+ "multiple": false,
11698
+ "type": "option"
11683
11699
  }
11684
11700
  },
11685
11701
  "hasDynamicHelp": false,
@@ -13763,5 +13779,5 @@
13763
13779
  ]
13764
13780
  }
13765
13781
  },
13766
- "version": "9.1.0-beta.0"
13782
+ "version": "9.2.0-beta.0"
13767
13783
  }
package/package.json CHANGED
@@ -1,15 +1,14 @@
1
1
  {
2
2
  "name": "heroku",
3
3
  "description": "CLI to interact with Heroku",
4
- "version": "9.1.0-beta.0",
4
+ "version": "9.2.0-beta.0",
5
5
  "author": "Heroku",
6
6
  "bin": "./bin/run",
7
7
  "bugs": "https://github.com/heroku/cli/issues",
8
8
  "dependencies": {
9
9
  "@heroku-cli/color": "2.0.1",
10
- "@heroku-cli/command": "^11.1.2",
10
+ "@heroku-cli/command": "^11.3.0",
11
11
  "@heroku-cli/notifications": "^1.2.4",
12
- "@heroku-cli/plugin-ps": "^8.1.7",
13
12
  "@heroku-cli/plugin-ps-exec": "^2.4.0",
14
13
  "@heroku-cli/schema": "^1.0.25",
15
14
  "@heroku/buildpack-registry": "^1.0.1",
@@ -46,7 +45,7 @@
46
45
  "execa": "5.1.1",
47
46
  "filesize": "^10.1.2",
48
47
  "foreman": "^3.0.1",
49
- "fs-extra": "7.0.1",
48
+ "fs-extra": "^9.1",
50
49
  "github-url-to-object": "^4.0.4",
51
50
  "glob": "^10.3.10",
52
51
  "got": "^11.8.6",
@@ -113,7 +112,6 @@
113
112
  "@types/validator": "^10.9.0",
114
113
  "@types/write-json-file": "^3.2.1",
115
114
  "@types/ws": "^6.0.1",
116
- "aws-sdk": "^2.421.0",
117
115
  "bats": "^1.1.0",
118
116
  "chai": "^4.4.1",
119
117
  "chai-as-promised": "^7.1.1",
@@ -375,6 +373,7 @@
375
373
  "repository": "heroku/cli",
376
374
  "scripts": {
377
375
  "build": "rm -rf lib && tsc",
376
+ "build:dev": "rm -rf lib && tsc --sourcemap",
378
377
  "lint": "eslint . --ext .ts --config ../../.eslintrc --ignore-path ../../.eslintignore-lib",
379
378
  "postpublish": "rm -f oclif.manifest.json",
380
379
  "prepack": "yarn run build && oclif manifest",
@@ -389,5 +388,5 @@
389
388
  "version": "oclif readme --multi && git add README.md ../../docs"
390
389
  },
391
390
  "types": "lib/index.d.ts",
392
- "gitHead": "c12640b407703c9d326c8cc6808205ce4646b315"
391
+ "gitHead": "ac35e74832509b6bb19a1d43a57a370cc2f1f674"
393
392
  }