@catapultjs/deploy 0.0.3 → 0.0.4
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/build/bin/run.js +4 -2
- package/build/bin/run.js.map +1 -1
- package/build/commands/deploy.js +2 -3
- package/build/commands/deploy.js.map +1 -1
- package/build/commands/init.js +1 -1
- package/build/commands/run_task.d.ts +1 -0
- package/build/commands/run_task.js +5 -1
- package/build/commands/run_task.js.map +1 -1
- package/build/commands/setup.js +2 -1
- package/build/commands/setup.js.map +1 -1
- package/build/commands/status.js +2 -1
- package/build/commands/status.js.map +1 -1
- package/build/recipes/git.js +6 -6
- package/build/recipes/git.js.map +1 -1
- package/build/recipes/pm2.d.ts +3 -2
- package/build/recipes/pm2.js +40 -29
- package/build/recipes/pm2.js.map +1 -1
- package/build/recipes/rsync.js +3 -3
- package/build/recipes/rsync.js.map +1 -1
- package/build/src/defaults.js +9 -9
- package/build/src/defaults.js.map +1 -1
- package/build/src/define_config.d.ts +1 -1
- package/build/src/define_config.js +9 -7
- package/build/src/define_config.js.map +1 -1
- package/build/src/deployer.js +15 -10
- package/build/src/deployer.js.map +1 -1
- package/build/src/logger.d.ts +12 -0
- package/build/src/logger.js +34 -0
- package/build/src/logger.js.map +1 -0
- package/build/src/pipeline/hooks.d.ts +2 -1
- package/build/src/pipeline/hooks.js.map +1 -1
- package/build/src/task/runner.d.ts +2 -0
- package/build/src/task/runner.js +4 -3
- package/build/src/task/runner.js.map +1 -1
- package/build/src/task/store.js +2 -1
- package/build/src/task/store.js.map +1 -1
- package/build/src/utils.d.ts +1 -3
- package/build/src/utils.js +4 -6
- package/build/src/utils.js.map +1 -1
- package/package.json +1 -1
package/build/bin/run.js
CHANGED
|
@@ -10,6 +10,7 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
|
|
|
10
10
|
import { pathToFileURL } from 'url';
|
|
11
11
|
import { findDeployFile } from "../src/utils.js";
|
|
12
12
|
import { Context } from "../src/context.js";
|
|
13
|
+
import { logger } from "../src/logger.js";
|
|
13
14
|
import { Kernel, ListLoader, HelpCommand } from '@adonisjs/ace';
|
|
14
15
|
import Version from '../commands/version.js';
|
|
15
16
|
import Init from '../commands/init.js';
|
|
@@ -36,10 +37,11 @@ const skipDeployFile = ['init', 'version'].includes(process.argv[2]);
|
|
|
36
37
|
if (!skipDeployFile) {
|
|
37
38
|
const deployFile = await findDeployFile();
|
|
38
39
|
if (!deployFile) {
|
|
39
|
-
|
|
40
|
+
logger.error('No deploy.ts or deploy.js found in current directory. Run `npx cata init` to create one.');
|
|
40
41
|
process.exit(1);
|
|
41
42
|
}
|
|
42
|
-
await import(__rewriteRelativeImportExtension(pathToFileURL(deployFile).href));
|
|
43
|
+
const mod = await import(__rewriteRelativeImportExtension(pathToFileURL(deployFile).href));
|
|
44
|
+
await mod.default();
|
|
43
45
|
const verboseLevel = parseVerboseLevel(process.argv.slice(2));
|
|
44
46
|
if (verboseLevel > 0)
|
|
45
47
|
Context.get().config.verbose = verboseLevel;
|
package/build/bin/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../bin/run.ts"],"names":[],"mappings":";;;;;;;;;AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC/D,OAAO,OAAO,MAAM,wBAAwB,CAAA;AAC5C,OAAO,IAAI,MAAM,qBAAqB,CAAA;AACtC,OAAO,KAAK,MAAM,sBAAsB,CAAA;AACxC,OAAO,MAAM,MAAM,uBAAuB,CAAA;AAC1C,OAAO,QAAQ,MAAM,yBAAyB,CAAA;AAC9C,OAAO,MAAM,MAAM,uBAAuB,CAAA;AAC1C,OAAO,YAAY,MAAM,8BAA8B,CAAA;AACvD,OAAO,SAAS,MAAM,2BAA2B,CAAA;AACjD,OAAO,YAAY,MAAM,8BAA8B,CAAA;AACvD,OAAO,OAAO,MAAM,yBAAyB,CAAA;AAC7C,OAAO,GAAG,MAAM,oBAAoB,CAAA;AAEpC,SAAS,iBAAiB,CAAC,IAAc;IACvC,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI;YAAE,KAAK,EAAE,CAAA;aAC3C,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,KAAK,IAAI,CAAC,CAAA;IAC3C,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAc,CAAA;AACxC,CAAC;AAED,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAEpE,IAAI,CAAC,cAAc,EAAE,CAAC;IACpB,MAAM,UAAU,GAAG,MAAM,cAAc,EAAE,CAAA;IAEzC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../bin/run.ts"],"names":[],"mappings":"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"}
|
package/build/commands/deploy.js
CHANGED
|
@@ -31,15 +31,14 @@ export default class Deploy extends BaseDeployCommand {
|
|
|
31
31
|
}
|
|
32
32
|
return host;
|
|
33
33
|
}));
|
|
34
|
-
|
|
34
|
+
this.logger.log(`🚀 deploy release ${ctx.release}`);
|
|
35
35
|
if (ctx.hooks.beforeDeploy)
|
|
36
36
|
await ctx.hooks.beforeDeploy({ hosts });
|
|
37
37
|
for (const host of hosts) {
|
|
38
38
|
try {
|
|
39
39
|
await deployHost(ctx, host);
|
|
40
40
|
}
|
|
41
|
-
catch
|
|
42
|
-
this.logger.error(error.message);
|
|
41
|
+
catch {
|
|
43
42
|
this.exitCode = 1;
|
|
44
43
|
return;
|
|
45
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../commands/deploy.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../commands/deploy.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE1D,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,iBAAiB;IACnD,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAA;IAC7B,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAA;IACxB,MAAM,CAAC,WAAW,GAAG,mBAAmB,CAAA;IAQxC,KAAK,CAAC,GAAG;QACP,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;QAEzB,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QACpC,IAAI,CAAC,KAAK;YAAE,OAAM;QAElB,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CACvB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACvB,IAAI,IAAI,CAAC,MAAM;gBAAE,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAA;YACxD,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;gBACvD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,IAAI,EAAE,EAAE;oBACxE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;iBAC1B,CAAC,CAAA;gBACF,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAA;YAC5B,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC,CAAC,CACH,CAAA;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,qBAAqB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;QAEnD,IAAI,GAAG,CAAC,KAAK,CAAC,YAAY;YAAE,MAAM,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;QACnE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;YAC7B,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;gBACjB,OAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW;YAAE,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;QAEjE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,CAAA;IAC3C,CAAC;;AAtCO;IADP,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;;sCAC7B;AAG1B;IADP,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,0CAA0C,EAAE,CAAC;;uCAC/D"}
|
package/build/commands/init.js
CHANGED
|
@@ -7,7 +7,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
|
-
import { args } from '@adonisjs/ace';
|
|
10
|
+
import { args, flags } from '@adonisjs/ace';
|
|
11
11
|
import { Context } from "../src/context.js";
|
|
12
12
|
import { hasTask, runTask, getTasks } from "../src/task.js";
|
|
13
13
|
import { getCurrentRelease } from "../src/deployer.js";
|
|
@@ -40,4 +40,8 @@ __decorate([
|
|
|
40
40
|
args.string({ description: 'Task name to run' }),
|
|
41
41
|
__metadata("design:type", String)
|
|
42
42
|
], RunTask.prototype, "taskName", void 0);
|
|
43
|
+
__decorate([
|
|
44
|
+
flags.boolean({ alias: 'v', description: 'Verbose output (-v level 1, -vv level 2)' }),
|
|
45
|
+
__metadata("design:type", Boolean)
|
|
46
|
+
], RunTask.prototype, "verbose", void 0);
|
|
43
47
|
//# sourceMappingURL=run_task.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run_task.js","sourceRoot":"","sources":["../../commands/run_task.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"run_task.js","sourceRoot":"","sources":["../../commands/run_task.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE1D,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,iBAAiB;IACpD,MAAM,CAAC,WAAW,GAAG,MAAM,CAAA;IAC3B,MAAM,CAAC,WAAW,GAAG,kCAAkC,CAAA;IAQvD,KAAK,CAAC,GAAG;QACP,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;QAEzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,QAAQ,gBAAgB,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACxF,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;YACjB,OAAM;QACR,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QACtC,IAAI,CAAC,KAAK;YAAE,OAAM;QAElB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;YACzD,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,8CAA8C,CAAC,CAAA;gBAC9E,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;gBACjB,SAAQ;YACV,CAAC;YACD,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,IAAI,CAAC,CAAA;QACzE,CAAC;IACH,CAAC;;AA1BO;IADP,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;;yCACzB;AAGhB;IADP,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,0CAA0C,EAAE,CAAC;;wCAC/D"}
|
package/build/commands/setup.js
CHANGED
|
@@ -2,6 +2,7 @@ import { Context } from "../src/context.js";
|
|
|
2
2
|
import { setupHost } from "../src/deployer.js";
|
|
3
3
|
import { hooks } from "../src/pipeline/hooks.js";
|
|
4
4
|
import { BaseDeployCommand } from "../src/base_command.js";
|
|
5
|
+
import { logger } from "../src/logger.js";
|
|
5
6
|
export default class Setup extends BaseDeployCommand {
|
|
6
7
|
static commandName = 'deploy:setup';
|
|
7
8
|
static description = 'Initialize directories on servers';
|
|
@@ -13,7 +14,7 @@ export default class Setup extends BaseDeployCommand {
|
|
|
13
14
|
for (const host of hosts) {
|
|
14
15
|
await setupHost(ctx, host);
|
|
15
16
|
for (const hook of hooks.getSetup()) {
|
|
16
|
-
await hook(ctx, host);
|
|
17
|
+
await hook(ctx, host, logger);
|
|
17
18
|
}
|
|
18
19
|
}
|
|
19
20
|
this.logger.action('setup').succeeded();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEzC,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,iBAAiB;IAClD,MAAM,CAAC,WAAW,GAAG,cAAc,CAAA;IACnC,MAAM,CAAC,WAAW,GAAG,mCAAmC,CAAA;IAExD,KAAK,CAAC,GAAG;QACP,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;QACzB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QACtC,IAAI,CAAC,KAAK;YAAE,OAAM;QAClB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;YAC1B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACpC,MAAM,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;YAC/B,CAAC;QACH,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAA;IACzC,CAAC"}
|
package/build/commands/status.js
CHANGED
|
@@ -5,6 +5,7 @@ import { getPipeline } from "../src/pipeline.js";
|
|
|
5
5
|
import { hooks } from "../src/pipeline/hooks.js";
|
|
6
6
|
import { q, getPaths, ssh, detectPackageManager } from "../src/utils.js";
|
|
7
7
|
import { BaseDeployCommand } from "../src/base_command.js";
|
|
8
|
+
import { logger } from "../src/logger.js";
|
|
8
9
|
export default class Status extends BaseDeployCommand {
|
|
9
10
|
static commandName = 'status';
|
|
10
11
|
static description = 'Show server status';
|
|
@@ -36,7 +37,7 @@ export default class Status extends BaseDeployCommand {
|
|
|
36
37
|
this.logger.log(`Node ${this.colors.dim(nodeVersion || 'unavailable')}`);
|
|
37
38
|
this.logger.log(`${pm.padEnd(8)} ${this.colors.dim(pmVersion || 'unavailable')}`);
|
|
38
39
|
for (const hook of hooks.getStatus()) {
|
|
39
|
-
await hook(ctx, host);
|
|
40
|
+
await hook(ctx, host, logger);
|
|
40
41
|
}
|
|
41
42
|
const { stdout: lockStdout } = await ssh(host, `set +e\n[ -f ${q(paths.lock)} ] && cat ${q(paths.lock)} || true`);
|
|
42
43
|
const lock = lockStdout.trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAChD,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../commands/status.ts"],"names":[],"mappings":"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"}
|
package/build/recipes/git.js
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
import { $ } from 'execa';
|
|
2
2
|
import { task, after, isVerbose } from "../index.js";
|
|
3
|
-
import { ssh,
|
|
4
|
-
task('git:check', async ({ host, deployCtx }) => {
|
|
3
|
+
import { ssh, q } from "../src/utils.js";
|
|
4
|
+
task('git:check', async ({ host, deployCtx, logger }) => {
|
|
5
5
|
if (!host.branch)
|
|
6
6
|
return;
|
|
7
7
|
const branchName = typeof host.branch === 'object' ? host.branch.name : host.branch;
|
|
8
8
|
let repository = deployCtx.config.repository;
|
|
9
9
|
if (!repository) {
|
|
10
10
|
if (isVerbose())
|
|
11
|
-
|
|
11
|
+
logger.cmd('git remote get-url origin');
|
|
12
12
|
repository = (await $ `git remote get-url origin`).stdout.trim();
|
|
13
13
|
}
|
|
14
14
|
try {
|
|
15
15
|
if (isVerbose())
|
|
16
|
-
|
|
16
|
+
logger.cmd(`git ls-remote --exit-code --heads ${repository} ${branchName}`);
|
|
17
17
|
await $ `git ls-remote --exit-code --heads ${repository} ${branchName}`;
|
|
18
18
|
}
|
|
19
19
|
catch {
|
|
20
20
|
throw new Error(`[${host.name}] branch "${branchName}" does not exist on remote ${repository}`);
|
|
21
21
|
}
|
|
22
22
|
});
|
|
23
|
-
task('deploy:update_code', async ({ host, paths, deployCtx }) => {
|
|
23
|
+
task('deploy:update_code', async ({ host, paths, deployCtx, logger }) => {
|
|
24
24
|
if (!host.branch)
|
|
25
25
|
throw new Error(`[${host.name}] git mode requires "branch" on host`);
|
|
26
26
|
const branchName = typeof host.branch === 'object' ? host.branch.name : host.branch;
|
|
27
27
|
let repository = deployCtx.config.repository;
|
|
28
28
|
if (!repository) {
|
|
29
29
|
if (isVerbose())
|
|
30
|
-
|
|
30
|
+
logger.cmd('git remote get-url origin');
|
|
31
31
|
repository = (await $ `git remote get-url origin`).stdout.trim();
|
|
32
32
|
}
|
|
33
33
|
await ssh(host, `set -e\ngit clone --depth 1 --branch ${q(branchName)} ${q(repository)} ${q(paths.release)}`);
|
package/build/recipes/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../recipes/git.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,OAAO,CAAA;AACzB,OAAO,EAAoB,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACtE,OAAO,EAAE,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../recipes/git.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,OAAO,CAAA;AACzB,OAAO,EAAoB,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACtE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAA;AAQxC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAe,EAAE,EAAE;IACnE,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAM;IAExB,MAAM,UAAU,GAAG,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAA;IAEnF,IAAI,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,CAAA;IAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,IAAI,SAAS,EAAE;YAAE,MAAM,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;QACxD,UAAU,GAAG,CAAC,MAAM,CAAC,CAAA,2BAA2B,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;IACjE,CAAC;IAED,IAAI,CAAC;QACH,IAAI,SAAS,EAAE;YACb,MAAM,CAAC,GAAG,CAAC,qCAAqC,UAAU,IAAI,UAAU,EAAE,CAAC,CAAA;QAC7E,MAAM,CAAC,CAAA,qCAAqC,UAAU,IAAI,UAAU,EAAE,CAAA;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,aAAa,UAAU,8BAA8B,UAAU,EAAE,CAAC,CAAA;IACjG,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAe,EAAE,EAAE;IACnF,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,sCAAsC,CAAC,CAAA;IAEtF,MAAM,UAAU,GAAG,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAA;IAEnF,IAAI,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,CAAA;IAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,IAAI,SAAS,EAAE;YAAE,MAAM,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;QACxD,UAAU,GAAG,CAAC,MAAM,CAAC,CAAA,2BAA2B,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;IACjE,CAAC;IAED,MAAM,GAAG,CACP,IAAI,EACJ,wCAAwC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAC7F,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,KAAK,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA"}
|
package/build/recipes/pm2.d.ts
CHANGED
|
@@ -3,11 +3,12 @@ declare module '../src/types.ts' {
|
|
|
3
3
|
'pm2:ecosystem': true;
|
|
4
4
|
'pm2:start': true;
|
|
5
5
|
'pm2:save': true;
|
|
6
|
+
'pm2:stop': true;
|
|
6
7
|
'pm2:reload': true;
|
|
8
|
+
'pm2:restart': true;
|
|
7
9
|
'pm2:logs': true;
|
|
8
10
|
'pm2:list': true;
|
|
9
|
-
'pm2:
|
|
10
|
-
'pm2:restart': true;
|
|
11
|
+
'pm2:show': true;
|
|
11
12
|
}
|
|
12
13
|
}
|
|
13
14
|
export {};
|
package/build/recipes/pm2.js
CHANGED
|
@@ -1,48 +1,59 @@
|
|
|
1
1
|
import { createRequire } from 'module';
|
|
2
2
|
import { task, cd, run, after, onStatus, bin } from "../index.js";
|
|
3
3
|
import { getPaths, ssh, q } from "../src/utils.js";
|
|
4
|
-
onStatus(async (_ctx, host) => {
|
|
4
|
+
onStatus(async (_ctx, host, logger) => {
|
|
5
5
|
const { stdout } = await ssh(host, `set +e\n${bin('pm2')} --version || true`);
|
|
6
|
-
|
|
6
|
+
logger.log(stdout.trim() ? `pm2 ${stdout.trim()}` : 'pm2 unavailable');
|
|
7
7
|
});
|
|
8
8
|
task('pm2:ecosystem', () => {
|
|
9
9
|
run('ln -sfn {{release_path}}/ecosystem.config.cjs {{base_path}}/ecosystem.config.cjs');
|
|
10
10
|
});
|
|
11
|
-
task('pm2:start', (
|
|
12
|
-
|
|
13
|
-
cd(paths.current);
|
|
11
|
+
task('pm2:start', () => {
|
|
12
|
+
cd('{{base_path}}');
|
|
14
13
|
run(`${bin('pm2')} startOrReload ecosystem.config.cjs --update-env`);
|
|
15
14
|
});
|
|
16
15
|
task('pm2:save', () => {
|
|
16
|
+
cd('{{base_path}}');
|
|
17
17
|
run(`${bin('pm2')} save`);
|
|
18
18
|
});
|
|
19
|
-
task('pm2:
|
|
20
|
-
|
|
19
|
+
task('pm2:stop', async () => {
|
|
20
|
+
cd('{{base_path}}');
|
|
21
|
+
run(`${bin('pm2')} stop ecosystem.config.cjs --update-env`);
|
|
22
|
+
});
|
|
23
|
+
task('pm2:reload', async () => {
|
|
24
|
+
cd('{{base_path}}');
|
|
25
|
+
run(`${bin('pm2')} reload ecosystem.config.cjs --update-env`);
|
|
26
|
+
});
|
|
27
|
+
task('pm2:restart', async () => {
|
|
28
|
+
cd('{{base_path}}');
|
|
29
|
+
run(`${bin('pm2')} restart ecosystem.config.cjs --update-env`);
|
|
30
|
+
});
|
|
31
|
+
task('pm2:logs', async ({ host, deployCtx, logger }) => {
|
|
32
|
+
const { base } = getPaths(host.deployPath, deployCtx.release);
|
|
21
33
|
const require = createRequire(import.meta.url);
|
|
22
34
|
const ecosystem = require(process.cwd() + '/ecosystem.config.cjs');
|
|
23
35
|
const names = (ecosystem?.apps ?? []).map((a) => a.name).join(' ');
|
|
24
|
-
const { stdout } = await ssh(host, `set -e\ncd ${q(
|
|
25
|
-
|
|
26
|
-
});
|
|
27
|
-
task('pm2:list', async ({ host, deployCtx }) => {
|
|
28
|
-
const
|
|
29
|
-
const { stdout } = await ssh(host, `set -e\ncd ${q(
|
|
30
|
-
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
console.log(`✅ [${host.name}] pm2 restarted`);
|
|
36
|
+
const { stdout } = await ssh(host, `set -e\ncd ${q(base)}\n${bin('pm2')} logs ${names} --nostream --lines 50`, { color: true });
|
|
37
|
+
logger.log(stdout.trim());
|
|
38
|
+
});
|
|
39
|
+
task('pm2:list', async ({ host, deployCtx, logger }) => {
|
|
40
|
+
const { base } = getPaths(host.deployPath, deployCtx.release);
|
|
41
|
+
const { stdout } = await ssh(host, `set -e\ncd ${q(base)}\n${bin('pm2')} list`, {
|
|
42
|
+
color: true,
|
|
43
|
+
});
|
|
44
|
+
logger.log(stdout.trim());
|
|
45
|
+
});
|
|
46
|
+
task('pm2:show', async ({ host, deployCtx, logger }) => {
|
|
47
|
+
const { base } = getPaths(host.deployPath, deployCtx.release);
|
|
48
|
+
const require = createRequire(import.meta.url);
|
|
49
|
+
const ecosystem = require(process.cwd() + '/ecosystem.config.cjs');
|
|
50
|
+
const names = (ecosystem?.apps ?? []).map((a) => a.name);
|
|
51
|
+
for (const name of names) {
|
|
52
|
+
const { stdout } = await ssh(host, `set -e\ncd ${q(base)}\n${bin('pm2')} show ${q(name)}`, {
|
|
53
|
+
color: true,
|
|
54
|
+
});
|
|
55
|
+
logger.log(stdout.trim());
|
|
56
|
+
}
|
|
46
57
|
});
|
|
47
58
|
after('deploy:publish', 'pm2:ecosystem');
|
|
48
59
|
after('pm2:ecosystem', 'pm2:start');
|
package/build/recipes/pm2.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pm2.js","sourceRoot":"","sources":["../../recipes/pm2.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AACtC,OAAO,EAAoB,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACnF,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"pm2.js","sourceRoot":"","sources":["../../recipes/pm2.ts"],"names":[],"mappings":"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"}
|
package/build/recipes/rsync.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { $ } from 'execa';
|
|
2
2
|
import { task, get, isVerbose } from "../index.js";
|
|
3
|
-
import { rsyncSshFlag, resolveSshArgs
|
|
4
|
-
task('deploy:update_code', async ({ host, paths }) => {
|
|
3
|
+
import { rsyncSshFlag, resolveSshArgs } from "../src/utils.js";
|
|
4
|
+
task('deploy:update_code', async ({ host, paths, logger }) => {
|
|
5
5
|
const [target] = resolveSshArgs(host);
|
|
6
6
|
const source = get('rsync_source_path', './');
|
|
7
7
|
const args = ['-az', '-e', rsyncSshFlag(host)];
|
|
@@ -9,7 +9,7 @@ task('deploy:update_code', async ({ host, paths }) => {
|
|
|
9
9
|
args.push(`--exclude=${pattern}`);
|
|
10
10
|
}
|
|
11
11
|
if (isVerbose())
|
|
12
|
-
|
|
12
|
+
logger.cmd(`rsync ${args.join(' ')} ${source} ${target}:${paths.release}/`);
|
|
13
13
|
await $ `rsync ${args} ${source} ${target}:${paths.release}/`;
|
|
14
14
|
});
|
|
15
15
|
//# sourceMappingURL=rsync.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rsync.js","sourceRoot":"","sources":["../../recipes/rsync.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,OAAO,CAAA;AACzB,OAAO,EAAoB,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACpE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"rsync.js","sourceRoot":"","sources":["../../recipes/rsync.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,OAAO,CAAA;AACzB,OAAO,EAAoB,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACpE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAE9D,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAe,EAAE,EAAE;IACxE,MAAM,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;IACrC,MAAM,MAAM,GAAG,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAA;IAC7C,MAAM,IAAI,GAAa,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAA;IACxD,KAAK,MAAM,OAAO,IAAI,GAAG,CAAW,gBAAgB,EAAE,EAAE,CAAC,EAAE,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,aAAa,OAAO,EAAE,CAAC,CAAA;IACnC,CAAC;IACD,IAAI,SAAS,EAAE;QACb,MAAM,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC,CAAA;IAC7E,MAAM,CAAC,CAAA,SAAS,IAAI,IAAI,MAAM,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,GAAG,CAAA;AAC9D,CAAC,CAAC,CAAA"}
|
package/build/src/defaults.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { $ } from 'execa';
|
|
2
|
-
import { q, ssh,
|
|
2
|
+
import { q, ssh, sleep } from "./utils.js";
|
|
3
3
|
import { task, run, isVerbose } from "./task.js";
|
|
4
4
|
import { get } from "./store.js";
|
|
5
5
|
task('deploy:lock', async ({ host, deployCtx, paths }) => {
|
|
@@ -22,7 +22,7 @@ task('deploy:unlock', async ({ host, paths }) => {
|
|
|
22
22
|
set +e
|
|
23
23
|
rm -f ${q(paths.lock)}
|
|
24
24
|
true
|
|
25
|
-
|
|
25
|
+
`, { quiet: true });
|
|
26
26
|
});
|
|
27
27
|
task('deploy:release', () => {
|
|
28
28
|
run('mkdir -p {{release_path}}');
|
|
@@ -45,16 +45,16 @@ task('deploy:shared', () => {
|
|
|
45
45
|
task('deploy:publish', () => {
|
|
46
46
|
run('ln -sfn {{release_path}} {{current_path}}');
|
|
47
47
|
});
|
|
48
|
-
task('deploy:log_revision', async ({ host, deployCtx }) => {
|
|
48
|
+
task('deploy:log_revision', async ({ host, deployCtx, logger }) => {
|
|
49
49
|
const branch = typeof host.branch === 'object' ? host.branch.name : (host.branch ?? 'unknown');
|
|
50
50
|
let commit = 'unknown';
|
|
51
51
|
let user = 'unknown';
|
|
52
52
|
try {
|
|
53
53
|
if (isVerbose())
|
|
54
|
-
|
|
54
|
+
logger.cmd('git rev-parse HEAD');
|
|
55
55
|
commit = (await $ `git rev-parse HEAD`).stdout.trim();
|
|
56
56
|
if (isVerbose())
|
|
57
|
-
|
|
57
|
+
logger.cmd('git config user.name');
|
|
58
58
|
user = (await $ `git config user.name`).stdout.trim();
|
|
59
59
|
}
|
|
60
60
|
catch { }
|
|
@@ -62,8 +62,8 @@ task('deploy:log_revision', async ({ host, deployCtx }) => {
|
|
|
62
62
|
const logFile = `${host.deployPath}/revisions.log`;
|
|
63
63
|
await ssh(host, `echo ${q(line)} >> ${q(logFile)}`);
|
|
64
64
|
});
|
|
65
|
-
task('deploy:healthcheck', async ({ deployCtx, host }) => {
|
|
66
|
-
|
|
65
|
+
task('deploy:healthcheck', async ({ deployCtx, host, logger }) => {
|
|
66
|
+
logger.step(host.name, `healthcheck ${host.healthcheckUrl}`);
|
|
67
67
|
if (deployCtx.config.healthcheckRetries) {
|
|
68
68
|
for (let i = 1; i <= deployCtx.config.healthcheckRetries; i += 1) {
|
|
69
69
|
try {
|
|
@@ -71,11 +71,11 @@ task('deploy:healthcheck', async ({ deployCtx, host }) => {
|
|
|
71
71
|
set -e
|
|
72
72
|
curl --fail --silent --show-error --max-time 5 ${q(host.healthcheckUrl)} >/dev/null
|
|
73
73
|
`);
|
|
74
|
-
|
|
74
|
+
logger.step(host.name, `healthcheck OK (${i}/${deployCtx.config.healthcheckRetries})`);
|
|
75
75
|
return;
|
|
76
76
|
}
|
|
77
77
|
catch {
|
|
78
|
-
|
|
78
|
+
logger.step(host.name, `healthcheck failed (${i}/${deployCtx.config.healthcheckRetries})`);
|
|
79
79
|
if (i < deployCtx.config.healthcheckRetries) {
|
|
80
80
|
await sleep(deployCtx.config.healthcheckDelayMs || 3_000);
|
|
81
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/defaults.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { Context } from "./context.js";
|
|
2
2
|
import { remove, getPipeline } from "./pipeline.js";
|
|
3
3
|
import "./defaults.js";
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
4
|
+
export function defineConfig(config) {
|
|
5
|
+
return async () => {
|
|
6
|
+
const release = new Date().toISOString().replace(/[:.]/g, '-');
|
|
7
|
+
Context.set({ config, release, hooks: config.hooks ?? {} });
|
|
8
|
+
const hasHealthcheck = config.hosts.some((h) => h.healthcheckUrl);
|
|
9
|
+
if (!hasHealthcheck && getPipeline().includes('deploy:healthcheck')) {
|
|
10
|
+
remove('deploy:healthcheck');
|
|
11
|
+
}
|
|
12
|
+
};
|
|
11
13
|
}
|
|
12
14
|
//# sourceMappingURL=define_config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define_config.js","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,eAAe,CAAA;AAEtB,MAAM,
|
|
1
|
+
{"version":3,"file":"define_config.js","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,eAAe,CAAA;AAEtB,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,OAAO,KAAK,IAAI,EAAE;QAChB,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;QAC9D,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,CAAA;QAE3D,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAA;QACjE,IAAI,CAAC,cAAc,IAAI,WAAW,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACpE,MAAM,CAAC,oBAAoB,CAAC,CAAA;QAC9B,CAAC;IACH,CAAC,CAAA;AACH,CAAC"}
|
package/build/src/deployer.js
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import { q, getPaths, ssh,
|
|
1
|
+
import { q, getPaths, ssh, elapsed } from "./utils.js";
|
|
2
2
|
import { runTask } from "./task.js";
|
|
3
3
|
import { get } from "./store.js";
|
|
4
4
|
import { getPipeline } from "./pipeline.js";
|
|
5
|
+
import { logger } from "./logger.js";
|
|
5
6
|
async function runHook(ctx, name, context = {}) {
|
|
6
7
|
if (!ctx.hooks[name])
|
|
7
8
|
return;
|
|
8
|
-
|
|
9
|
+
logger.step(`hook: ${name}`);
|
|
9
10
|
await ctx.hooks[name](context);
|
|
10
11
|
}
|
|
11
12
|
export async function setupHost(ctx, host) {
|
|
12
13
|
const paths = getPaths(host.deployPath, ctx.release);
|
|
13
|
-
|
|
14
|
+
logger.step(host.name, 'setup directories');
|
|
14
15
|
const dirs = get('writable_dirs', []);
|
|
15
16
|
const files = get('shared_files', []);
|
|
16
17
|
const mkdirs = dirs.map((dir) => `mkdir -p ${q(paths.shared + '/' + dir)}`).join('\n ');
|
|
@@ -71,7 +72,7 @@ export async function rollbackHost(ctx, host) {
|
|
|
71
72
|
if (!previous) {
|
|
72
73
|
throw new Error(`[${host.name}] no previous release available`);
|
|
73
74
|
}
|
|
74
|
-
|
|
75
|
+
logger.step(host.name, `rollback to ${previous}`);
|
|
75
76
|
await ssh(host, `set -e\nln -sfn ${q(paths.releases + '/' + previous)} ${q(paths.current)}`);
|
|
76
77
|
if (getPipeline().includes('pm2:start')) {
|
|
77
78
|
await runTask('pm2:start', ctx, host);
|
|
@@ -81,30 +82,34 @@ export async function rollbackHost(ctx, host) {
|
|
|
81
82
|
}
|
|
82
83
|
}
|
|
83
84
|
export async function deployHost(ctx, host) {
|
|
85
|
+
let locked = false;
|
|
84
86
|
let published = false;
|
|
85
87
|
const deployStart = Date.now();
|
|
86
88
|
await runHook(ctx, 'beforeHostDeploy', { host });
|
|
87
89
|
try {
|
|
88
90
|
for (const taskName of getPipeline()) {
|
|
89
|
-
|
|
91
|
+
logger.task(elapsed(Date.now() - deployStart), host.name, taskName);
|
|
90
92
|
await runTask(taskName, ctx, host);
|
|
93
|
+
if (taskName === 'deploy:lock')
|
|
94
|
+
locked = true;
|
|
91
95
|
if (taskName === 'deploy:publish')
|
|
92
96
|
published = true;
|
|
93
97
|
}
|
|
94
|
-
|
|
98
|
+
logger.ok(host.name, `deploy OK -> ${ctx.release}`, elapsed(Date.now() - deployStart));
|
|
95
99
|
}
|
|
96
100
|
catch (error) {
|
|
97
|
-
|
|
101
|
+
logger.fail(host.name, `deploy failed: ${error.message}`);
|
|
98
102
|
if (published) {
|
|
99
103
|
try {
|
|
100
104
|
await rollbackHost(ctx, host);
|
|
101
|
-
|
|
105
|
+
logger.rollback(host.name, 'auto rollback OK');
|
|
102
106
|
}
|
|
103
107
|
catch (rollbackError) {
|
|
104
|
-
|
|
108
|
+
logger.boom(host.name, `auto rollback failed: ${rollbackError.message}`);
|
|
105
109
|
}
|
|
106
110
|
}
|
|
107
|
-
|
|
111
|
+
if (locked)
|
|
112
|
+
await runTask('deploy:unlock', ctx, host);
|
|
108
113
|
throw error;
|
|
109
114
|
}
|
|
110
115
|
finally {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployer.js","sourceRoot":"","sources":["../../src/deployer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"deployer.js","sourceRoot":"","sources":["../../src/deployer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Logger } from '@poppinss/cliui';
|
|
2
|
+
export declare class CatapultLogger extends Logger {
|
|
3
|
+
step(message: string): void;
|
|
4
|
+
step(host: string, message: string): void;
|
|
5
|
+
task(elapsed: string, host: string, name: string): void;
|
|
6
|
+
ok(host: string, message: string, elapsed?: string): void;
|
|
7
|
+
fail(host: string, message: string): void;
|
|
8
|
+
rollback(host: string, message: string): void;
|
|
9
|
+
boom(host: string, message: string): void;
|
|
10
|
+
cmd(command: string): void;
|
|
11
|
+
}
|
|
12
|
+
export declare const logger: CatapultLogger;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Logger, colors } from '@poppinss/cliui';
|
|
2
|
+
const blue = (s) => colors.ansi().blue(s);
|
|
3
|
+
const gray = (s) => colors.ansi().dim(s);
|
|
4
|
+
const yellow = (s) => colors.ansi().yellow(s);
|
|
5
|
+
export class CatapultLogger extends Logger {
|
|
6
|
+
step(hostOrMessage, message) {
|
|
7
|
+
if (message === undefined) {
|
|
8
|
+
this.log(`==> ${hostOrMessage}`);
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
this.log(`==> ${blue(`[${hostOrMessage}]`)} ${message}`);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
task(elapsed, host, name) {
|
|
15
|
+
this.log(`${gray(elapsed)} ${blue(`[${host}]`)} ${name}`);
|
|
16
|
+
}
|
|
17
|
+
ok(host, message, elapsed) {
|
|
18
|
+
this.success(message, { prefix: host, suffix: elapsed });
|
|
19
|
+
}
|
|
20
|
+
fail(host, message) {
|
|
21
|
+
this.error(message, { prefix: host });
|
|
22
|
+
}
|
|
23
|
+
rollback(host, message) {
|
|
24
|
+
this.warning(message, { prefix: host });
|
|
25
|
+
}
|
|
26
|
+
boom(host, message) {
|
|
27
|
+
this.error(message, { prefix: host });
|
|
28
|
+
}
|
|
29
|
+
cmd(command) {
|
|
30
|
+
this.log(yellow(` $ ${command}`));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export const logger = new CatapultLogger();
|
|
34
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAEhD,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjD,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAChD,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAErD,MAAM,OAAO,cAAe,SAAQ,MAAM;IAKxC,IAAI,CAAC,aAAqB,EAAE,OAAgB;QAC1C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,OAAO,aAAa,EAAE,CAAC,CAAA;QAClC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,aAAa,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC,CAAA;QAC1D,CAAC;IACH,CAAC;IAGD,IAAI,CAAC,OAAe,EAAE,IAAY,EAAE,IAAY;QAC9C,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;IAC3D,CAAC;IAGD,EAAE,CAAC,IAAY,EAAE,OAAe,EAAE,OAAgB;QAChD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;IAC1D,CAAC;IAGD,IAAI,CAAC,IAAY,EAAE,OAAe;QAChC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IACvC,CAAC;IAGD,QAAQ,CAAC,IAAY,EAAE,OAAe;QACpC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IACzC,CAAC;IAGD,IAAI,CAAC,IAAY,EAAE,OAAe;QAChC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IACvC,CAAC;IAGD,GAAG,CAAC,OAAe;QACjB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC,CAAA;IACtC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Host, DeployContext } from '../types.ts';
|
|
2
|
-
|
|
2
|
+
import type { CatapultLogger } from '../logger.ts';
|
|
3
|
+
export type LifecycleHook = (ctx: DeployContext, host: Host, logger: CatapultLogger) => Promise<void> | void;
|
|
3
4
|
export declare class PipelineHookStore {
|
|
4
5
|
#private;
|
|
5
6
|
addSetup(fn: LifecycleHook): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/pipeline/hooks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/pipeline/hooks.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,iBAAiB;IAC5B,WAAW,GAAoB,EAAE,CAAA;IACjC,YAAY,GAAoB,EAAE,CAAA;IAElC,QAAQ,CAAC,EAAiB;QACxB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC3B,CAAC;IAED,QAAQ;QACN,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAA;IAC9B,CAAC;IAED,SAAS,CAAC,EAAiB;QACzB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC5B,CAAC;IAED,SAAS;QACP,OAAO,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAA;IAC/B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,iBAAiB,EAAE,CAAA"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { Host, DeployContext, Paths } from '../types.ts';
|
|
2
|
+
import { type CatapultLogger } from '../logger.ts';
|
|
2
3
|
export interface TaskContext {
|
|
3
4
|
host: Host;
|
|
4
5
|
paths: Paths;
|
|
5
6
|
deployCtx: DeployContext;
|
|
7
|
+
logger: CatapultLogger;
|
|
6
8
|
}
|
|
7
9
|
export type TaskFn = (ctx: TaskContext) => void | Promise<void>;
|
|
8
10
|
export declare class TaskRunner {
|
package/build/src/task/runner.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { ssh
|
|
1
|
+
import { ssh } from "../utils.js";
|
|
2
|
+
import { logger } from "../logger.js";
|
|
2
3
|
export class TaskRunner {
|
|
3
4
|
#ctx = null;
|
|
4
5
|
#commands = [];
|
|
@@ -43,9 +44,9 @@ export class TaskRunner {
|
|
|
43
44
|
const verbose = this.#ctx.deployCtx.config.verbose ?? 0;
|
|
44
45
|
if (verbose >= 1) {
|
|
45
46
|
for (const cmd of cmds)
|
|
46
|
-
|
|
47
|
+
logger.cmd(cmd);
|
|
47
48
|
}
|
|
48
|
-
const subprocess = ssh(this.#ctx.host, ['set -e', ...cmds].join('\n'));
|
|
49
|
+
const subprocess = ssh(this.#ctx.host, ['set -e', ...cmds].join('\n'), { color: true });
|
|
49
50
|
if (verbose >= 2)
|
|
50
51
|
subprocess.stdout?.pipe(process.stdout);
|
|
51
52
|
await subprocess;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/task/runner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/task/runner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,EAAE,MAAM,EAAuB,MAAM,cAAc,CAAA;AAW1D,MAAM,OAAO,UAAU;IACrB,IAAI,GAAuB,IAAI,CAAA;IAC/B,SAAS,GAAa,EAAE,CAAA;IAExB,GAAG;QACD,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAED,GAAG,CAAC,GAAgB;QAClB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAA;QACf,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;IACrB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;IACrB,CAAC;IAED,IAAI,CAAC,OAAe;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;QAC7E,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC9B,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAA;IAC5C,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,CAAA;IACjD,CAAC;IAED,OAAO,CAAC,GAAW;QACjB,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO,GAAG,CAAA;QAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAA;QACzB,OAAO,GAAG;aACP,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAAC,OAAO,CAAC;aAC3C,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAAC,OAAO,CAAC;aAC3C,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC,MAAM,CAAC;aACzC,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC,QAAQ,CAAC;aAC7C,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC,IAAI,CAAC;aACrC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IAC7D,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,CAAA;QACvD,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;YACjB,KAAK,MAAM,GAAG,IAAI,IAAI;gBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACzC,CAAC;QACD,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACvF,IAAI,OAAO,IAAI,CAAC;YAAE,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACzD,MAAM,UAAU,CAAA;IAClB,CAAC;CACF"}
|
package/build/src/task/store.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { getPaths } from "../utils.js";
|
|
2
|
+
import { logger } from "../logger.js";
|
|
2
3
|
export class TaskStore {
|
|
3
4
|
#registry = new Map();
|
|
4
5
|
#runner;
|
|
@@ -19,7 +20,7 @@ export class TaskStore {
|
|
|
19
20
|
if (!fn)
|
|
20
21
|
throw new Error(`Task not found: "${name}"`);
|
|
21
22
|
const paths = getPaths(host.deployPath, deployCtx.release);
|
|
22
|
-
const ctx = { host, paths, deployCtx };
|
|
23
|
+
const ctx = { host, paths, deployCtx, logger };
|
|
23
24
|
this.#runner.set(ctx);
|
|
24
25
|
try {
|
|
25
26
|
const result = fn(ctx);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/task/store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/task/store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAErC,MAAM,OAAO,SAAS;IACpB,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAA;IACrC,OAAO,CAAY;IAEnB,YAAY,MAAkB;QAC5B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;IACvB,CAAC;IAED,QAAQ,CAAC,IAAc,EAAE,EAAU;QACjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IAC9B,CAAC;IAED,GAAG,CAAC,IAAc;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;IAED,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAc,EAAE,SAAwB,EAAE,IAAU;QAC5D,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACnC,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,GAAG,CAAC,CAAA;QAErD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA;QAC1D,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,CAAA;QAC9C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAErB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;YACtB,IAAI,MAAM,YAAY,OAAO;gBAAE,MAAM,MAAM,CAAA;YAC3C,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QAC5B,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QACtB,CAAC;IACH,CAAC;CACF"}
|
package/build/src/utils.d.ts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
import type { Host, Paths } from './types.ts';
|
|
2
|
-
export declare const yellow: (s: string) => string;
|
|
3
|
-
export declare const blue: (s: string) => string;
|
|
4
|
-
export declare const gray: (s: string) => string;
|
|
5
2
|
export declare function detectPackageManager(cwd?: string): Promise<string>;
|
|
6
3
|
export declare function findDeployFile(cwd?: string): Promise<string | null>;
|
|
7
4
|
export declare function q(value: unknown): string;
|
|
@@ -12,6 +9,7 @@ export declare function rsyncSshFlag(host: Host): string;
|
|
|
12
9
|
export declare function ssh(host: Host, command: string, opts?: {
|
|
13
10
|
quiet?: boolean;
|
|
14
11
|
verbose?: boolean;
|
|
12
|
+
color?: boolean;
|
|
15
13
|
}): import("execa").ResultPromise<{}>;
|
|
16
14
|
export declare function sleep(ms: number): Promise<void>;
|
|
17
15
|
export declare function elapsed(ms: number): string;
|
package/build/src/utils.js
CHANGED
|
@@ -3,7 +3,7 @@ import { tmpdir } from 'node:os';
|
|
|
3
3
|
import { join, resolve } from 'node:path';
|
|
4
4
|
import { createHash } from 'node:crypto';
|
|
5
5
|
import { access } from 'node:fs/promises';
|
|
6
|
-
import {
|
|
6
|
+
import { logger } from "./logger.js";
|
|
7
7
|
const DEPLOY_CANDIDATES = ['deploy.ts', 'deploy.js', 'bin/deploy.ts', 'bin/deploy.js'];
|
|
8
8
|
const PM_LOCK_FILES = [
|
|
9
9
|
['bun.lockb', 'bun'],
|
|
@@ -11,9 +11,6 @@ const PM_LOCK_FILES = [
|
|
|
11
11
|
['yarn.lock', 'yarn'],
|
|
12
12
|
['package-lock.json', 'npm'],
|
|
13
13
|
];
|
|
14
|
-
export const yellow = (s) => colors.ansi().yellow(s);
|
|
15
|
-
export const blue = (s) => colors.ansi().blue(s);
|
|
16
|
-
export const gray = (s) => colors.ansi().dim(s);
|
|
17
14
|
export async function detectPackageManager(cwd = process.cwd()) {
|
|
18
15
|
for (const [lockFile, manager] of PM_LOCK_FILES) {
|
|
19
16
|
try {
|
|
@@ -67,8 +64,9 @@ export function rsyncSshFlag(host) {
|
|
|
67
64
|
}
|
|
68
65
|
export function ssh(host, command, opts) {
|
|
69
66
|
if (opts?.verbose && !opts?.quiet)
|
|
70
|
-
|
|
71
|
-
const
|
|
67
|
+
logger.cmd(command);
|
|
68
|
+
const cmd = opts?.color ? `export FORCE_COLOR=1\n${command}` : command;
|
|
69
|
+
const b64 = Buffer.from(cmd).toString('base64');
|
|
72
70
|
const args = [...sshControlArgs(host), ...resolveSshArgs(host)];
|
|
73
71
|
return $ `ssh ${args} ${"bash -lc 'echo " + b64 + "|base64 -d|bash'"}`;
|
|
74
72
|
}
|
package/build/src/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|