anycloud 0.0.6 → 0.0.7
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/dist/cli/commands/config/edit.js +1 -1
- package/dist/cli/commands/config/edit.js.map +1 -1
- package/dist/cli/commands/config/index.js +1 -1
- package/dist/cli/commands/config/index.js.map +1 -1
- package/dist/cli/commands/config/list.js +2 -1
- package/dist/cli/commands/config/list.js.map +1 -1
- package/dist/cli/commands/config/new.js +1 -1
- package/dist/cli/commands/config/new.js.map +1 -1
- package/dist/cli/commands/config/remove.js +1 -1
- package/dist/cli/commands/config/remove.js.map +1 -1
- package/dist/cli/commands/credentials/delete.js +1 -1
- package/dist/cli/commands/credentials/delete.js.map +1 -1
- package/dist/cli/commands/credentials/edit.js +1 -1
- package/dist/cli/commands/credentials/edit.js.map +1 -1
- package/dist/cli/commands/credentials/index.js +1 -1
- package/dist/cli/commands/credentials/index.js.map +1 -1
- package/dist/cli/commands/credentials/list.js +1 -1
- package/dist/cli/commands/credentials/list.js.map +1 -1
- package/dist/cli/commands/credentials/new.js +1 -1
- package/dist/cli/commands/credentials/new.js.map +1 -1
- package/dist/cli/commands/list.js +9 -8
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/login.js +1 -1
- package/dist/cli/commands/login.js.map +1 -1
- package/dist/cli/commands/logs.js +1 -1
- package/dist/cli/commands/logs.js.map +1 -1
- package/dist/cli/commands/run.js +19 -11
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/status.js +1 -1
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/terminate.js +1 -1
- package/dist/cli/commands/terminate.js.map +1 -1
- package/dist/cli/commands/upgrade.js +1 -1
- package/dist/cli/commands/upgrade.js.map +1 -1
- package/dist/cli/index.js +36 -6
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/services/auth.js +9 -0
- package/dist/cli/services/auth.js.map +1 -1
- package/dist/cli/services/docker.js +381 -0
- package/dist/cli/services/docker.js.map +1 -0
- package/dist/cli/services/oauth.js +4 -9
- package/dist/cli/services/oauth.js.map +1 -1
- package/dist/cli/utils/output.js +8 -3
- package/dist/cli/utils/output.js.map +1 -1
- package/dist/daemon/docker.js +25 -1
- package/dist/daemon/docker.js.map +1 -1
- package/dist/daemon/server.js +42 -1
- package/dist/daemon/server.js.map +1 -1
- package/dist/shared/types.js +0 -4
- package/dist/shared/types.js.map +1 -1
- package/package.json +8 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACL,mBAAmB,EACnB,eAAe,GAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EACL,gBAAgB,EAChB,cAAc,GACf,MAAM,gCAAgC,CAAC;AACxC,OAAO,WAAW,MAAM,uBAAuB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEtE,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;SACzB,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACL,mBAAmB,EACnB,eAAe,GAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EACL,gBAAgB,EAChB,cAAc,GACf,MAAM,gCAAgC,CAAC;AACxC,OAAO,WAAW,MAAM,uBAAuB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEtE,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;SACzB,WAAW,CAAC,0BAA0B,CAAC;SACvC,QAAQ,CACP,MAAM,EACN,kEAAkE,CACnE;SACA,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;CAcL,CACI;SACA,MAAM,CAAC,KAAK,EAAE,EAAW,EAAE,EAAE;QAC5B,IAAI,CAAC;YACH,IAAI,YAAY,GAAG,EAAE,CAAC;YAEtB,oDAAoD;YACpD,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,yDAAyD;gBACzD,IAAI,gBAAgB,EAAE,EAAE,CAAC;oBACvB,YAAY,GAAG,cAAc,CAAC,wBAAwB,CAAC,CAAC;oBACxD,IAAI,CAAC,YAAY,EAAE,CAAC;wBAClB,UAAU,CACR,iDAAiD;4BAC/C,+EAA+E,CAClF,CAAC;wBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAClB,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,mBAAmB;oBACnB,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC;oBAE3C,uDAAuD;oBACvD,MAAM,eAAe,GAAG,MAAM,4BAA4B,EAAE,CAAC;oBAE7D,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC9C,UAAU,CAAC,+CAA+C,CAAC,CAAC;wBAC5D,SAAS,CACP,uDAAuD,CACxD,CAAC;wBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAClB,CAAC;oBAED,uBAAuB;oBACvB,MAAM,cAAc,GAAG,aAAa,CAClC,wBAAwB,CACzB,CAAC,KAAK,EAAE,CAAC;oBACV,MAAM,WAAW,GAAG,MAAM,eAAe,CACvC,eAAe,EACf,WAAW,EACX,WAAW,CAAC,OAAO,CACpB,CAAC;oBACF,cAAc,CAAC,IAAI,EAAE,CAAC;oBAEtB,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC7B,UAAU,CAAC,uBAAuB,CAAC,CAAC;wBACpC,SAAS,CACP,sEAAsE,CACvE,CAAC;wBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAClB,CAAC;oBAED,kCAAkC;oBAClC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;wBAC9B,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,YAAY;wBAClB,OAAO,EAAE,oBAAoB;wBAC7B,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;4BACtC,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,IAAI,CAC1C,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CACjC,CAAC;4BACF,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC1C,OAAO;gCACL,KAAK,EAAE,UAAU,CAAC,EAAE;gCACpB,KAAK,EAAE,UAAU,CAAC,EAAE;gCACpB,WAAW,EAAE,GAAG,UAAU,CAAC,UAAU,MAAM,UAAU,CAAC,IAAI,OAAO,QAAQ,EAAE;6BAC5E,CAAC;wBACJ,CAAC,CAAC;qBACH,CAAC,CAAC;oBAEH,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;wBAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB;oBACpC,CAAC;oBAED,YAAY,GAAG,SAAS,CAAC,UAAU,CAAC;gBACtC,CAAC;YACH,CAAC;YAED,4CAA4C;YAC5C,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC;YAE3C,aAAa;YACb,MAAM,OAAO,GAAG,aAAa,CAC3B,wBAAwB,YAAY,KAAK,CAC1C,CAAC,KAAK,EAAE,CAAC;YACV,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CACxC,YAAY,EACZ,WAAW,EACX,WAAW,CAAC,OAAO,CACpB,CAAC;YACF,OAAO,CAAC,IAAI,EAAE,CAAC;YAEf,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,sBAAsB,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,kCAAkC;YAClC,IAAI,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1D,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBAC1B,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;oBACxC,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;oBAC1C,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;oBACxD,OAAO,CAAC,GAAG,CACT,KAAK,UAAU,OAAO,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,UAAU,EAAE,CAC5D,CAAC;gBACJ,CAAC,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,CAAC,2BAA4B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -8,7 +8,7 @@ import { isNonInteractive, getConfigFromEnv, getEnvOptional, } from '../services
|
|
|
8
8
|
import packageJson from '../../../package.json' with { type: 'json' };
|
|
9
9
|
export function createTerminateCommand() {
|
|
10
10
|
return new Command('terminate')
|
|
11
|
-
.description('Terminate a deployment')
|
|
11
|
+
.description('🛑 Terminate a deployment')
|
|
12
12
|
.argument('[id]', 'Deployment ID (optional - will prompt to select if not provided)')
|
|
13
13
|
.option('--config <name>', 'Config name from anycloud.json')
|
|
14
14
|
.addHelpText('after', `
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminate.js","sourceRoot":"","sources":["../../../src/cli/commands/terminate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,eAAe,GAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,GACf,MAAM,gCAAgC,CAAC;AACxC,OAAO,WAAW,MAAM,uBAAuB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEtE,MAAM,UAAU,sBAAsB;IACpC,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC;SAC5B,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"terminate.js","sourceRoot":"","sources":["../../../src/cli/commands/terminate.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ import { DeploymentType } from '../../shared/types.js';
|
|
|
9
9
|
import packageJson from '../../../package.json' with { type: 'json' };
|
|
10
10
|
export function createUpgradeCommand() {
|
|
11
11
|
return new Command('upgrade')
|
|
12
|
-
.description('Upgrade a
|
|
12
|
+
.description('⬆️ Upgrade a deployment')
|
|
13
13
|
.argument('<id>', 'Deployment ID')
|
|
14
14
|
.argument('<image>', 'New container image (e.g., nginx:latest, ghcr.io/user/repo:v2)')
|
|
15
15
|
.option('--config <name>', 'Config name from anycloud.json')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../../src/cli/commands/upgrade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACL,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,WAAW,MAAM,uBAAuB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEtE,MAAM,UAAU,oBAAoB;IAClC,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC;SAC1B,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../../src/cli/commands/upgrade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACL,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,WAAW,MAAM,uBAAuB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEtE,MAAM,UAAU,oBAAoB;IAClC,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC;SAC1B,WAAW,CAAC,0BAA0B,CAAC;SACvC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;SACjC,QAAQ,CACP,SAAS,EACT,gEAAgE,CACjE;SACA,MAAM,CAAC,iBAAiB,EAAE,gCAAgC,CAAC;SAC3D,WAAW,CACV,OAAO,EACP;;;;;;;;;;CAUL,CACI;SACA,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,KAAa,EAAE,OAA4B,EAAE,EAAE;QACxE,IAAI,CAAC;YACH,SAAS,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YAC9B,SAAS,CAAC,cAAc,KAAK,EAAE,CAAC,CAAC;YAEjC,wBAAwB;YACxB,IAAI,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;YAEhC,yDAAyD;YACzD,IAAI,CAAC,UAAU,IAAI,gBAAgB,EAAE,EAAE,CAAC;gBACtC,UAAU,GAAG,gBAAgB,EAAE,CAAC;gBAChC,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,UAAU,CACR,+CAA+C;wBAC7C,uEAAuE,CAC1E,CAAC;oBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;YAED,wFAAwF;YACxF,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,QAAQ,GAAG,MAAM,sBAAsB,EAAE,CAAC;gBAChD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAE3C,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC9B,UAAU,CAAC,+CAA+C,CAAC,CAAC;oBAC5D,SAAS,CAAC,uDAAuD,CAAC,CAAC;oBACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBAED,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;oBAC9B,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,gBAAgB;oBACzB,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;wBACnC,KAAK,EAAE,IAAI;wBACX,KAAK,EAAE,IAAI;wBACX,WAAW,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,YAAY;qBAClD,CAAC,CAAC;iBACJ,CAAC,CAAC;gBAEH,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;oBACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB;gBACpC,CAAC;gBAED,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC;YACjC,CAAC;YAED,SAAS,CAAC,iBAAiB,UAAU,EAAE,CAAC,CAAC;YAEzC,mBAAmB;YACnB,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC;YAE3C,6CAA6C;YAC7C,MAAM,YAAY,GAAG,MAAM,wBAAwB,CAAC,UAAU,CAAC,CAAC;YAEhE,qBAAqB;YACrB,MAAM,OAAO,GAAG,aAAa,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAC;YACjE,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CACtC,EAAE,EACF,KAAK,EACL,YAAY,EACZ,UAAU,EACV,WAAW,EACX,cAAc,CAAC,MAAM,EACrB,WAAW,CAAC,OAAO,CACpB,CAAC;YACF,OAAO,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;YAErD,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACrB,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC9B,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,CAAC,iCAAkC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/cli/index.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command } from 'commander';
|
|
3
|
-
import { createServeCommand } from './commands/serve.js';
|
|
4
3
|
import { createRunCommand } from './commands/run.js';
|
|
5
4
|
import { createListCommand } from './commands/list.js';
|
|
6
5
|
import { createStatusCommand } from './commands/status.js';
|
|
@@ -10,17 +9,48 @@ import { createUpgradeCommand } from './commands/upgrade.js';
|
|
|
10
9
|
import { createCredentialsCommand } from './commands/credentials/index.js';
|
|
11
10
|
import { createConfigCommand } from './commands/config/index.js';
|
|
12
11
|
import { createLoginCommand } from './commands/login.js';
|
|
13
|
-
import { createDaemonCommand } from './commands/daemon/index.js';
|
|
12
|
+
import { createDaemonCommand as _createDaemonCommand } from './commands/daemon/index.js';
|
|
14
13
|
import packageJson from '../../package.json' with { type: 'json' };
|
|
15
14
|
// Create main CLI program
|
|
16
15
|
const program = new Command();
|
|
17
16
|
program
|
|
18
17
|
.name('anycloud')
|
|
19
|
-
.description('
|
|
20
|
-
.version(packageJson.version)
|
|
18
|
+
.description('☁️ anycloud')
|
|
19
|
+
.version(packageJson.version)
|
|
20
|
+
.configureHelp({
|
|
21
|
+
formatHelp: (cmd, helper) => {
|
|
22
|
+
const sections = [];
|
|
23
|
+
// Usage line without [options]
|
|
24
|
+
sections.push(`Usage: ${cmd.name()} [command]\n`);
|
|
25
|
+
// Description
|
|
26
|
+
if (cmd.description()) {
|
|
27
|
+
sections.push(`${cmd.description()}\n`);
|
|
28
|
+
}
|
|
29
|
+
// Commands
|
|
30
|
+
const commandList = helper
|
|
31
|
+
.visibleCommands(cmd)
|
|
32
|
+
.filter((subcmd) => subcmd.name() !== 'help' && subcmd.name() !== 'daemon');
|
|
33
|
+
if (commandList.length > 0) {
|
|
34
|
+
sections.push('\nCOMMANDS');
|
|
35
|
+
const commands = commandList.map((subcmd) => {
|
|
36
|
+
// Build command usage without alias
|
|
37
|
+
const name = subcmd.name();
|
|
38
|
+
const args = subcmd.registeredArguments
|
|
39
|
+
.map((arg) => arg.required ? `<${arg.name()}>` : `[${arg.name()}]`)
|
|
40
|
+
.join(' ');
|
|
41
|
+
const opts = subcmd.options.length > 0 ? '[options] ' : '';
|
|
42
|
+
const usage = `${name} ${opts}${args}`.trim();
|
|
43
|
+
const desc = subcmd.description();
|
|
44
|
+
return ` ${usage.padEnd(32)}${desc}`;
|
|
45
|
+
});
|
|
46
|
+
sections.push(commands.join('\n'));
|
|
47
|
+
}
|
|
48
|
+
return sections.join('\n');
|
|
49
|
+
},
|
|
50
|
+
});
|
|
21
51
|
// Register commands
|
|
22
52
|
program.addCommand(createLoginCommand());
|
|
23
|
-
program.addCommand(
|
|
53
|
+
// program.addCommand(_createServeCommand()); // Not functional yet
|
|
24
54
|
program.addCommand(createRunCommand());
|
|
25
55
|
program.addCommand(createListCommand());
|
|
26
56
|
program.addCommand(createStatusCommand());
|
|
@@ -29,7 +59,7 @@ program.addCommand(createTerminateCommand());
|
|
|
29
59
|
program.addCommand(createUpgradeCommand());
|
|
30
60
|
program.addCommand(createCredentialsCommand());
|
|
31
61
|
program.addCommand(createConfigCommand());
|
|
32
|
-
program.addCommand(
|
|
62
|
+
program.addCommand(_createDaemonCommand()); // Internal use only - hidden from help
|
|
33
63
|
// Parse command-line arguments
|
|
34
64
|
program.parse(process.argv);
|
|
35
65
|
//# sourceMappingURL=index.js.map
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { readFile } from 'fs/promises';
|
|
2
|
+
import { Octokit } from '@octokit/rest';
|
|
2
3
|
import { TOKEN_PATH } from '../config.js';
|
|
3
4
|
import { exitWithError, printInfo } from '../utils/output.js';
|
|
4
5
|
import { isNonInteractive } from './non-interactive.js';
|
|
@@ -36,4 +37,12 @@ export async function getGitHubToken() {
|
|
|
36
37
|
const { authenticateWithGitHub } = await import('./oauth.js');
|
|
37
38
|
return await authenticateWithGitHub();
|
|
38
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Get GitHub username from access token
|
|
42
|
+
*/
|
|
43
|
+
export async function getGitHubUsername(accessToken) {
|
|
44
|
+
const client = new Octokit({ auth: accessToken });
|
|
45
|
+
const userResp = await client.users.getAuthenticated();
|
|
46
|
+
return userResp.data.login;
|
|
47
|
+
}
|
|
39
48
|
//# sourceMappingURL=auth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/cli/services/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,8BAA8B;IAC9B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gEAAgE;IAClE,CAAC;IAED,mCAAmC;IACnC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IACvC,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,kDAAkD;IAClD,IAAI,gBAAgB,EAAE,EAAE,CAAC;QACvB,aAAa,CACX,iDAAiD;YAC/C,+EAA+E,CAClF,CAAC;IACJ,CAAC;IAED,0DAA0D;IAC1D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,SAAS,CAAC,mDAAmD,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,8CAA8C;IAC9C,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IAC9D,OAAO,MAAM,sBAAsB,EAAE,CAAC;AACxC,CAAC"}
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/cli/services/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,8BAA8B;IAC9B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gEAAgE;IAClE,CAAC;IAED,mCAAmC;IACnC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IACvC,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,kDAAkD;IAClD,IAAI,gBAAgB,EAAE,EAAE,CAAC;QACvB,aAAa,CACX,iDAAiD;YAC/C,+EAA+E,CAClF,CAAC;IACJ,CAAC;IAED,0DAA0D;IAC1D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,SAAS,CAAC,mDAAmD,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,8CAA8C;IAC9C,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IAC9D,OAAO,MAAM,sBAAsB,EAAE,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,WAAmB;IACzD,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;IACvD,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
import Docker from 'dockerode';
|
|
2
|
+
import { execSync } from 'child_process';
|
|
3
|
+
import { existsSync } from 'fs';
|
|
4
|
+
import prompts from 'prompts';
|
|
5
|
+
import { printInfo, printError, createSpinner } from '../utils/output.js';
|
|
6
|
+
import { isNonInteractive } from './non-interactive.js';
|
|
7
|
+
const docker = new Docker();
|
|
8
|
+
/**
|
|
9
|
+
* Helper to wait for Docker stream completion
|
|
10
|
+
* @param trackEventErrors - If true, monitors event.error in progress events (needed for push operations)
|
|
11
|
+
*/
|
|
12
|
+
async function waitForStream(stream, spinner, successMessage, failMessage, trackEventErrors = false) {
|
|
13
|
+
return new Promise((resolve, reject) => {
|
|
14
|
+
let streamError = null;
|
|
15
|
+
docker.modem.followProgress(stream, (err) => {
|
|
16
|
+
if (err) {
|
|
17
|
+
spinner.fail(failMessage);
|
|
18
|
+
reject(err);
|
|
19
|
+
}
|
|
20
|
+
else if (streamError) {
|
|
21
|
+
// Stream completed but had errors (e.g., GHCR rejection)
|
|
22
|
+
spinner.fail(failMessage);
|
|
23
|
+
reject(new Error(streamError));
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
spinner.succeed(successMessage);
|
|
27
|
+
resolve();
|
|
28
|
+
}
|
|
29
|
+
}, trackEventErrors
|
|
30
|
+
? (event) => {
|
|
31
|
+
// Track errors from event stream (GHCR rejections come here)
|
|
32
|
+
if (event.error && !streamError) {
|
|
33
|
+
streamError = event.error;
|
|
34
|
+
printError(`Error: ${event.error}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
: undefined);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Check if Docker daemon is running
|
|
42
|
+
*/
|
|
43
|
+
export async function checkDockerDaemon() {
|
|
44
|
+
try {
|
|
45
|
+
await docker.ping();
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Check if an image exists locally
|
|
54
|
+
*/
|
|
55
|
+
export async function imageExistsLocally(imageName) {
|
|
56
|
+
try {
|
|
57
|
+
const image = docker.getImage(imageName);
|
|
58
|
+
await image.inspect();
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
if (error.statusCode === 404) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
throw error;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Build Docker image from Dockerfile
|
|
70
|
+
* Always builds for linux/amd64 platform (deployment target)
|
|
71
|
+
*/
|
|
72
|
+
export async function buildImage(tag, dockerfilePath = '.', labels) {
|
|
73
|
+
const spinner = createSpinner('Building Docker image...').start();
|
|
74
|
+
try {
|
|
75
|
+
const stream = await docker.buildImage({
|
|
76
|
+
context: dockerfilePath,
|
|
77
|
+
src: ['.'], // Include all files in context
|
|
78
|
+
}, {
|
|
79
|
+
t: tag,
|
|
80
|
+
platform: 'linux/amd64',
|
|
81
|
+
labels,
|
|
82
|
+
});
|
|
83
|
+
await waitForStream(stream, spinner, 'Build complete', 'Build failed');
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
spinner.fail('Build failed');
|
|
87
|
+
throw error;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Tag a Docker image
|
|
92
|
+
*/
|
|
93
|
+
export async function tagImage(sourceImage, targetImage) {
|
|
94
|
+
const image = docker.getImage(sourceImage);
|
|
95
|
+
// Parse target image into repo and tag
|
|
96
|
+
const lastColon = targetImage.lastIndexOf(':');
|
|
97
|
+
const repo = lastColon > 0 ? targetImage.substring(0, lastColon) : targetImage;
|
|
98
|
+
const tag = lastColon > 0 ? targetImage.substring(lastColon + 1) : 'latest';
|
|
99
|
+
await image.tag({ repo, tag });
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Push Docker image to registry with authentication
|
|
103
|
+
*/
|
|
104
|
+
export async function pushImage(imageName, username, token, registry = 'ghcr.io') {
|
|
105
|
+
const spinner = createSpinner(`Pushing ${imageName}...`).start();
|
|
106
|
+
try {
|
|
107
|
+
const image = docker.getImage(imageName);
|
|
108
|
+
const stream = await image.push({
|
|
109
|
+
authconfig: {
|
|
110
|
+
username,
|
|
111
|
+
password: token,
|
|
112
|
+
serveraddress: registry,
|
|
113
|
+
},
|
|
114
|
+
});
|
|
115
|
+
await waitForStream(stream, spinner, `Pushed ${imageName}`, 'Push failed', true);
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
spinner.fail('Push failed');
|
|
119
|
+
// Provide helpful error messages based on common GHCR issues
|
|
120
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
121
|
+
const lowerMsg = errorMsg.toLowerCase();
|
|
122
|
+
if (lowerMsg.includes('denied') ||
|
|
123
|
+
lowerMsg.includes('unauthorized') ||
|
|
124
|
+
lowerMsg.includes('forbidden') ||
|
|
125
|
+
lowerMsg.includes('403')) {
|
|
126
|
+
printError('Authentication or authorization failed');
|
|
127
|
+
console.log('');
|
|
128
|
+
printInfo('Possible causes:');
|
|
129
|
+
printInfo(' • GitHub token lacks write:packages scope');
|
|
130
|
+
printInfo(' • Token is invalid or expired');
|
|
131
|
+
printInfo(' • No write access to repository');
|
|
132
|
+
console.log('');
|
|
133
|
+
printInfo('To fix:');
|
|
134
|
+
printInfo(' 1. Run: anycloud login');
|
|
135
|
+
printInfo(' 2. Ensure token has write:packages permission');
|
|
136
|
+
printInfo(` 3. Check repository access: https://github.com/${imageName.split('/')[1]}/${imageName.split('/')[2]?.split(':')[0]}`);
|
|
137
|
+
// Offer to re-authenticate if interactive
|
|
138
|
+
if (!isNonInteractive()) {
|
|
139
|
+
console.log('');
|
|
140
|
+
const response = await prompts({
|
|
141
|
+
type: 'confirm',
|
|
142
|
+
name: 'reauth',
|
|
143
|
+
message: 'Would you like to re-authenticate now?',
|
|
144
|
+
initial: true,
|
|
145
|
+
});
|
|
146
|
+
if (response.reauth) {
|
|
147
|
+
// Dynamic import to avoid circular dependency
|
|
148
|
+
const { authenticateWithGitHub } = await import('./oauth.js');
|
|
149
|
+
await authenticateWithGitHub();
|
|
150
|
+
console.log('');
|
|
151
|
+
printInfo('Authentication complete! Please run your command again.');
|
|
152
|
+
process.exit(0);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
else if (lowerMsg.includes('tag does not exist') ||
|
|
157
|
+
lowerMsg.includes('not found')) {
|
|
158
|
+
printError('Package does not exist in GitHub Container Registry');
|
|
159
|
+
console.log('');
|
|
160
|
+
printInfo('This appears to be your first push to this package.');
|
|
161
|
+
printInfo('GHCR packages must be created before automated pushes work.');
|
|
162
|
+
console.log('');
|
|
163
|
+
printInfo('To create the package manually:');
|
|
164
|
+
printInfo(' 1. Ensure your token has write:packages scope');
|
|
165
|
+
printInfo(` 2. docker push ${imageName}`);
|
|
166
|
+
printInfo(' 3. Visit: https://github.com/users/' +
|
|
167
|
+
username +
|
|
168
|
+
'/packages/container/' +
|
|
169
|
+
imageName.split('/')[2]?.split(':')[0] +
|
|
170
|
+
'/settings');
|
|
171
|
+
console.log('');
|
|
172
|
+
printInfo('Or wait for GitHub Actions to create it on first workflow run.');
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
printError(`Push failed: ${errorMsg}`);
|
|
176
|
+
}
|
|
177
|
+
throw error;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Verify image exists locally
|
|
182
|
+
* For remote-only images, we skip verification and let the daemon handle it
|
|
183
|
+
*/
|
|
184
|
+
export async function verifyImageAccessible(imageName, username, token, _registry = 'ghcr.io') {
|
|
185
|
+
try {
|
|
186
|
+
const image = docker.getImage(imageName);
|
|
187
|
+
await image.inspect();
|
|
188
|
+
return true;
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
if (error.statusCode === 404) {
|
|
192
|
+
// Image not found locally - this is expected for remote-only images
|
|
193
|
+
// We'll trust that it exists remotely and let deployment handle errors
|
|
194
|
+
return true;
|
|
195
|
+
}
|
|
196
|
+
// Other errors indicate a problem
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Get current git commit hash
|
|
202
|
+
* Throws error if not in a git repository
|
|
203
|
+
*/
|
|
204
|
+
function getCurrentCommitHash() {
|
|
205
|
+
if (!existsSync('.git')) {
|
|
206
|
+
throw new Error('Not in a git repository');
|
|
207
|
+
}
|
|
208
|
+
try {
|
|
209
|
+
return execSync('git rev-parse HEAD', { encoding: 'utf-8' }).trim();
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
throw new Error('Failed to get git commit hash');
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Get commit hash from image labels
|
|
217
|
+
*/
|
|
218
|
+
async function getImageCommitHash(imageName) {
|
|
219
|
+
try {
|
|
220
|
+
const image = docker.getImage(imageName);
|
|
221
|
+
const info = await image.inspect();
|
|
222
|
+
return info.Config?.Labels?.['org.opencontainers.image.revision'] || null;
|
|
223
|
+
}
|
|
224
|
+
catch (error) {
|
|
225
|
+
return null;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Get GitHub Container Registry path from git remote
|
|
230
|
+
* Throws error if not in git repo or no GitHub remote
|
|
231
|
+
*/
|
|
232
|
+
export function getGitRemoteRegistry() {
|
|
233
|
+
if (!existsSync('.git')) {
|
|
234
|
+
throw new Error('Not in a git repository');
|
|
235
|
+
}
|
|
236
|
+
try {
|
|
237
|
+
// Get remote URL
|
|
238
|
+
const remoteUrl = execSync('git remote get-url origin', {
|
|
239
|
+
encoding: 'utf-8',
|
|
240
|
+
}).trim();
|
|
241
|
+
// Parse GitHub owner/repo from various URL formats:
|
|
242
|
+
// - git@github.com:owner/repo.git
|
|
243
|
+
// - https://github.com/owner/repo.git
|
|
244
|
+
// - https://github.com/owner/repo
|
|
245
|
+
let match;
|
|
246
|
+
// SSH format
|
|
247
|
+
match = remoteUrl.match(/git@github\.com:(.+?)\/(.+?)(\.git)?$/);
|
|
248
|
+
if (match) {
|
|
249
|
+
return `ghcr.io/${match[1]}/${match[2].replace('.git', '')}`;
|
|
250
|
+
}
|
|
251
|
+
// HTTPS format
|
|
252
|
+
match = remoteUrl.match(/https?:\/\/github\.com\/(.+?)\/(.+?)(\.git)?$/);
|
|
253
|
+
if (match) {
|
|
254
|
+
return `ghcr.io/${match[1]}/${match[2].replace('.git', '')}`;
|
|
255
|
+
}
|
|
256
|
+
throw new Error('Git remote is not a GitHub repository');
|
|
257
|
+
}
|
|
258
|
+
catch (error) {
|
|
259
|
+
if (error instanceof Error && error.message.includes('Not in a git')) {
|
|
260
|
+
throw error;
|
|
261
|
+
}
|
|
262
|
+
throw new Error('No git remote origin found');
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Check if image string is a full registry path
|
|
267
|
+
*/
|
|
268
|
+
export function isRegistryPath(image) {
|
|
269
|
+
// Contains a slash and domain-like pattern
|
|
270
|
+
return (image.includes('/') &&
|
|
271
|
+
(image.includes('.') || image.startsWith('localhost')));
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* High-level orchestrator: resolve image argument and push if needed
|
|
275
|
+
* Returns the final registry path to use for deployment
|
|
276
|
+
*/
|
|
277
|
+
export async function resolveAndPushImage(imageArg, githubToken, githubUsername) {
|
|
278
|
+
// Step 1: Check Docker daemon
|
|
279
|
+
printInfo('Checking Docker daemon...');
|
|
280
|
+
const dockerRunning = await checkDockerDaemon();
|
|
281
|
+
if (!dockerRunning) {
|
|
282
|
+
printError('Docker daemon is not running');
|
|
283
|
+
printInfo('Please start Docker Desktop and try again');
|
|
284
|
+
process.exit(1);
|
|
285
|
+
}
|
|
286
|
+
// Step 2: If full registry path provided, verify and return
|
|
287
|
+
if (imageArg && isRegistryPath(imageArg)) {
|
|
288
|
+
printInfo(`Using registry image: ${imageArg}`);
|
|
289
|
+
const spinner = createSpinner('Verifying image accessibility...');
|
|
290
|
+
const accessible = await verifyImageAccessible(imageArg, githubUsername, githubToken);
|
|
291
|
+
if (!accessible) {
|
|
292
|
+
spinner.fail('Image not accessible');
|
|
293
|
+
printError(`Cannot access image: ${imageArg}. Check image name and authentication.`);
|
|
294
|
+
process.exit(1);
|
|
295
|
+
}
|
|
296
|
+
spinner.succeed('Image verified');
|
|
297
|
+
return imageArg;
|
|
298
|
+
}
|
|
299
|
+
// Step 3: Auto-build flow - get registry from git remote
|
|
300
|
+
const registryBase = getGitRemoteRegistry();
|
|
301
|
+
if (!registryBase) {
|
|
302
|
+
printError('No git remote found');
|
|
303
|
+
printInfo('Either specify a full image path: anycloud run ghcr.io/user/app:tag');
|
|
304
|
+
printInfo('Or run from a git repository with a GitHub remote');
|
|
305
|
+
process.exit(1);
|
|
306
|
+
}
|
|
307
|
+
// Step 4: Verify clean working directory
|
|
308
|
+
try {
|
|
309
|
+
const status = execSync('git status --porcelain', {
|
|
310
|
+
encoding: 'utf-8',
|
|
311
|
+
}).trim();
|
|
312
|
+
if (status) {
|
|
313
|
+
printError('Working directory has uncommitted changes');
|
|
314
|
+
printInfo('Commit or stash changes before deploying to ensure image matches git state');
|
|
315
|
+
printInfo('');
|
|
316
|
+
printInfo('Changed files:');
|
|
317
|
+
status.split('\n').forEach((line) => printInfo(` ${line}`));
|
|
318
|
+
process.exit(1);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
catch (error) {
|
|
322
|
+
printError('Failed to check git status');
|
|
323
|
+
throw error;
|
|
324
|
+
}
|
|
325
|
+
// Step 5: Get commit hash for smart rebuilds
|
|
326
|
+
const commitHash = getCurrentCommitHash();
|
|
327
|
+
const shortHash = commitHash.substring(0, 8);
|
|
328
|
+
// Step 6: Determine tags (hash + latest)
|
|
329
|
+
const hashTag = `${registryBase}:${shortHash}`;
|
|
330
|
+
const latestTag = `${registryBase}:latest`;
|
|
331
|
+
// Convert registry base to GitHub repo URL for package linking
|
|
332
|
+
const repoUrl = registryBase.replace('ghcr.io/', 'https://github.com/');
|
|
333
|
+
printInfo(`Building and pushing to: ${latestTag} (${shortHash})`);
|
|
334
|
+
// Step 7: Check if hash-tagged image exists (already built this commit)
|
|
335
|
+
const hashImageExists = await imageExistsLocally(hashTag);
|
|
336
|
+
if (hashImageExists) {
|
|
337
|
+
const imageCommit = await getImageCommitHash(hashTag);
|
|
338
|
+
if (imageCommit === commitHash) {
|
|
339
|
+
printInfo(`Image already built for commit ${shortHash}, skipping build`);
|
|
340
|
+
}
|
|
341
|
+
else {
|
|
342
|
+
// Hash collision or label missing, rebuild
|
|
343
|
+
printInfo(`Rebuilding image for commit ${shortHash}`);
|
|
344
|
+
await buildImage(hashTag, '.', {
|
|
345
|
+
'org.opencontainers.image.source': repoUrl,
|
|
346
|
+
'org.opencontainers.image.revision': commitHash,
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
// Check for Dockerfile
|
|
352
|
+
if (!existsSync('Dockerfile')) {
|
|
353
|
+
printError('No Dockerfile found in current directory');
|
|
354
|
+
process.exit(1);
|
|
355
|
+
}
|
|
356
|
+
// Build with hash tag and OCI labels for repo linking
|
|
357
|
+
await buildImage(hashTag, '.', {
|
|
358
|
+
'org.opencontainers.image.source': repoUrl,
|
|
359
|
+
'org.opencontainers.image.revision': commitHash,
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
// Step 8: Tag as latest
|
|
363
|
+
printInfo(`Tagging as ${latestTag}`);
|
|
364
|
+
await tagImage(hashTag, latestTag);
|
|
365
|
+
// Step 9: Push both tags
|
|
366
|
+
await pushImage(hashTag, githubUsername, githubToken);
|
|
367
|
+
await pushImage(latestTag, githubUsername, githubToken);
|
|
368
|
+
// Step 10: Verify push succeeded (check latest)
|
|
369
|
+
const spinner = createSpinner('Verifying push...');
|
|
370
|
+
const accessible = await verifyImageAccessible(latestTag, githubUsername, githubToken);
|
|
371
|
+
if (!accessible) {
|
|
372
|
+
spinner.fail('Push verification failed');
|
|
373
|
+
printError('Image was pushed but could not be verified');
|
|
374
|
+
printError('Deployment may fail. Check registry permissions.');
|
|
375
|
+
}
|
|
376
|
+
else {
|
|
377
|
+
spinner.succeed('Push verified');
|
|
378
|
+
}
|
|
379
|
+
return latestTag;
|
|
380
|
+
}
|
|
381
|
+
//# sourceMappingURL=docker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../../src/cli/services/docker.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,8 @@ import { printSuccess, printInfo, printError, printHighlight, createSpinner, } f
|
|
|
6
6
|
// GitHub OAuth Device Flow endpoints
|
|
7
7
|
const DEVICE_CODE_URL = 'https://github.com/login/device/code';
|
|
8
8
|
const TOKEN_POLL_URL = 'https://github.com/login/oauth/access_token';
|
|
9
|
-
const CLIENT_ID = '
|
|
10
|
-
const SCOPE = 'user:email read:packages';
|
|
9
|
+
const CLIENT_ID = 'Ov23liaPWSFbk7P7XDEY';
|
|
10
|
+
const SCOPE = 'user:email read:packages write:packages';
|
|
11
11
|
/**
|
|
12
12
|
* Initiate GitHub OAuth Device Flow
|
|
13
13
|
* Returns an access token after user authorization
|
|
@@ -18,12 +18,10 @@ export async function authenticateWithGitHub() {
|
|
|
18
18
|
const deviceCodeData = await getDeviceCode();
|
|
19
19
|
// Step 2: Display user code and verification URL
|
|
20
20
|
console.log('');
|
|
21
|
-
printInfo(
|
|
21
|
+
printInfo(`Continue GitHub Authentication at ${deviceCodeData.verification_uri}`);
|
|
22
22
|
console.log('');
|
|
23
23
|
printHighlight(`Your one-time code: ${deviceCodeData.user_code}`);
|
|
24
24
|
console.log('');
|
|
25
|
-
printInfo(`Verification URL: ${deviceCodeData.verification_uri}`);
|
|
26
|
-
console.log('');
|
|
27
25
|
// Step 3: Prompt to open browser
|
|
28
26
|
const shouldOpenBrowser = await prompts({
|
|
29
27
|
type: 'confirm',
|
|
@@ -36,16 +34,13 @@ export async function authenticateWithGitHub() {
|
|
|
36
34
|
// Dynamic import of open package
|
|
37
35
|
const open = (await import('open')).default;
|
|
38
36
|
await open(deviceCodeData.verification_uri);
|
|
39
|
-
printSuccess('Browser opened');
|
|
40
37
|
}
|
|
41
38
|
catch (error) {
|
|
42
39
|
printInfo('If the browser did not open, use the URL above');
|
|
43
40
|
}
|
|
44
41
|
}
|
|
45
|
-
console.log('');
|
|
46
|
-
printInfo('Waiting for authorization...');
|
|
47
|
-
console.log('');
|
|
48
42
|
// Step 4: Poll for access token
|
|
43
|
+
console.log('');
|
|
49
44
|
const spinner = createSpinner('Waiting for GitHub authorization...').start();
|
|
50
45
|
const token = await pollForToken(deviceCodeData.device_code, deviceCodeData.interval, deviceCodeData.expires_in);
|
|
51
46
|
spinner.succeed('Successfully authenticated with GitHub!');
|