@capgo/cli 4.0.12 → 4.0.13

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.
@@ -1,37 +1,39 @@
1
- import { program } from 'commander';
2
- import * as p from '@clack/prompts';
3
- import { checkAppExistsAndHasPermissionErr } from '../api/app';
4
- import { getActiveChannels, displayChannels } from '../api/channels';
5
- import { OptionsBase, findSavedKey, getConfig, createSupabaseClient, verifyUser, useLogSnag } from '../utils';
6
-
7
- export const listChannels = async (appId: string, options: OptionsBase) => {
8
- p.intro(`List channels`);
1
+ import process from 'node:process'
2
+ import { program } from 'commander'
3
+ import * as p from '@clack/prompts'
4
+ import { checkAppExistsAndHasPermissionErr } from '../api/app'
5
+ import { displayChannels, getActiveChannels } from '../api/channels'
6
+ import type { OptionsBase } from '../utils'
7
+ import { createSupabaseClient, findSavedKey, getConfig, useLogSnag, verifyUser } from '../utils'
8
+
9
+ export async function listChannels(appId: string, options: OptionsBase) {
10
+ p.intro(`List channels`)
9
11
  options.apikey = options.apikey || findSavedKey()
10
- const config = await getConfig();
12
+ const config = await getConfig()
11
13
  appId = appId || config?.app?.appId
12
14
  const snag = useLogSnag()
13
15
 
14
- if (!options.apikey) {
15
- p.log.error("Missing API key, you need to provide a API key to upload your bundle");
16
- }
16
+ if (!options.apikey)
17
+ p.log.error('Missing API key, you need to provide a API key to upload your bundle')
18
+
17
19
  if (!appId) {
18
- p.log.error("Missing argument, you need to provide a appId, or be in a capacitor project");
19
- program.error('');
20
+ p.log.error('Missing argument, you need to provide a appId, or be in a capacitor project')
21
+ program.error('')
20
22
  }
21
23
  const supabase = await createSupabaseClient(options.apikey)
22
24
 
23
- const userId = await verifyUser(supabase, options.apikey, ['write', 'all', 'read', 'upload']);
25
+ const userId = await verifyUser(supabase, options.apikey, ['write', 'all', 'read', 'upload'])
24
26
  // Check we have app access to this appId
25
- await checkAppExistsAndHasPermissionErr(supabase, options.apikey, appId);
27
+ await checkAppExistsAndHasPermissionErr(supabase, options.apikey, appId)
26
28
 
27
- p.log.info(`Querying available channels in Capgo`);
29
+ p.log.info(`Querying available channels in Capgo`)
28
30
 
29
31
  // Get all active app versions we might possibly be able to cleanup
30
- const allVersions = await getActiveChannels(supabase, appId);
32
+ const allVersions = await getActiveChannels(supabase, appId)
31
33
 
32
- p.log.info(`Active channels in Capgo: ${allVersions?.length}`);
34
+ p.log.info(`Active channels in Capgo: ${allVersions?.length}`)
33
35
 
34
- displayChannels(allVersions);
36
+ displayChannels(allVersions)
35
37
  await snag.track({
36
38
  channel: 'channel',
37
39
  event: 'List channel',
@@ -42,6 +44,6 @@ export const listChannels = async (appId: string, options: OptionsBase) => {
42
44
  },
43
45
  notify: false,
44
46
  }).catch()
45
- p.outro(`Done ✅`);
47
+ p.outro(`Done ✅`)
46
48
  process.exit()
47
49
  }
@@ -1,69 +1,78 @@
1
- import { program } from 'commander';
2
- import * as p from '@clack/prompts';
3
- import { Database } from '../types/supabase.types';
4
- import { checkAppExistsAndHasPermissionErr } from "../api/app";
5
- import {
1
+ import process from 'node:process'
2
+ import { program } from 'commander'
3
+ import * as p from '@clack/prompts'
4
+ import type { Database } from '../types/supabase.types'
5
+ import { checkAppExistsAndHasPermissionErr } from '../api/app'
6
+ import type {
6
7
  OptionsBase,
7
- getConfig, createSupabaseClient, updateOrCreateChannel,
8
- formatError, findSavedKey, checkPlanValid, useLogSnag, verifyUser
9
- } from '../utils';
8
+ } from '../utils'
9
+ import {
10
+ checkPlanValid,
11
+ createSupabaseClient,
12
+ findSavedKey,
13
+ formatError,
14
+ getConfig,
15
+ updateOrCreateChannel,
16
+ useLogSnag,
17
+ verifyUser,
18
+ } from '../utils'
10
19
 
11
20
  interface Options extends OptionsBase {
12
- bundle: string;
13
- state?: string;
14
- downgrade?: boolean;
15
- latest?: boolean;
16
- upgrade?: boolean;
17
- ios?: boolean;
18
- android?: boolean;
19
- selfAssign?: boolean,
20
- disableAutoUpdate: string,
21
- channel?: string;
21
+ bundle: string
22
+ state?: string
23
+ downgrade?: boolean
24
+ latest?: boolean
25
+ upgrade?: boolean
26
+ ios?: boolean
27
+ android?: boolean
28
+ selfAssign?: boolean
29
+ disableAutoUpdate: string
30
+ channel?: string
22
31
  }
23
32
 
24
33
  const disableAutoUpdatesPossibleOptions = ['major', 'minor', 'metadata', 'none']
25
34
 
26
- export const setChannel = async (channel: string, appId: string, options: Options) => {
27
- p.intro(`Set channel`);
35
+ export async function setChannel(channel: string, appId: string, options: Options) {
36
+ p.intro(`Set channel`)
28
37
  options.apikey = options.apikey || findSavedKey()
29
- const config = await getConfig();
38
+ const config = await getConfig()
30
39
  appId = appId || config?.app?.appId
31
40
  const snag = useLogSnag()
32
41
 
33
42
  if (!options.apikey) {
34
- p.log.error("Missing API key, you need to provide a API key to upload your bundle");
35
- program.error('');
43
+ p.log.error('Missing API key, you need to provide a API key to upload your bundle')
44
+ program.error('')
36
45
  }
37
46
  if (!appId) {
38
- p.log.error("Missing argument, you need to provide a appId, or be in a capacitor project");
39
- program.error('');
47
+ p.log.error('Missing argument, you need to provide a appId, or be in a capacitor project')
48
+ program.error('')
40
49
  }
41
50
  const supabase = await createSupabaseClient(options.apikey)
42
51
 
43
- const userId = await verifyUser(supabase, options.apikey, ['write', 'all']);
52
+ const userId = await verifyUser(supabase, options.apikey, ['write', 'all'])
44
53
  // Check we have app access to this appId
45
- await checkAppExistsAndHasPermissionErr(supabase, options.apikey, appId);
54
+ await checkAppExistsAndHasPermissionErr(supabase, options.apikey, appId)
46
55
 
47
- const { bundle, latest, downgrade, upgrade, ios, android, selfAssign, state, disableAutoUpdate } = options;
56
+ const { bundle, latest, downgrade, upgrade, ios, android, selfAssign, state, disableAutoUpdate } = options
48
57
  if (!channel) {
49
- p.log.error("Missing argument, you need to provide a channel");
50
- program.error('');
58
+ p.log.error('Missing argument, you need to provide a channel')
59
+ program.error('')
51
60
  }
52
61
  if (latest && bundle) {
53
- p.log.error("Cannot set latest and bundle at the same time");
54
- program.error('');
62
+ p.log.error('Cannot set latest and bundle at the same time')
63
+ program.error('')
55
64
  }
56
- if (bundle == null &&
57
- state == null &&
58
- latest == null &&
59
- downgrade == null &&
60
- upgrade == null &&
61
- ios == null &&
62
- android == null &&
63
- selfAssign == null &&
64
- disableAutoUpdate == null) {
65
- p.log.error("Missing argument, you need to provide a option to set");
66
- program.error('');
65
+ if (bundle == null
66
+ && state == null
67
+ && latest == null
68
+ && downgrade == null
69
+ && upgrade == null
70
+ && ios == null
71
+ && android == null
72
+ && selfAssign == null
73
+ && disableAutoUpdate == null) {
74
+ p.log.error('Missing argument, you need to provide a option to set')
75
+ program.error('')
67
76
  }
68
77
  try {
69
78
  await checkPlanValid(supabase, userId, appId, options.apikey)
@@ -84,33 +93,33 @@ export const setChannel = async (channel: string, appId: string, options: Option
84
93
  .eq('deleted', false)
85
94
  .single()
86
95
  if (vError || !data) {
87
- p.log.error(`Cannot find version ${bundleVersion}`);
88
- program.error('');
96
+ p.log.error(`Cannot find version ${bundleVersion}`)
97
+ program.error('')
89
98
  }
90
- p.log.info(`Set ${appId} channel: ${channel} to @${bundleVersion}`);
99
+ p.log.info(`Set ${appId} channel: ${channel} to @${bundleVersion}`)
91
100
  channelPayload.version = data.id
92
101
  }
93
102
  if (state != null) {
94
- if (state === 'public' || state === 'private') {
95
- p.log.info(`Set ${appId} channel: ${channel} to public or private is deprecated, use default or normal instead`);
96
- }
97
- p.log.info(`Set ${appId} channel: ${channel} to ${state === 'public' || state === 'default' ? 'default' : 'normal'}`);
103
+ if (state === 'public' || state === 'private')
104
+ p.log.info(`Set ${appId} channel: ${channel} to public or private is deprecated, use default or normal instead`)
105
+
106
+ p.log.info(`Set ${appId} channel: ${channel} to ${state === 'public' || state === 'default' ? 'default' : 'normal'}`)
98
107
  channelPayload.public = state === 'public' || state === 'default'
99
108
  }
100
109
  if (downgrade != null) {
101
- p.log.info(`Set ${appId} channel: ${channel} to ${downgrade ? 'allow' : 'disallow'} downgrade`);
110
+ p.log.info(`Set ${appId} channel: ${channel} to ${downgrade ? 'allow' : 'disallow'} downgrade`)
102
111
  channelPayload.disableAutoUpdateUnderNative = !downgrade
103
112
  }
104
113
  if (ios != null) {
105
- p.log.info(`Set ${appId} channel: ${channel} to ${ios ? 'allow' : 'disallow'} ios update`);
114
+ p.log.info(`Set ${appId} channel: ${channel} to ${ios ? 'allow' : 'disallow'} ios update`)
106
115
  channelPayload.ios = !!ios
107
116
  }
108
117
  if (android != null) {
109
- p.log.info(`Set ${appId} channel: ${channel} to ${android ? 'allow' : 'disallow'} android update`);
118
+ p.log.info(`Set ${appId} channel: ${channel} to ${android ? 'allow' : 'disallow'} android update`)
110
119
  channelPayload.android = !!android
111
120
  }
112
121
  if (selfAssign != null) {
113
- p.log.info(`Set ${appId} channel: ${channel} to ${selfAssign ? 'allow' : 'disallow'} self assign to this channel`);
122
+ p.log.info(`Set ${appId} channel: ${channel} to ${selfAssign ? 'allow' : 'disallow'} self assign to this channel`)
114
123
  channelPayload.allow_device_self_set = !!selfAssign
115
124
  }
116
125
  if (disableAutoUpdate != null) {
@@ -118,30 +127,28 @@ export const setChannel = async (channel: string, appId: string, options: Option
118
127
 
119
128
  // The user passed an unimplemented strategy
120
129
  if (!disableAutoUpdatesPossibleOptions.includes(finalDisableAutoUpdate)) {
121
- // eslint-disable-next-line max-len
122
- p.log.error(`Channel strategy ${finalDisableAutoUpdate} is not known. The possible values are: ${disableAutoUpdatesPossibleOptions.join(', ')}.`);
123
- program.error('');
130
+ p.log.error(`Channel strategy ${finalDisableAutoUpdate} is not known. The possible values are: ${disableAutoUpdatesPossibleOptions.join(', ')}.`)
131
+ program.error('')
124
132
  }
125
133
 
126
134
  // This metadata is called differently in the database
127
- if (finalDisableAutoUpdate === 'metadata') {
135
+ if (finalDisableAutoUpdate === 'metadata')
128
136
  finalDisableAutoUpdate = 'version_number'
129
- }
130
137
 
131
138
  // This cast is safe, look above
132
139
  channelPayload.disableAutoUpdate = finalDisableAutoUpdate as any
133
- p.log.info(`Set ${appId} channel: ${channel} to ${finalDisableAutoUpdate} disable update strategy to this channel`);
140
+ p.log.info(`Set ${appId} channel: ${channel} to ${finalDisableAutoUpdate} disable update strategy to this channel`)
134
141
  }
135
142
  try {
136
143
  const { error: dbError } = await updateOrCreateChannel(supabase, channelPayload)
137
144
  if (dbError) {
138
- p.log.error(`Cannot set channel the upload key is not allowed to do that, use the "all" for this.`);
139
- program.error('');
145
+ p.log.error(`Cannot set channel the upload key is not allowed to do that, use the "all" for this.`)
146
+ program.error('')
140
147
  }
141
148
  }
142
149
  catch (e) {
143
- p.log.error(`Cannot set channel the upload key is not allowed to do that, use the "all" for this.`);
144
- program.error('');
150
+ p.log.error(`Cannot set channel the upload key is not allowed to do that, use the "all" for this.`)
151
+ program.error('')
145
152
  }
146
153
  await snag.track({
147
154
  channel: 'channel',
@@ -154,10 +161,11 @@ export const setChannel = async (channel: string, appId: string, options: Option
154
161
  },
155
162
  notify: false,
156
163
  }).catch()
157
- } catch (err) {
158
- p.log.error(`Unknow error ${formatError(err)}`);
159
- program.error('');
160
164
  }
161
- p.outro(`Done ✅`);
165
+ catch (err) {
166
+ p.log.error(`Unknow error ${formatError(err)}`)
167
+ program.error('')
168
+ }
169
+ p.outro(`Done ✅`)
162
170
  process.exit()
163
171
  }
package/src/index.ts CHANGED
@@ -1,45 +1,46 @@
1
- import { program } from 'commander';
2
- import { zipBundle } from './bundle/zip';
3
- import { initApp } from './init';
4
- import { listBundle } from './bundle/list';
5
- import { decryptZip } from './bundle/decrypt';
6
- import { encryptZip } from './bundle/encrypt';
7
- import { addCommand } from './app/add';
8
- import { getInfo } from './app/info';
9
- import { saveKeyCommand, createKeyCommand } from './key';
10
- import { deleteBundle } from './bundle/delete';
11
- import { setChannel } from './channel/set';
12
- import { currentBundle } from './channel/currentBundle';
13
- import { uploadCommand, uploadDeprecatedCommand } from './bundle/upload';
1
+ import { program } from 'commander'
14
2
  import pack from '../package.json'
15
- import { loginCommand } from './login';
16
- import { listApp } from './app/list';
17
- import { cleanupBundle } from './bundle/cleanup';
18
- import { addChannelCommand } from './channel/add';
19
- import { deleteChannel } from './channel/delete';
20
- import { listChannels } from './channel/list';
21
- import { setApp } from './app/set';
22
- import { deleteApp } from './app/delete';
3
+ import { zipBundle } from './bundle/zip'
4
+ import { initApp } from './init'
5
+ import { listBundle } from './bundle/list'
6
+ import { decryptZip } from './bundle/decrypt'
7
+ import { encryptZip } from './bundle/encrypt'
8
+ import { addCommand } from './app/add'
9
+ import { getInfo } from './app/info'
10
+ import { createKeyCommand, saveKeyCommand } from './key'
11
+ import { deleteBundle } from './bundle/delete'
12
+ import { setChannel } from './channel/set'
13
+ import { currentBundle } from './channel/currentBundle'
14
+ import { uploadCommand, uploadDeprecatedCommand } from './bundle/upload'
15
+ import { loginCommand } from './login'
16
+ import { listApp } from './app/list'
17
+ import { cleanupBundle } from './bundle/cleanup'
18
+ import { addChannelCommand } from './channel/add'
19
+ import { deleteChannel } from './channel/delete'
20
+ import { listChannels } from './channel/list'
21
+ import { setApp } from './app/set'
22
+ import { deleteApp } from './app/delete'
23
+
23
24
  // import { watchApp } from './app/watch';
24
- import { debugApp } from './app/debug';
25
- import { checkCompatibilityCommand } from './bundle/compatibility';
25
+ import { debugApp } from './app/debug'
26
+ import { checkCompatibilityCommand } from './bundle/compatibility'
26
27
 
27
28
  program
28
29
  .name(pack.name)
29
30
  .description('Manage packages and bundle versions in Capgo Cloud')
30
- .version(pack.version);
31
+ .version(pack.version)
31
32
 
32
33
  program
33
34
  .command('login [apikey]')
34
35
  .alias('l')
35
36
  .description('Save apikey to your machine or folder')
36
37
  .action(loginCommand)
37
- .option('--local', 'Only save in local folder');
38
+ .option('--local', 'Only save in local folder')
38
39
 
39
40
  program
40
41
  .command('doctor')
41
42
  .description('Get info about your Capgo app install')
42
- .action(getInfo);
43
+ .action(getInfo)
43
44
 
44
45
  program
45
46
  .command('init [apikey] [appId]')
@@ -47,11 +48,11 @@ program
47
48
  .action(initApp)
48
49
  .option('-n, --name <name>', 'app name')
49
50
  .option('-i, --icon <icon>', 'app icon path')
50
- .option('-a, --apikey <apikey>', 'apikey to link to your account');
51
+ .option('-a, --apikey <apikey>', 'apikey to link to your account')
51
52
 
52
53
  const app = program
53
54
  .command('app')
54
- .description('Manage app');
55
+ .description('Manage app')
55
56
 
56
57
  app
57
58
  .command('add [appId]')
@@ -60,27 +61,27 @@ app
60
61
  .action(addCommand)
61
62
  .option('-n, --name <name>', 'app name')
62
63
  .option('-i, --icon <icon>', 'app icon path')
63
- .option('-a, --apikey <apikey>', 'apikey to link to your account');
64
+ .option('-a, --apikey <apikey>', 'apikey to link to your account')
64
65
 
65
66
  app
66
67
  .command('delete [appId]')
67
68
  .description('Delete an app in Capgo Cloud')
68
69
  .action(deleteApp)
69
- .option('-a, --apikey <apikey>', 'apikey to link to your account');
70
+ .option('-a, --apikey <apikey>', 'apikey to link to your account')
70
71
 
71
72
  app
72
73
  .command('list')
73
74
  .alias('l')
74
75
  .description('list apps in Capgo Cloud')
75
76
  .action(listApp)
76
- .option('-a, --apikey <apikey>', 'apikey to link to your account');
77
+ .option('-a, --apikey <apikey>', 'apikey to link to your account')
77
78
 
78
79
  app
79
80
  .command('debug [appId]')
80
81
  .description('Listen for live updates event in Capgo Cloud to debug your app')
81
82
  .option('-a, --apikey <apikey>', 'apikey to link to your account')
82
83
  .option('-d, --device <device>', 'the specific device to debug')
83
- .action(debugApp);
84
+ .action(debugApp)
84
85
 
85
86
  // app
86
87
  // .command('watch [port]')
@@ -100,7 +101,7 @@ app
100
101
 
101
102
  const bundle = program
102
103
  .command('bundle')
103
- .description('Manage bundle');
104
+ .description('Manage bundle')
104
105
 
105
106
  bundle
106
107
  .command('upload [appId]')
@@ -116,22 +117,22 @@ bundle
116
117
  .option('--key-data <keyData>', 'base64 public signing key')
117
118
  .option('--bundle-url', 'prints bundle url into stdout')
118
119
  .option('--no-key', 'ignore signing key and send clear update')
119
- .option('--no-code-check', 'Ignore checking if notifyAppReady() is called in soure code and index present in root folder')
120
+ .option('--no-code-check', 'Ignore checking if notifyAppReady() is called in soure code and index present in root folder')
120
121
  .option('--display-iv-session', 'Show in the console the iv and session key used to encrypt the update')
121
122
  .option('-b, --bundle <bundle>', 'bundle version number of the bundle to upload')
122
123
  .option(
123
124
  '--min-update-version <minUpdateVersion>',
124
- 'Minimal version required to update to this version. Used only if the disable auto update is set to metadata in channel'
125
+ 'Minimal version required to update to this version. Used only if the disable auto update is set to metadata in channel',
125
126
  )
126
127
  .option('--auto-min-update-version', 'Set the min update version based on native packages')
127
128
  .option('--ignore-metadata-check', 'Ignores the metadata (node_modules) check when uploading')
128
129
 
129
130
  bundle
130
- .command('compatibility [appId]')
131
- .action(checkCompatibilityCommand)
132
- .option('-a, --apikey <apikey>', 'apikey to link to your account')
133
- .option('-c, --channel <channel>', 'channel to check the compatibility with')
134
- .option('--text', 'output text instead of emojis')
131
+ .command('compatibility [appId]')
132
+ .action(checkCompatibilityCommand)
133
+ .option('-a, --apikey <apikey>', 'apikey to link to your account')
134
+ .option('-c, --channel <channel>', 'channel to check the compatibility with')
135
+ .option('--text', 'output text instead of emojis')
135
136
 
136
137
  bundle
137
138
  .command('delete [bundleId] [appId]')
@@ -145,14 +146,14 @@ bundle
145
146
  .alias('l')
146
147
  .description('List bundle in Capgo Cloud')
147
148
  .action(listBundle)
148
- .option('-a, --apikey <apikey>', 'apikey to link to your account');
149
+ .option('-a, --apikey <apikey>', 'apikey to link to your account')
149
150
 
150
151
  bundle
151
152
  .command('unlink [appId]')
152
153
  .description('Unlink a bundle in Capgo Cloud')
153
154
  .action(listBundle)
154
155
  .option('-a, --apikey <apikey>', 'apikey to link to your account')
155
- .option('-b, --bundle <bundle>', 'bundle version number of the bundle to unlink');
156
+ .option('-b, --bundle <bundle>', 'bundle version number of the bundle to unlink')
156
157
 
157
158
  bundle
158
159
  .command('cleanup [appId]')
@@ -162,21 +163,21 @@ bundle
162
163
  .option('-b, --bundle <bundle>', 'bundle version number of the app to delete')
163
164
  .option('-a, --apikey <apikey>', 'apikey to link to your account')
164
165
  .option('-k, --keep <keep>', 'number of version to keep')
165
- .option('-f, --force', 'force removal');
166
+ .option('-f, --force', 'force removal')
166
167
 
167
168
  bundle
168
169
  .command('decrypt [zipPath] [sessionKey]')
169
170
  .description('Decrypt a signed zip bundle')
170
171
  .action(decryptZip)
171
172
  .option('--key <key>', 'custom path for private signing key')
172
- .option('--key-data <keyData>', 'base64 private signing key');
173
+ .option('--key-data <keyData>', 'base64 private signing key')
173
174
 
174
175
  bundle
175
176
  .command('encrypt [zipPath]')
176
177
  .description('Encrypt a zip bundle')
177
178
  .action(encryptZip)
178
179
  .option('--key <key>', 'custom path for private signing key')
179
- .option('--key-data <keyData>', 'base64 private signing key');
180
+ .option('--key-data <keyData>', 'base64 private signing key')
180
181
 
181
182
  bundle
182
183
  .command('zip [appId]')
@@ -186,11 +187,11 @@ bundle
186
187
  .option('-b, --bundle <bundle>', 'bundle version number to name the zip file')
187
188
  .option('-n, --name <name>', 'name of the zip file')
188
189
  .option('-j, --json', 'output in JSON')
189
- .option('--no-code-check', 'Ignore checking if notifyAppReady() is called in soure code and index present in root folder');
190
+ .option('--no-code-check', 'Ignore checking if notifyAppReady() is called in soure code and index present in root folder')
190
191
 
191
192
  const channel = program
192
193
  .command('channel')
193
- .description('Manage channel');
194
+ .description('Manage channel')
194
195
 
195
196
  channel
196
197
  .command('add [channelId] [appId]')
@@ -241,13 +242,11 @@ channel
241
242
  .option('--no-android', 'Disable sending update to android devices')
242
243
  .option('--self-assign', 'Allow to device to self assign to this channel')
243
244
  .option('--no-self-assign', 'Disable devices to self assign to this channel')
244
- .option('--disable-auto-update <disableAutoUpdate>',
245
- 'Disable auto update strategy for this channel.The possible options are: major, minor, metadata, none'
246
- )
245
+ .option('--disable-auto-update <disableAutoUpdate>', 'Disable auto update strategy for this channel.The possible options are: major, minor, metadata, none')
247
246
 
248
247
  const key = program
249
248
  .command('key')
250
- .description('Manage key');
249
+ .description('Manage key')
251
250
 
252
251
  key
253
252
  .command('save')
@@ -255,14 +254,13 @@ key
255
254
  .action(saveKeyCommand)
256
255
  .option('-f, --force', 'force generate a new one')
257
256
  .option('--key', 'key path to save in capacitor config')
258
- .option('--key-data', 'key data to save in capacitor config');
259
-
257
+ .option('--key-data', 'key data to save in capacitor config')
260
258
 
261
259
  key
262
260
  .command('create')
263
261
  .description('Create a new signing key')
264
262
  .action(createKeyCommand)
265
- .option('-f, --force', 'force generate a new one');
263
+ .option('-f, --force', 'force generate a new one')
266
264
 
267
265
  program
268
266
  .command('upload [appId]')
@@ -281,7 +279,7 @@ program
281
279
  .option('-b, --bundle <bundle>', 'bundle version number of the file to upload')
282
280
  .option(
283
281
  '--min-update-version <minUpdateVersion>',
284
- 'Minimal version required to update to this version. Used only if the disable auto update is set to metadata in channel'
285
- );
282
+ 'Minimal version required to update to this version. Used only if the disable auto update is set to metadata in channel',
283
+ )
286
284
 
287
- program.parseAsync();
285
+ program.parseAsync()