@capgo/cli 4.0.14 → 4.2.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.
- package/CHANGELOG.md +14 -0
- package/dist/index.js +38 -6
- package/package.json +1 -1
- package/src/api/channels.ts +42 -7
- package/src/bundle/upload.ts +1 -1
- package/src/utils.ts +13 -4
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [4.2.0](https://github.com/Cap-go/CLI/compare/v4.1.0...v4.2.0) (2024-03-04)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* allow ussage of version in Capcitor config instead of package.json ([7b2084a](https://github.com/Cap-go/CLI/commit/7b2084ab6a8d1cede375cb393b6718f3a5aa23dc))
|
|
11
|
+
|
|
12
|
+
## [4.1.0](https://github.com/Cap-go/CLI/compare/v4.0.14...v4.1.0) (2024-02-27)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* better channel list ([93c8b04](https://github.com/Cap-go/CLI/commit/93c8b04407d1b3fe43963d9d8f11dc5e419008e8))
|
|
18
|
+
|
|
5
19
|
### [4.0.14](https://github.com/Cap-go/CLI/compare/v4.0.13...v4.0.14) (2024-02-27)
|
|
6
20
|
|
|
7
21
|
### [4.0.13](https://github.com/Cap-go/CLI/compare/v4.0.12...v4.0.13) (2024-02-26)
|
package/dist/index.js
CHANGED
|
@@ -61137,7 +61137,7 @@ var {
|
|
|
61137
61137
|
// package.json
|
|
61138
61138
|
var package_default = {
|
|
61139
61139
|
name: "@capgo/cli",
|
|
61140
|
-
version: "4.0
|
|
61140
|
+
version: "4.2.0",
|
|
61141
61141
|
description: "A CLI to upload to capgo servers",
|
|
61142
61142
|
main: "dist/index.js",
|
|
61143
61143
|
bin: {
|
|
@@ -63342,15 +63342,47 @@ function displayChannels(data) {
|
|
|
63342
63342
|
});
|
|
63343
63343
|
data.reverse().forEach((row) => {
|
|
63344
63344
|
t.addRow({
|
|
63345
|
-
Name: row.name,
|
|
63346
|
-
|
|
63347
|
-
Public: row.public ? "\u2705" : "\u274C"
|
|
63345
|
+
"Name": row.name,
|
|
63346
|
+
...row.version ? { Version: row.version.name } : void 0,
|
|
63347
|
+
"Public": row.public ? "\u2705" : "\u274C",
|
|
63348
|
+
"iOS": row.ios ? "\u274C" : "\u2705",
|
|
63349
|
+
"Android": row.android ? "\u274C" : "\u2705",
|
|
63350
|
+
"\u2B06\uFE0F limit": row.disableAutoUpdate,
|
|
63351
|
+
"\u2B07\uFE0F under native": row.disableAutoUpdateUnderNative ? "\u274C" : "\u2705",
|
|
63352
|
+
"Self assign": row.allow_device_self_set ? "\u2705" : "\u274C",
|
|
63353
|
+
"Progressive": row.enable_progressive_deploy ? "\u2705" : "\u274C",
|
|
63354
|
+
...row.enable_progressive_deploy && row.secondVersion ? { "Next version": row.secondVersion.name } : void 0,
|
|
63355
|
+
...row.enable_progressive_deploy && row.secondVersion ? { "Next %": row.secondaryVersionPercentage } : void 0,
|
|
63356
|
+
"AB Testing": row.enableAbTesting ? "\u2705" : "\u274C",
|
|
63357
|
+
...row.enableAbTesting && row.secondVersion ? { "Version B": row.secondVersion } : void 0,
|
|
63358
|
+
...row.enableAbTesting && row.secondVersion ? { "A/B %": row.secondaryVersionPercentage } : void 0,
|
|
63359
|
+
"Emulator": row.allow_emulator ? "\u2705" : "\u274C",
|
|
63360
|
+
"Dev \u{1F4F1}": row.allow_dev ? "\u2705" : "\u274C"
|
|
63348
63361
|
});
|
|
63349
63362
|
});
|
|
63350
63363
|
f2.success(t.render());
|
|
63351
63364
|
}
|
|
63352
63365
|
async function getActiveChannels(supabase, appid) {
|
|
63353
|
-
const { data, error: vError } = await supabase.from("channels").select(
|
|
63366
|
+
const { data, error: vError } = await supabase.from("channels").select(`
|
|
63367
|
+
id,
|
|
63368
|
+
name,
|
|
63369
|
+
public,
|
|
63370
|
+
allow_emulator,
|
|
63371
|
+
allow_dev,
|
|
63372
|
+
ios,
|
|
63373
|
+
android,
|
|
63374
|
+
allow_device_self_set,
|
|
63375
|
+
disableAutoUpdateUnderNative,
|
|
63376
|
+
disableAutoUpdate,
|
|
63377
|
+
enable_progressive_deploy,
|
|
63378
|
+
enableAbTesting,
|
|
63379
|
+
secondaryVersionPercentage,
|
|
63380
|
+
secondVersion (id, name),
|
|
63381
|
+
created_at,
|
|
63382
|
+
created_by,
|
|
63383
|
+
app_id,
|
|
63384
|
+
version (id, name)
|
|
63385
|
+
`).eq("app_id", appid).order("created_at", { ascending: false });
|
|
63354
63386
|
if (vError) {
|
|
63355
63387
|
f2.error(`App ${appid} not found in database`);
|
|
63356
63388
|
program.error("");
|
|
@@ -63437,7 +63469,7 @@ async function uploadBundle(appid, options, shouldExit = true) {
|
|
|
63437
63469
|
const checkNotifyAppReady = options.codeCheck;
|
|
63438
63470
|
appid = appid || config?.app?.appId;
|
|
63439
63471
|
const uuid = (0, import_node_crypto3.randomUUID)().split("-")[0];
|
|
63440
|
-
bundle2 = bundle2 || config?.app?.package?.version || `0.0.1-beta.${uuid}`;
|
|
63472
|
+
bundle2 = bundle2 || config?.app?.extConfig?.plugins?.CapacitorUpdater?.version || config?.app?.package?.version || `0.0.1-beta.${uuid}`;
|
|
63441
63473
|
if (!regexSemver.test(bundle2)) {
|
|
63442
63474
|
f2.error(`Your bundle name ${bundle2}, is not valid it should follow semver convention : https://semver.org/`);
|
|
63443
63475
|
program.error("");
|
package/package.json
CHANGED
package/src/api/channels.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { program } from 'commander'
|
|
|
4
4
|
import { Table } from 'console-table-printer'
|
|
5
5
|
import * as p from '@clack/prompts'
|
|
6
6
|
import type { Database } from '../types/supabase.types'
|
|
7
|
-
import { formatError
|
|
7
|
+
import { formatError } from '../utils'
|
|
8
8
|
|
|
9
9
|
export async function checkVersionNotUsedInChannel(supabase: SupabaseClient<Database>, appid: string, userId: string, versionData: Database['public']['Tables']['app_versions']['Row']) {
|
|
10
10
|
const { data: channelFound, error: errorChannel } = await supabase
|
|
@@ -72,8 +72,11 @@ export function delChannel(supabase: SupabaseClient<Database>, name: string, app
|
|
|
72
72
|
.eq('created_by', userId)
|
|
73
73
|
.single()
|
|
74
74
|
}
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
interface version {
|
|
76
|
+
id: string
|
|
77
|
+
name: string
|
|
78
|
+
}
|
|
79
|
+
export function displayChannels(data: (Database['public']['Tables']['channels']['Row'] & { version?: version, secondVersion?: version })[]) {
|
|
77
80
|
const t = new Table({
|
|
78
81
|
title: 'Channels',
|
|
79
82
|
charLength: { '❌': 2, '✅': 2 },
|
|
@@ -82,9 +85,22 @@ export function displayChannels(data: (Database['public']['Tables']['channels'][
|
|
|
82
85
|
// add rows with color
|
|
83
86
|
data.reverse().forEach((row) => {
|
|
84
87
|
t.addRow({
|
|
85
|
-
Name: row.name,
|
|
86
|
-
|
|
87
|
-
Public: row.public ? '✅' : '❌',
|
|
88
|
+
'Name': row.name,
|
|
89
|
+
...(row.version ? { Version: row.version.name } : undefined),
|
|
90
|
+
'Public': row.public ? '✅' : '❌',
|
|
91
|
+
'iOS': row.ios ? '❌' : '✅',
|
|
92
|
+
'Android': row.android ? '❌' : '✅',
|
|
93
|
+
'⬆️ limit': row.disableAutoUpdate,
|
|
94
|
+
'⬇️ under native': row.disableAutoUpdateUnderNative ? '❌' : '✅',
|
|
95
|
+
'Self assign': row.allow_device_self_set ? '✅' : '❌',
|
|
96
|
+
'Progressive': row.enable_progressive_deploy ? '✅' : '❌',
|
|
97
|
+
...(row.enable_progressive_deploy && row.secondVersion ? { 'Next version': row.secondVersion.name } : undefined),
|
|
98
|
+
...(row.enable_progressive_deploy && row.secondVersion ? { 'Next %': row.secondaryVersionPercentage } : undefined),
|
|
99
|
+
'AB Testing': row.enableAbTesting ? '✅' : '❌',
|
|
100
|
+
...(row.enableAbTesting && row.secondVersion ? { 'Version B': row.secondVersion } : undefined),
|
|
101
|
+
...(row.enableAbTesting && row.secondVersion ? { 'A/B %': row.secondaryVersionPercentage } : undefined),
|
|
102
|
+
'Emulator': row.allow_emulator ? '✅' : '❌',
|
|
103
|
+
'Dev 📱': row.allow_dev ? '✅' : '❌',
|
|
88
104
|
})
|
|
89
105
|
})
|
|
90
106
|
|
|
@@ -94,7 +110,26 @@ export function displayChannels(data: (Database['public']['Tables']['channels'][
|
|
|
94
110
|
export async function getActiveChannels(supabase: SupabaseClient<Database>, appid: string) {
|
|
95
111
|
const { data, error: vError } = await supabase
|
|
96
112
|
.from('channels')
|
|
97
|
-
.select(
|
|
113
|
+
.select(`
|
|
114
|
+
id,
|
|
115
|
+
name,
|
|
116
|
+
public,
|
|
117
|
+
allow_emulator,
|
|
118
|
+
allow_dev,
|
|
119
|
+
ios,
|
|
120
|
+
android,
|
|
121
|
+
allow_device_self_set,
|
|
122
|
+
disableAutoUpdateUnderNative,
|
|
123
|
+
disableAutoUpdate,
|
|
124
|
+
enable_progressive_deploy,
|
|
125
|
+
enableAbTesting,
|
|
126
|
+
secondaryVersionPercentage,
|
|
127
|
+
secondVersion (id, name),
|
|
128
|
+
created_at,
|
|
129
|
+
created_by,
|
|
130
|
+
app_id,
|
|
131
|
+
version (id, name)
|
|
132
|
+
`)
|
|
98
133
|
.eq('app_id', appid)
|
|
99
134
|
// .eq('created_by', userId)
|
|
100
135
|
.order('created_at', { ascending: false })
|
package/src/bundle/upload.ts
CHANGED
|
@@ -75,7 +75,7 @@ export async function uploadBundle(appid: string, options: Options, shouldExit =
|
|
|
75
75
|
appid = appid || config?.app?.appId
|
|
76
76
|
// create bundle name format : 1.0.0-beta.x where x is a uuid
|
|
77
77
|
const uuid = randomUUID().split('-')[0]
|
|
78
|
-
bundle = bundle || config?.app?.package?.version || `0.0.1-beta.${uuid}`
|
|
78
|
+
bundle = bundle || config?.app?.extConfig?.plugins?.CapacitorUpdater?.version || config?.app?.package?.version || `0.0.1-beta.${uuid}`
|
|
79
79
|
// check if bundle is valid
|
|
80
80
|
if (!regexSemver.test(bundle)) {
|
|
81
81
|
p.log.error(`Your bundle name ${bundle}, is not valid it should follow semver convention : https://semver.org/`)
|
package/src/utils.ts
CHANGED
|
@@ -363,16 +363,25 @@ interface Config {
|
|
|
363
363
|
plugins: {
|
|
364
364
|
extConfig: object
|
|
365
365
|
CapacitorUpdater: {
|
|
366
|
+
appReadyTimeout?: number
|
|
367
|
+
responseTimeout?: number
|
|
368
|
+
autoDeleteFailed?: boolean
|
|
369
|
+
autoDeletePrevious?: boolean
|
|
366
370
|
autoUpdate?: boolean
|
|
371
|
+
resetWhenUpdate?: boolean
|
|
372
|
+
updateUrl?: string
|
|
373
|
+
statsUrl?: string
|
|
374
|
+
privateKey?: string
|
|
375
|
+
version?: string
|
|
376
|
+
directUpdate?: boolean
|
|
377
|
+
periodCheckDelay?: number
|
|
367
378
|
localS3?: boolean
|
|
368
379
|
localHost?: string
|
|
369
380
|
localWebHost?: string
|
|
370
381
|
localSupa?: string
|
|
371
382
|
localSupaAnon?: string
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
updateUrl?: string
|
|
375
|
-
privateKey?: string
|
|
383
|
+
allowModifyUrl?: boolean
|
|
384
|
+
defaultChannel?: string
|
|
376
385
|
}
|
|
377
386
|
}
|
|
378
387
|
server: {
|