@catapultjs/deploy 0.7.0 → 0.9.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/LICENSE +21 -0
- package/README.md +79 -6
- package/build/commands/deploy.js +21 -1
- package/build/commands/deploy.js.map +1 -1
- package/build/commands/init.d.ts +1 -0
- package/build/commands/init.js +18 -1
- package/build/commands/init.js.map +1 -1
- package/build/commands/list_releases.d.ts +1 -0
- package/build/commands/list_releases.js +25 -1
- package/build/commands/list_releases.js.map +1 -1
- package/build/commands/list_revisions.d.ts +1 -0
- package/build/commands/list_revisions.js +34 -2
- package/build/commands/list_revisions.js.map +1 -1
- package/build/commands/list_tasks.d.ts +1 -0
- package/build/commands/list_tasks.js +19 -1
- package/build/commands/list_tasks.js.map +1 -1
- package/build/commands/pipeline.d.ts +1 -0
- package/build/commands/pipeline.js +18 -1
- package/build/commands/pipeline.js.map +1 -1
- package/build/commands/rollback.js +2 -0
- package/build/commands/rollback.js.map +1 -1
- package/build/commands/run_task.js +2 -0
- package/build/commands/run_task.js.map +1 -1
- package/build/commands/setup.d.ts +1 -0
- package/build/commands/setup.js +3 -7
- package/build/commands/setup.js.map +1 -1
- package/build/commands/status.d.ts +1 -0
- package/build/commands/status.js +69 -15
- package/build/commands/status.js.map +1 -1
- package/build/commands/version.d.ts +1 -0
- package/build/commands/version.js +18 -1
- package/build/commands/version.js.map +1 -1
- package/build/recipes/adonisjs_local.d.ts +1 -0
- package/build/recipes/adonisjs_local.js +35 -0
- package/build/recipes/adonisjs_local.js.map +1 -0
- package/build/recipes/pm2.js +2 -2
- package/build/recipes/pm2.js.map +1 -1
- package/build/src/base_command.d.ts +7 -2
- package/build/src/base_command.js +17 -1
- package/build/src/base_command.js.map +1 -1
- package/build/src/deployer.d.ts +2 -0
- package/build/src/deployer.js +17 -0
- package/build/src/deployer.js.map +1 -1
- package/build/src/pipeline/hooks.d.ts +4 -2
- package/build/src/pipeline/hooks.js.map +1 -1
- package/build/src/pipeline.d.ts +3 -3
- package/build/src/pipeline.js.map +1 -1
- package/package.json +1 -1
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Jérémy Chaufourier
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,22 +1,91 @@
|
|
|
1
1
|
# Catapult
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/@catapultjs/deploy)
|
|
4
|
+
[](https://nodejs.org)
|
|
5
|
+
[](https://github.com/catapultjs/deploy/blob/main/LICENSE)
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
A Capistrano-style deployment tool for Node.js — versioned releases, shared directories, composable task pipeline, automatic rollback. No agent, no server-side dependency, just SSH.
|
|
8
|
+
|
|
9
|
+
Full documentation at **https://catapultjs.com/**
|
|
10
|
+
|
|
11
|
+
## Features
|
|
12
|
+
|
|
13
|
+
- **SSH-based** — deploys directly over SSH; nothing to install on the server beyond a remote shell
|
|
14
|
+
- **Versioned releases** — every deploy goes into `releases/<timestamp>`, activated by an atomic `current` symlink, with automatic rollback on failure
|
|
15
|
+
- **Composable pipeline** — insert, remove or replace any task with a single function call, or rewrite the whole sequence
|
|
16
|
+
- **Drop-in recipes** — import once, tasks register themselves and wire into the pipeline
|
|
17
|
+
- **Multi-host** — deploy to one server or several, with per-host configuration
|
|
18
|
+
- **Healthcheck** — verify the app responds after a deploy, with automatic rollback on failure
|
|
19
|
+
|
|
20
|
+
## Quick start
|
|
21
|
+
|
|
22
|
+
Run `init` at the root of your project — it creates a `deploy.ts` config file and installs `@catapultjs/deploy` as a dev dependency:
|
|
6
23
|
|
|
7
24
|
```bash
|
|
8
25
|
npx @catapultjs/deploy init
|
|
9
26
|
```
|
|
10
27
|
|
|
11
|
-
|
|
28
|
+
Edit `deploy.ts` to describe your hosts and pick your recipes:
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
import { defineConfig } from '@catapultjs/deploy'
|
|
32
|
+
import '@catapultjs/deploy/recipes/git'
|
|
33
|
+
import '@catapultjs/deploy/recipes/pm2'
|
|
34
|
+
|
|
35
|
+
export default defineConfig({
|
|
36
|
+
hosts: [
|
|
37
|
+
{
|
|
38
|
+
name: 'production',
|
|
39
|
+
ssh: 'deploy@example.com',
|
|
40
|
+
deployPath: '/home/deploy/myapp',
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
})
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Prepare the server (once per host), then deploy:
|
|
12
47
|
|
|
13
48
|
```bash
|
|
14
|
-
npx cata deploy
|
|
49
|
+
npx cata deploy:setup
|
|
50
|
+
npx cata deploy
|
|
15
51
|
```
|
|
16
52
|
|
|
17
|
-
##
|
|
53
|
+
## Server structure
|
|
18
54
|
|
|
19
|
-
|
|
55
|
+
```
|
|
56
|
+
/home/deploy/myapp/
|
|
57
|
+
current/ → symlink to releases/<release>
|
|
58
|
+
releases/
|
|
59
|
+
2024-01-15T.../ ← active release
|
|
60
|
+
2024-01-14T.../
|
|
61
|
+
shared/
|
|
62
|
+
.env
|
|
63
|
+
logs/
|
|
64
|
+
.catapult/
|
|
65
|
+
repo/ ← bare git mirror (git recipe)
|
|
66
|
+
revisions.log ← JSON deployment history
|
|
67
|
+
deploy.lock ← present during a deployment
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Recipes
|
|
71
|
+
|
|
72
|
+
| Recipe | Description |
|
|
73
|
+
| ---------------- | --------------------------------------------------------------------------- |
|
|
74
|
+
| `git` | Clones the repository into each release, keeps a bare mirror on the server |
|
|
75
|
+
| `rsync` | Pushes a local directory into the release with rsync |
|
|
76
|
+
| `pm2` | Start, reload and manage PM2 processes |
|
|
77
|
+
| `adonisjs` | Install, build and migration tasks for AdonisJS apps |
|
|
78
|
+
| `adonisjs_local` | Builds the AdonisJS app locally, uploads the artifact |
|
|
79
|
+
| `astro` | Builds locally with `astro build`, uploads the output |
|
|
80
|
+
| `nuxt` | Build tasks for Nuxt apps |
|
|
81
|
+
| `vitepress` | Builds locally with `vitepress build`, uploads the static files |
|
|
82
|
+
| `directus` | Directus database migration and schema snapshot tasks |
|
|
83
|
+
| `redis` | Flush one, many or all Redis databases |
|
|
84
|
+
|
|
85
|
+
## Requirements
|
|
86
|
+
|
|
87
|
+
- Node.js >= 24 on the machine running Catapult
|
|
88
|
+
- SSH key-based access to the target servers
|
|
20
89
|
|
|
21
90
|
## Contributing a recipe
|
|
22
91
|
|
|
@@ -25,3 +94,7 @@ If you've written a recipe that could be useful to others, open a pull request a
|
|
|
25
94
|
## Inspiration
|
|
26
95
|
|
|
27
96
|
Inspired by [Deployer PHP](https://deployer.org) and [Capistrano](https://capistranorb.com).
|
|
97
|
+
|
|
98
|
+
## License
|
|
99
|
+
|
|
100
|
+
[MIT](https://github.com/catapultjs/deploy/blob/main/LICENSE)
|
package/build/commands/deploy.js
CHANGED
|
@@ -9,7 +9,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
9
9
|
};
|
|
10
10
|
import { flags } from '@adonisjs/ace';
|
|
11
11
|
import { Context } from "../src/context.js";
|
|
12
|
-
import { deployHost } from "../src/deployer.js";
|
|
12
|
+
import { deployHost, initializeHost, isHostSetup } from "../src/deployer.js";
|
|
13
13
|
import { BaseDeployCommand } from "../src/base_command.js";
|
|
14
14
|
export default class Deploy extends BaseDeployCommand {
|
|
15
15
|
static commandName = 'deploy';
|
|
@@ -36,6 +36,26 @@ export default class Deploy extends BaseDeployCommand {
|
|
|
36
36
|
await ctx.hooks.beforeDeploy({ hosts });
|
|
37
37
|
for (const host of hosts) {
|
|
38
38
|
try {
|
|
39
|
+
if (!(await isHostSetup(ctx, host))) {
|
|
40
|
+
const shouldSetup = await this.prompt.choice(`[${host.name}] Catapult is not initialized on this server. Run deploy:setup now?`, [
|
|
41
|
+
{
|
|
42
|
+
name: 'yes',
|
|
43
|
+
message: `Yes, run ${this.setupCommand(host)} and continue`,
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: 'no',
|
|
47
|
+
message: 'No, cancel deployment',
|
|
48
|
+
},
|
|
49
|
+
]);
|
|
50
|
+
if (shouldSetup === 'yes') {
|
|
51
|
+
await initializeHost(ctx, host);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
this.logger.error(this.missingSetupMessage(host));
|
|
55
|
+
this.exitCode = 1;
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
39
59
|
await deployHost(ctx, host);
|
|
40
60
|
}
|
|
41
61
|
catch (error) {
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../commands/deploy.ts"],"names":[],"mappings":"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"}
|
package/build/commands/init.d.ts
CHANGED
package/build/commands/init.js
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { BaseCommand, flags } from '@adonisjs/ace';
|
|
2
11
|
import { writeFile } from 'node:fs/promises';
|
|
3
12
|
import { resolve } from 'node:path';
|
|
4
13
|
import { execa } from 'execa';
|
|
@@ -33,6 +42,10 @@ export default class Init extends BaseCommand {
|
|
|
33
42
|
const dest = resolve(process.cwd(), filename);
|
|
34
43
|
await writeFile(dest, TEMPLATE);
|
|
35
44
|
this.logger.action(`create ${filename}`).succeeded();
|
|
45
|
+
if (this.skipInstall) {
|
|
46
|
+
this.logger.info('Skipping @catapultjs/deploy installation');
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
36
49
|
const pm = await detectPackageManager();
|
|
37
50
|
this.logger.info('Installing @catapultjs/deploy...');
|
|
38
51
|
await execa(pm, ['install', '-D', '@catapultjs/deploy'], {
|
|
@@ -42,4 +55,8 @@ export default class Init extends BaseCommand {
|
|
|
42
55
|
this.logger.action('install @catapultjs/deploy').succeeded();
|
|
43
56
|
}
|
|
44
57
|
}
|
|
58
|
+
__decorate([
|
|
59
|
+
flags.boolean({ description: 'Create the config file without installing @catapultjs/deploy' }),
|
|
60
|
+
__metadata("design:type", Boolean)
|
|
61
|
+
], Init.prototype, "skipInstall", void 0);
|
|
45
62
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../commands/init.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAEtE,MAAM,QAAQ,GAAG;;;;;;;;;;;;CAYhB,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,WAAW;IAC3C,MAAM,CAAC,WAAW,GAAG,MAAM,CAAA;IAC3B,MAAM,CAAC,WAAW,GAAG,oCAAoC,CAAA;IAKzD,KAAK,CAAC,GAAG;QACP,MAAM,QAAQ,GAAG,MAAM,cAAc,EAAE,CAAA;QACvC,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,QAAQ,iBAAiB,CAAC,CAAA;YACjD,OAAM;QACR,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,oCAAoC,EAAE;YAC1E,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,wBAAwB,EAAE;YACjD,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,wBAAwB,EAAE;SAClD,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAA;QAC1D,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAA;QAE7C,MAAM,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QAC/B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,CAAA;QAEpD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAA;YAC5D,OAAM;QACR,CAAC;QAED,MAAM,EAAE,GAAG,MAAM,oBAAoB,EAAE,CAAA;QACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAA;QACpD,MAAM,KAAK,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,oBAAoB,CAAC,EAAE;YACvD,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,KAAK,EAAE,SAAS;SACjB,CAAC,CAAA;QACF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,SAAS,EAAE,CAAA;IAC9D,CAAC;;AAhCO;IADP,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,8DAA8D,EAAE,CAAC;;yCACnE"}
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { flags } from '@adonisjs/ace';
|
|
1
11
|
import { Context } from "../src/context.js";
|
|
2
12
|
import { getCurrentRelease } from "../src/deployer.js";
|
|
3
13
|
import { q, getPaths, ssh } from "../src/utils.js";
|
|
@@ -7,10 +17,13 @@ export default class ListReleases extends BaseDeployCommand {
|
|
|
7
17
|
static description = 'List releases on servers';
|
|
8
18
|
async run() {
|
|
9
19
|
const ctx = Context.get();
|
|
10
|
-
const hosts = await this.selectHosts();
|
|
20
|
+
const hosts = await this.selectHosts({ all: this.json });
|
|
11
21
|
if (!hosts)
|
|
12
22
|
return;
|
|
23
|
+
const report = [];
|
|
13
24
|
for (const host of hosts) {
|
|
25
|
+
if (!(await this.ensureHostSetup(ctx, host)))
|
|
26
|
+
continue;
|
|
14
27
|
const paths = getPaths(host.deployPath, ctx.release);
|
|
15
28
|
const current = await getCurrentRelease(ctx, host);
|
|
16
29
|
const { stdout } = await ssh(host, `
|
|
@@ -23,6 +36,10 @@ export default class ListReleases extends BaseDeployCommand {
|
|
|
23
36
|
.split('\n')
|
|
24
37
|
.map((line) => line.trim().replace(/\/$/, ''))
|
|
25
38
|
.filter(Boolean);
|
|
39
|
+
if (this.json) {
|
|
40
|
+
report.push({ name: host.name, current: current ?? null, releases });
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
26
43
|
const table = this.ui.table();
|
|
27
44
|
table.head(['', 'Release', 'Host']);
|
|
28
45
|
if (releases.length === 0) {
|
|
@@ -35,6 +52,13 @@ export default class ListReleases extends BaseDeployCommand {
|
|
|
35
52
|
}
|
|
36
53
|
table.render();
|
|
37
54
|
}
|
|
55
|
+
if (this.json) {
|
|
56
|
+
this.logger.log(JSON.stringify({ hosts: report }, null, 2));
|
|
57
|
+
}
|
|
38
58
|
}
|
|
39
59
|
}
|
|
60
|
+
__decorate([
|
|
61
|
+
flags.boolean({ description: 'Output result as JSON' }),
|
|
62
|
+
__metadata("design:type", Boolean)
|
|
63
|
+
], ListReleases.prototype, "json", void 0);
|
|
40
64
|
//# sourceMappingURL=list_releases.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list_releases.js","sourceRoot":"","sources":["../../commands/list_releases.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE1D,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,iBAAiB;IACzD,MAAM,CAAC,WAAW,GAAG,eAAe,CAAA;IACpC,MAAM,CAAC,WAAW,GAAG,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"list_releases.js","sourceRoot":"","sources":["../../commands/list_releases.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { flags } from '@adonisjs/ace';
|
|
1
11
|
import { Context } from "../src/context.js";
|
|
2
12
|
import { q, getPaths, ssh } from "../src/utils.js";
|
|
3
13
|
import { BaseDeployCommand } from "../src/base_command.js";
|
|
@@ -6,15 +16,30 @@ export default class ListRevisions extends BaseDeployCommand {
|
|
|
6
16
|
static description = 'List the last 10 revisions on servers';
|
|
7
17
|
async run() {
|
|
8
18
|
const ctx = Context.get();
|
|
9
|
-
const hosts = await this.selectHosts();
|
|
19
|
+
const hosts = await this.selectHosts({ all: this.json });
|
|
10
20
|
if (!hosts)
|
|
11
21
|
return;
|
|
22
|
+
const report = [];
|
|
12
23
|
for (const host of hosts) {
|
|
24
|
+
if (!(await this.ensureHostSetup(ctx, host)))
|
|
25
|
+
continue;
|
|
13
26
|
const paths = getPaths(host.deployPath, ctx.release);
|
|
14
27
|
const logFile = `${paths.cataConfig}/revisions.log`;
|
|
15
|
-
|
|
28
|
+
if (!this.json)
|
|
29
|
+
this.logger.log(this.colors.bold(`\n# ${host.name}`));
|
|
16
30
|
const { stdout } = await ssh(host, `set +e\n[ -f ${q(logFile)} ] && tail -10 ${q(logFile)} || true`);
|
|
17
31
|
const lines = stdout.trim().split('\n').filter(Boolean).reverse();
|
|
32
|
+
if (this.json) {
|
|
33
|
+
const revisions = [];
|
|
34
|
+
for (const line of lines) {
|
|
35
|
+
try {
|
|
36
|
+
revisions.push(JSON.parse(line));
|
|
37
|
+
}
|
|
38
|
+
catch { }
|
|
39
|
+
}
|
|
40
|
+
report.push({ name: host.name, revisions });
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
18
43
|
const table = this.ui.table();
|
|
19
44
|
table.head(['Release', 'Branch', 'Commit', 'By', 'Date']);
|
|
20
45
|
if (lines.length === 0) {
|
|
@@ -37,6 +62,13 @@ export default class ListRevisions extends BaseDeployCommand {
|
|
|
37
62
|
}
|
|
38
63
|
table.render();
|
|
39
64
|
}
|
|
65
|
+
if (this.json) {
|
|
66
|
+
this.logger.log(JSON.stringify({ hosts: report }, null, 2));
|
|
67
|
+
}
|
|
40
68
|
}
|
|
41
69
|
}
|
|
70
|
+
__decorate([
|
|
71
|
+
flags.boolean({ description: 'Output result as JSON' }),
|
|
72
|
+
__metadata("design:type", Boolean)
|
|
73
|
+
], ListRevisions.prototype, "json", void 0);
|
|
42
74
|
//# sourceMappingURL=list_revisions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list_revisions.js","sourceRoot":"","sources":["../../commands/list_revisions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE1D,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,iBAAiB;IAC1D,MAAM,CAAC,WAAW,GAAG,gBAAgB,CAAA;IACrC,MAAM,CAAC,WAAW,GAAG,uCAAuC,CAAA;
|
|
1
|
+
{"version":3,"file":"list_revisions.js","sourceRoot":"","sources":["../../commands/list_revisions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { BaseCommand, flags } from '@adonisjs/ace';
|
|
2
11
|
import { getTasks, getTaskDescription } from "../src/task.js";
|
|
3
12
|
import { getPipeline } from "../src/pipeline.js";
|
|
4
13
|
export default class ListTasks extends BaseCommand {
|
|
@@ -7,6 +16,11 @@ export default class ListTasks extends BaseCommand {
|
|
|
7
16
|
async run() {
|
|
8
17
|
const pipeline = getPipeline();
|
|
9
18
|
const extra = getTasks().filter((t) => !pipeline.includes(t));
|
|
19
|
+
if (this.json) {
|
|
20
|
+
const describe = (name) => ({ name, description: getTaskDescription(name) });
|
|
21
|
+
this.logger.log(JSON.stringify({ pipeline: pipeline.map(describe), extra: extra.map(describe) }, null, 2));
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
10
24
|
this.logger.log('Pipeline');
|
|
11
25
|
const pipelineTable = this.ui.table();
|
|
12
26
|
pipelineTable.head(['Task', 'Description']);
|
|
@@ -21,4 +35,8 @@ export default class ListTasks extends BaseCommand {
|
|
|
21
35
|
}
|
|
22
36
|
}
|
|
23
37
|
}
|
|
38
|
+
__decorate([
|
|
39
|
+
flags.boolean({ description: 'Output result as JSON' }),
|
|
40
|
+
__metadata("design:type", Boolean)
|
|
41
|
+
], ListTasks.prototype, "json", void 0);
|
|
24
42
|
//# sourceMappingURL=list_tasks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list_tasks.js","sourceRoot":"","sources":["../../commands/list_tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"list_tasks.js","sourceRoot":"","sources":["../../commands/list_tasks.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEhD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IAChD,MAAM,CAAC,WAAW,GAAG,YAAY,CAAA;IACjC,MAAM,CAAC,WAAW,GAAG,gDAAgD,CAAA;IAKrE,KAAK,CAAC,GAAG;QACP,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;QAC9B,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;QAE7D,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACpF,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAC1F,CAAA;YACD,OAAM;QACR,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;QACrC,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAA;QAC3C,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/E,aAAa,CAAC,MAAM,EAAE,CAAA;QAEtB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;YAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;YAClC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAA;YACxC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;YACzE,UAAU,CAAC,MAAM,EAAE,CAAA;QACrB,CAAC;IACH,CAAC;;AA3BO;IADP,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC;;uCACnC"}
|
|
@@ -1,14 +1,31 @@
|
|
|
1
|
-
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { BaseCommand, flags } from '@adonisjs/ace';
|
|
2
11
|
import { getPipeline } from "../src/pipeline.js";
|
|
3
12
|
export default class ListPipeline extends BaseCommand {
|
|
4
13
|
static commandName = 'pipeline';
|
|
5
14
|
static description = 'Show the current deployment pipeline';
|
|
6
15
|
async run() {
|
|
7
16
|
const pipeline = getPipeline();
|
|
17
|
+
if (this.json) {
|
|
18
|
+
this.logger.log(JSON.stringify({ pipeline }, null, 2));
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
8
21
|
const table = this.ui.table();
|
|
9
22
|
table.head(['#', 'Task']);
|
|
10
23
|
pipeline.forEach((name, i) => table.row([String(i + 1), name]));
|
|
11
24
|
table.render();
|
|
12
25
|
}
|
|
13
26
|
}
|
|
27
|
+
__decorate([
|
|
28
|
+
flags.boolean({ description: 'Output result as JSON' }),
|
|
29
|
+
__metadata("design:type", Boolean)
|
|
30
|
+
], ListPipeline.prototype, "json", void 0);
|
|
14
31
|
//# sourceMappingURL=pipeline.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../commands/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../commands/pipeline.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEhD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,WAAW;IACnD,MAAM,CAAC,WAAW,GAAG,UAAU,CAAA;IAC/B,MAAM,CAAC,WAAW,GAAG,sCAAsC,CAAA;IAK3D,KAAK,CAAC,GAAG;QACP,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;QAE9B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YACtD,OAAM;QACR,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;QAC7B,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAA;QACzB,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QAC/D,KAAK,CAAC,MAAM,EAAE,CAAA;IAChB,CAAC;;AAdO;IADP,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC;;0CACnC"}
|
|
@@ -21,6 +21,8 @@ export default class Rollback extends BaseDeployCommand {
|
|
|
21
21
|
if (!hosts)
|
|
22
22
|
return;
|
|
23
23
|
for (const host of hosts) {
|
|
24
|
+
if (!(await this.ensureHostSetup(ctx, host)))
|
|
25
|
+
continue;
|
|
24
26
|
let target;
|
|
25
27
|
if (this.interactive) {
|
|
26
28
|
const [releases, current] = await Promise.all([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rollback.js","sourceRoot":"","sources":["../../commands/rollback.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACrF,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE1D,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,iBAAiB;IACrD,MAAM,CAAC,WAAW,GAAG,UAAU,CAAA;IAC/B,MAAM,CAAC,WAAW,GAAG,kCAAkC,CAAA;IAKvD,KAAK,CAAC,GAAG;QACP,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;QAEzB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QACtC,IAAI,CAAC,KAAK;YAAE,OAAM;QAElB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,MAA0B,CAAA;YAE9B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;oBAC5C,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC;oBAC1B,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC;iBAC7B,CAAC,CAAA;gBAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,yBAAyB,CAAC,CAAA;oBACzD,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;oBACjB,OAAM;gBACR,CAAC;gBAED,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACnC,IAAI,EAAE,CAAC;oBACP,OAAO,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBAC7C,QAAQ,EAAE,CAAC,KAAK,OAAO;iBACxB,CAAC,CAAC,CAAA;gBAEH,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,iCAAiC,EAAE,OAAO,CAAC,CAAA;YAC5F,CAAC;YAED,MAAM,OAAO,CAAC,aAAa,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;YACvC,IAAI,CAAC;gBACH,MAAM,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;YACvC,CAAC;oBAAS,CAAC;gBACT,MAAM,OAAO,CAAC,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;YAC3C,CAAC;QACH,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAA;IAC5C,CAAC;;
|
|
1
|
+
{"version":3,"file":"rollback.js","sourceRoot":"","sources":["../../commands/rollback.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACrF,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE1D,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,iBAAiB;IACrD,MAAM,CAAC,WAAW,GAAG,UAAU,CAAA;IAC/B,MAAM,CAAC,WAAW,GAAG,kCAAkC,CAAA;IAKvD,KAAK,CAAC,GAAG;QACP,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;QAEzB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QACtC,IAAI,CAAC,KAAK;YAAE,OAAM;QAElB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAAE,SAAQ;YAEtD,IAAI,MAA0B,CAAA;YAE9B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;oBAC5C,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC;oBAC1B,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC;iBAC7B,CAAC,CAAA;gBAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,yBAAyB,CAAC,CAAA;oBACzD,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;oBACjB,OAAM;gBACR,CAAC;gBAED,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACnC,IAAI,EAAE,CAAC;oBACP,OAAO,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBAC7C,QAAQ,EAAE,CAAC,KAAK,OAAO;iBACxB,CAAC,CAAC,CAAA;gBAEH,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,iCAAiC,EAAE,OAAO,CAAC,CAAA;YAC5F,CAAC;YAED,MAAM,OAAO,CAAC,aAAa,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;YACvC,IAAI,CAAC;gBACH,MAAM,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;YACvC,CAAC;oBAAS,CAAC;gBACT,MAAM,OAAO,CAAC,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;YAC3C,CAAC;QACH,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAA;IAC5C,CAAC;;AA1CO;IADP,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,yCAAyC,EAAE,CAAC;;6CAC9C"}
|
|
@@ -26,6 +26,8 @@ export default class RunTask extends BaseDeployCommand {
|
|
|
26
26
|
if (!hosts)
|
|
27
27
|
return;
|
|
28
28
|
for (const host of hosts) {
|
|
29
|
+
if (!(await this.ensureHostSetup(ctx, host)))
|
|
30
|
+
continue;
|
|
29
31
|
const currentRelease = await getCurrentRelease(ctx, host);
|
|
30
32
|
if (!currentRelease) {
|
|
31
33
|
this.logger.error(`[${host.name}] no current release found, run deploy first`);
|
|
@@ -1 +1 @@
|
|
|
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;;
|
|
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,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAAE,SAAQ;YAEtD,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;;AA5BO;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,gCAAgC,EAAE,CAAC;;wCACrD"}
|
package/build/commands/setup.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { Context } from "../src/context.js";
|
|
2
|
-
import {
|
|
3
|
-
import { hooks } from "../src/pipeline/hooks.js";
|
|
2
|
+
import { initializeHost } from "../src/deployer.js";
|
|
4
3
|
import { BaseDeployCommand } from "../src/base_command.js";
|
|
5
|
-
import { logger } from "../src/logger.js";
|
|
6
4
|
export default class Setup extends BaseDeployCommand {
|
|
7
5
|
static commandName = 'deploy:setup';
|
|
6
|
+
static aliases = ['setup'];
|
|
8
7
|
static description = 'Initialize directories on servers';
|
|
9
8
|
async run() {
|
|
10
9
|
const ctx = Context.get();
|
|
@@ -12,10 +11,7 @@ export default class Setup extends BaseDeployCommand {
|
|
|
12
11
|
if (!hosts)
|
|
13
12
|
return;
|
|
14
13
|
for (const host of hosts) {
|
|
15
|
-
await
|
|
16
|
-
for (const hook of hooks.getSetup()) {
|
|
17
|
-
await hook(ctx, host, logger);
|
|
18
|
-
}
|
|
14
|
+
await initializeHost(ctx, host);
|
|
19
15
|
}
|
|
20
16
|
this.logger.action('setup').succeeded();
|
|
21
17
|
}
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE1D,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,iBAAiB;IAClD,MAAM,CAAC,WAAW,GAAG,cAAc,CAAA;IACnC,MAAM,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC,CAAA;IAC1B,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,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACjC,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAA;IACzC,CAAC"}
|
package/build/commands/status.js
CHANGED
|
@@ -1,64 +1,118 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { flags } from '@adonisjs/ace';
|
|
1
11
|
import { Context } from "../src/context.js";
|
|
2
12
|
import { getCurrentRelease } from "../src/deployer.js";
|
|
3
13
|
import { bin } from "../src/task.js";
|
|
4
14
|
import { getPipeline } from "../src/pipeline.js";
|
|
5
15
|
import { hooks } from "../src/pipeline/hooks.js";
|
|
6
16
|
import { q, getPaths, ssh, detectPackageManager } from "../src/utils.js";
|
|
17
|
+
import { MemoryRenderer } from '@poppinss/cliui';
|
|
7
18
|
import { BaseDeployCommand } from "../src/base_command.js";
|
|
8
|
-
import { logger } from "../src/logger.js";
|
|
19
|
+
import { CatapultLogger, logger } from "../src/logger.js";
|
|
9
20
|
export default class Status extends BaseDeployCommand {
|
|
10
21
|
static commandName = 'status';
|
|
11
22
|
static description = 'Show server status';
|
|
12
23
|
async run() {
|
|
13
24
|
const ctx = Context.get();
|
|
14
|
-
const hosts = await this.selectHosts();
|
|
25
|
+
const hosts = await this.selectHosts({ all: this.json });
|
|
15
26
|
if (!hosts)
|
|
16
27
|
return;
|
|
17
28
|
const pm = await detectPackageManager();
|
|
29
|
+
const report = [];
|
|
30
|
+
const hookLogger = this.json ? new CatapultLogger() : logger;
|
|
31
|
+
if (this.json)
|
|
32
|
+
hookLogger.useRenderer(new MemoryRenderer());
|
|
18
33
|
for (const host of hosts) {
|
|
34
|
+
if (!(await this.ensureHostSetup(ctx, host)))
|
|
35
|
+
continue;
|
|
19
36
|
const paths = getPaths(host.deployPath, ctx.release);
|
|
20
|
-
|
|
37
|
+
const status = { name: host.name };
|
|
38
|
+
report.push(status);
|
|
39
|
+
if (!this.json)
|
|
40
|
+
this.logger.log(this.colors.bold(`\n# ${host.name}`));
|
|
21
41
|
try {
|
|
22
42
|
const current = await getCurrentRelease(ctx, host);
|
|
23
|
-
|
|
43
|
+
status.release = current ?? null;
|
|
44
|
+
if (!this.json) {
|
|
45
|
+
this.logger.log(`Release ${current ? this.colors.cyan(current) : this.colors.dim('none')}`);
|
|
46
|
+
}
|
|
24
47
|
if (getPipeline().includes('deploy:healthcheck')) {
|
|
25
48
|
try {
|
|
26
49
|
await ssh(host, `set -e\n${bin('curl')} --fail --silent --show-error --max-time 5 ${q(host.healthcheck?.url)} >/dev/null`);
|
|
27
|
-
|
|
50
|
+
status.health = 'ok';
|
|
51
|
+
if (!this.json)
|
|
52
|
+
this.logger.log(`Health ${this.colors.green('OK')}`);
|
|
28
53
|
}
|
|
29
54
|
catch {
|
|
30
|
-
|
|
55
|
+
status.health = 'fail';
|
|
56
|
+
if (!this.json)
|
|
57
|
+
this.logger.log(`Health ${this.colors.red('FAIL')}`);
|
|
31
58
|
}
|
|
32
59
|
}
|
|
33
60
|
const { stdout: versionsStdout } = await ssh(host, `set +e\ncd ${q(paths.current)}\necho "NODE:$(${bin('node')} --version 2>/dev/null || true)"\necho "PM:$(${bin(pm)} --version 2>/dev/null || true)"`);
|
|
34
61
|
const lines = versionsStdout.trim().split('\n');
|
|
35
62
|
const nodeVersion = lines.find((l) => l.startsWith('NODE:'))?.slice(5) || '';
|
|
36
63
|
const pmVersion = lines.find((l) => l.startsWith('PM:'))?.slice(3) || '';
|
|
37
|
-
|
|
38
|
-
|
|
64
|
+
status.node = nodeVersion || null;
|
|
65
|
+
status.packageManager = { name: pm, version: pmVersion || null };
|
|
66
|
+
if (!this.json) {
|
|
67
|
+
this.logger.log(`Node ${this.colors.dim(nodeVersion || 'unavailable')}`);
|
|
68
|
+
this.logger.log(`${pm.padEnd(8)} ${this.colors.dim(pmVersion || 'unavailable')}`);
|
|
69
|
+
}
|
|
39
70
|
for (const hook of hooks.getStatus()) {
|
|
40
|
-
await hook(ctx, host,
|
|
71
|
+
const data = await hook(ctx, host, hookLogger);
|
|
72
|
+
if (!data)
|
|
73
|
+
continue;
|
|
74
|
+
Object.assign(status, data);
|
|
75
|
+
if (!this.json) {
|
|
76
|
+
for (const [key, value] of Object.entries(data)) {
|
|
77
|
+
this.logger.log(`${key.padEnd(8)} ${this.colors.dim(String(value))}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
41
80
|
}
|
|
42
81
|
const { stdout: revStdout } = await ssh(host, `set +e\n[ -f ${q(paths.cataConfig + '/revisions.log')} ] && tail -1 ${q(paths.cataConfig + '/revisions.log')} || true`);
|
|
43
82
|
const rev = revStdout.trim();
|
|
44
83
|
if (rev) {
|
|
45
84
|
try {
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
85
|
+
const revision = JSON.parse(rev);
|
|
86
|
+
const { branch, commit, user, date } = revision;
|
|
87
|
+
status.revision = revision;
|
|
88
|
+
if (!this.json) {
|
|
89
|
+
this.logger.log(`Branch ${this.colors.dim(branch ?? '—')}`);
|
|
90
|
+
this.logger.log(`Commit ${this.colors.dim(commit ? commit.slice(0, 7) : '—')}`);
|
|
91
|
+
this.logger.log(`By ${this.colors.dim(user ?? '—')}`);
|
|
92
|
+
this.logger.log(`Date ${this.colors.dim(date ? new Date(date).toLocaleString() : '—')}`);
|
|
93
|
+
}
|
|
51
94
|
}
|
|
52
95
|
catch { }
|
|
53
96
|
}
|
|
54
97
|
const { stdout: lockStdout } = await ssh(host, `set +e\n[ -f ${q(paths.lock)} ] && cat ${q(paths.lock)} || true`);
|
|
55
98
|
const lock = lockStdout.trim();
|
|
56
|
-
|
|
99
|
+
status.lock = lock || null;
|
|
100
|
+
if (!this.json) {
|
|
101
|
+
this.logger.log(`Lock ${lock ? this.colors.yellow(lock) : this.colors.dim('none')}`);
|
|
102
|
+
}
|
|
57
103
|
}
|
|
58
104
|
catch (error) {
|
|
105
|
+
status.error = error.message;
|
|
59
106
|
this.logger.error(`status error: ${error.message}`);
|
|
60
107
|
}
|
|
61
108
|
}
|
|
109
|
+
if (this.json) {
|
|
110
|
+
this.logger.log(JSON.stringify({ hosts: report }, null, 2));
|
|
111
|
+
}
|
|
62
112
|
}
|
|
63
113
|
}
|
|
114
|
+
__decorate([
|
|
115
|
+
flags.boolean({ description: 'Output result as JSON' }),
|
|
116
|
+
__metadata("design:type", Boolean)
|
|
117
|
+
], Status.prototype, "json", void 0);
|
|
64
118
|
//# sourceMappingURL=status.js.map
|
|
@@ -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;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../commands/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { BaseCommand, flags } from '@adonisjs/ace';
|
|
2
11
|
import { readFile } from 'fs/promises';
|
|
3
12
|
import { resolve, dirname } from 'path';
|
|
4
13
|
import { fileURLToPath } from 'url';
|
|
@@ -8,7 +17,15 @@ export default class Version extends BaseCommand {
|
|
|
8
17
|
async run() {
|
|
9
18
|
const pkgPath = resolve(dirname(fileURLToPath(import.meta.url)), '../../package.json');
|
|
10
19
|
const pkg = JSON.parse(await readFile(pkgPath, 'utf-8'));
|
|
20
|
+
if (this.json) {
|
|
21
|
+
this.logger.log(JSON.stringify({ version: pkg.version }, null, 2));
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
11
24
|
this.logger.log(pkg.version);
|
|
12
25
|
}
|
|
13
26
|
}
|
|
27
|
+
__decorate([
|
|
28
|
+
flags.boolean({ description: 'Output result as JSON' }),
|
|
29
|
+
__metadata("design:type", Boolean)
|
|
30
|
+
], Version.prototype, "json", void 0);
|
|
14
31
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../commands/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../commands/version.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AAEnC,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,WAAW;IAC9C,MAAM,CAAC,WAAW,GAAG,SAAS,CAAA;IAC9B,MAAM,CAAC,WAAW,GAAG,0BAA0B,CAAA;IAK/C,KAAK,CAAC,GAAG;QACP,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAA;QACtF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;QAExD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YAClE,OAAM;QACR,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC9B,CAAC;;AAZO;IADP,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC;;qCACnC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import './adonisjs.ts';
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import "./adonisjs.js";
|
|
2
|
+
import { task, desc, get, local, upload, pmInstallProd, cd, run, before, after, } from "../index.js";
|
|
3
|
+
import { getPackageLockFileName } from "../src/utils.js";
|
|
4
|
+
desc('Builds the AdonisJS application locally');
|
|
5
|
+
task('deploy:build', async () => {
|
|
6
|
+
const adonisjsPath = get('adonisjs_path', '');
|
|
7
|
+
const cwd = adonisjsPath || process.cwd();
|
|
8
|
+
await local('node ace build', { cwd });
|
|
9
|
+
const lockFile = await getPackageLockFileName(cwd);
|
|
10
|
+
await local('cp package.json ./build', { cwd });
|
|
11
|
+
if (lockFile) {
|
|
12
|
+
await local(`cp ${lockFile} ./build`, { cwd });
|
|
13
|
+
}
|
|
14
|
+
await local('if [ -f pnpm-workspace.yaml ]; then cp pnpm-workspace.yaml ./build; fi', { cwd });
|
|
15
|
+
await local('if [ -f .npmrc ]; then cp .npmrc ./build; fi', { cwd });
|
|
16
|
+
await local('if [ -f ecosystem.config.cjs ]; then cp ecosystem.config.cjs ./build; fi', { cwd });
|
|
17
|
+
await local('mkdir -p ./build/tmp', { cwd });
|
|
18
|
+
});
|
|
19
|
+
desc('Uploads local build artifacts to the release directory');
|
|
20
|
+
task('deploy:update_code', async ({ paths }) => {
|
|
21
|
+
const adonisjsPath = get('adonisjs_path', '').replace(/\/?$/, '');
|
|
22
|
+
const configuredSource = get('source_path', adonisjsPath ? `${adonisjsPath}/build/.` : './build/.');
|
|
23
|
+
const source = configuredSource.endsWith('/.')
|
|
24
|
+
? configuredSource
|
|
25
|
+
: `${configuredSource.replace(/\/+$/, '')}/.`;
|
|
26
|
+
await upload(source, paths.release);
|
|
27
|
+
});
|
|
28
|
+
desc('Installs production dependencies in the release');
|
|
29
|
+
task('deploy:install', () => {
|
|
30
|
+
cd('{{release_path}}');
|
|
31
|
+
run(pmInstallProd());
|
|
32
|
+
});
|
|
33
|
+
before('deploy:lock', 'deploy:build');
|
|
34
|
+
after('deploy:shared', 'deploy:install');
|
|
35
|
+
//# sourceMappingURL=adonisjs_local.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adonisjs_local.js","sourceRoot":"","sources":["../../recipes/adonisjs_local.ts"],"names":[],"mappings":"AAMA,OAAO,eAAe,CAAA;AACtB,OAAO,EAEL,IAAI,EACJ,IAAI,EACJ,GAAG,EACH,KAAK,EACL,MAAM,EACN,aAAa,EACb,EAAE,EACF,GAAG,EACH,MAAM,EACN,KAAK,GACN,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AAExD,IAAI,CAAC,yCAAyC,CAAC,CAAA;AAC/C,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;IAC9B,MAAM,YAAY,GAAG,GAAG,CAAS,eAAe,EAAE,EAAE,CAAC,CAAA;IACrD,MAAM,GAAG,GAAG,YAAY,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IAEzC,MAAM,KAAK,CAAC,gBAAgB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;IAEtC,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC,GAAG,CAAC,CAAA;IAClD,MAAM,KAAK,CAAC,yBAAyB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;IAE/C,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,KAAK,CAAC,MAAM,QAAQ,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;IAChD,CAAC;IAED,MAAM,KAAK,CAAC,wEAAwE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;IAC9F,MAAM,KAAK,CAAC,8CAA8C,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;IACpE,MAAM,KAAK,CAAC,0EAA0E,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;IAChG,MAAM,KAAK,CAAC,sBAAsB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;AAC9C,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,wDAAwD,CAAC,CAAA;AAC9D,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAe,EAAE,EAAE;IAC1D,MAAM,YAAY,GAAG,GAAG,CAAS,eAAe,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IACzE,MAAM,gBAAgB,GAAG,GAAG,CAC1B,aAAa,EACb,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,UAAU,CAAC,CAAC,CAAC,WAAW,CACvD,CAAA;IACD,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC5C,CAAC,CAAC,gBAAgB;QAClB,CAAC,CAAC,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAA;IAC/C,MAAM,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;AACrC,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,iDAAiD,CAAC,CAAA;AACvD,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,kBAAkB,CAAC,CAAA;IACtB,GAAG,CAAC,aAAa,EAAE,CAAC,CAAA;AACtB,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC,CAAA;AACrC,KAAK,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA"}
|
package/build/recipes/pm2.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';
|
|
2
2
|
import { task, desc, cd, run, after, onStatus, bin } from "../index.js";
|
|
3
3
|
import { ssh, q } from "../src/utils.js";
|
|
4
|
-
onStatus(async (_ctx, host
|
|
4
|
+
onStatus(async (_ctx, host) => {
|
|
5
5
|
const { stdout } = await ssh(host, `set +e\n${bin('pm2')} --version || true`);
|
|
6
|
-
|
|
6
|
+
return { pm2: stdout.trim() || 'unavailable' };
|
|
7
7
|
});
|
|
8
8
|
desc('Starts PM2 processes with updated environment');
|
|
9
9
|
task('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,aAAa,CAAA;AAC3C,OAAO,EAAoB,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACzF,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAA;AAiBxC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"pm2.js","sourceRoot":"","sources":["../../recipes/pm2.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
import type { Host } from './types.ts';
|
|
1
|
+
import type { DeployContext, Host } from './types.ts';
|
|
2
2
|
import { BaseCommand } from '@adonisjs/ace';
|
|
3
3
|
export declare abstract class BaseDeployCommand extends BaseCommand {
|
|
4
4
|
host: string | undefined;
|
|
5
|
-
protected selectHosts(
|
|
5
|
+
protected selectHosts(options?: {
|
|
6
|
+
all?: boolean;
|
|
7
|
+
}): Promise<Host[] | null>;
|
|
8
|
+
protected setupCommand(host: Host): string;
|
|
9
|
+
protected missingSetupMessage(host: Host): string;
|
|
10
|
+
protected ensureHostSetup(ctx: DeployContext, host: Host): Promise<boolean>;
|
|
6
11
|
}
|
|
@@ -9,8 +9,9 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
9
9
|
};
|
|
10
10
|
import { BaseCommand, flags } from '@adonisjs/ace';
|
|
11
11
|
import { Context } from "./context.js";
|
|
12
|
+
import { isHostSetup } from "./deployer.js";
|
|
12
13
|
export class BaseDeployCommand extends BaseCommand {
|
|
13
|
-
async selectHosts() {
|
|
14
|
+
async selectHosts(options = {}) {
|
|
14
15
|
const ctx = Context.get();
|
|
15
16
|
if (this.host) {
|
|
16
17
|
const hosts = ctx.config.hosts.filter((h) => h.name === this.host);
|
|
@@ -21,6 +22,8 @@ export class BaseDeployCommand extends BaseCommand {
|
|
|
21
22
|
}
|
|
22
23
|
return hosts;
|
|
23
24
|
}
|
|
25
|
+
if (options.all)
|
|
26
|
+
return ctx.config.hosts;
|
|
24
27
|
if (ctx.config.hosts.length > 1) {
|
|
25
28
|
const selected = await this.prompt.multiple('Select hosts', ctx.config.hosts.map((h) => ({ name: h.name, message: h.name })));
|
|
26
29
|
const hosts = ctx.config.hosts.filter((h) => selected.includes(h.name));
|
|
@@ -33,6 +36,19 @@ export class BaseDeployCommand extends BaseCommand {
|
|
|
33
36
|
}
|
|
34
37
|
return ctx.config.hosts;
|
|
35
38
|
}
|
|
39
|
+
setupCommand(host) {
|
|
40
|
+
return `npx cata deploy:setup -H ${host.name}`;
|
|
41
|
+
}
|
|
42
|
+
missingSetupMessage(host) {
|
|
43
|
+
return `[${host.name}] Catapult is not initialized on this server. Run: ${this.setupCommand(host)}`;
|
|
44
|
+
}
|
|
45
|
+
async ensureHostSetup(ctx, host) {
|
|
46
|
+
if (await isHostSetup(ctx, host))
|
|
47
|
+
return true;
|
|
48
|
+
this.logger.error(this.missingSetupMessage(host));
|
|
49
|
+
this.exitCode = 1;
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
36
52
|
}
|
|
37
53
|
__decorate([
|
|
38
54
|
flags.string({ alias: 'H', description: 'Target a specific host' }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base_command.js","sourceRoot":"","sources":["../../src/base_command.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"base_command.js","sourceRoot":"","sources":["../../src/base_command.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,MAAM,OAAgB,iBAAkB,SAAQ,WAAW;IAI/C,KAAK,CAAC,WAAW,CAAC,UAA6B,EAAE;QACzD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;QAEzB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAA;YAClE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;gBAC/C,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;gBACjB,OAAO,IAAI,CAAA;YACb,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,OAAO,CAAC,GAAG;YAAE,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAA;QAExC,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CACzC,cAAc,EACd,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CACjE,CAAA;YACD,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;YACvE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;gBACrC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;gBACjB,OAAO,IAAI,CAAA;YACb,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC;QAED,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAA;IACzB,CAAC;IAES,YAAY,CAAC,IAAU;QAC/B,OAAO,4BAA4B,IAAI,CAAC,IAAI,EAAE,CAAA;IAChD,CAAC;IAES,mBAAmB,CAAC,IAAU;QACtC,OAAO,IAAI,IAAI,CAAC,IAAI,sDAAsD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAA;IACrG,CAAC;IAES,KAAK,CAAC,eAAe,CAAC,GAAkB,EAAE,IAAU;QAC5D,IAAI,MAAM,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;QAE7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAA;QACjD,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;QACjB,OAAO,KAAK,CAAA;IACd,CAAC;CACF;AAjDS;IADP,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC;;+CACpC"}
|
package/build/src/deployer.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { Host, DeployContext } from './types.ts';
|
|
2
2
|
export declare function setupHost(ctx: DeployContext, host: Host): Promise<void>;
|
|
3
|
+
export declare function initializeHost(ctx: DeployContext, host: Host): Promise<void>;
|
|
4
|
+
export declare function isHostSetup(ctx: DeployContext, host: Host): Promise<boolean>;
|
|
3
5
|
export declare function getCurrentRelease(ctx: DeployContext, host: Host): Promise<string | null>;
|
|
4
6
|
export declare function getReleaseNames(ctx: DeployContext, host: Host): Promise<string[]>;
|
|
5
7
|
export declare function rollbackHost(ctx: DeployContext, host: Host, target?: string): Promise<void>;
|
package/build/src/deployer.js
CHANGED
|
@@ -4,6 +4,7 @@ import { runTask } from "./task.js";
|
|
|
4
4
|
import { get } from "./store.js";
|
|
5
5
|
import { getPipeline } from "./pipeline.js";
|
|
6
6
|
import { logger } from "./logger.js";
|
|
7
|
+
import { hooks } from "./pipeline/hooks.js";
|
|
7
8
|
async function runHook(ctx, name, context = {}) {
|
|
8
9
|
if (!ctx.hooks[name])
|
|
9
10
|
return;
|
|
@@ -31,6 +32,22 @@ export async function setupHost(ctx, host) {
|
|
|
31
32
|
${mkfiles}
|
|
32
33
|
`);
|
|
33
34
|
}
|
|
35
|
+
export async function initializeHost(ctx, host) {
|
|
36
|
+
await setupHost(ctx, host);
|
|
37
|
+
for (const hook of hooks.getSetup()) {
|
|
38
|
+
await hook(ctx, host, logger);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export async function isHostSetup(ctx, host) {
|
|
42
|
+
const paths = getPaths(host.deployPath, ctx.release);
|
|
43
|
+
try {
|
|
44
|
+
await ssh(host, `set -e\n[ -d ${q(paths.cataConfig)} ]`);
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
34
51
|
export async function getCurrentRelease(ctx, host) {
|
|
35
52
|
const paths = getPaths(host.deployPath, ctx.release);
|
|
36
53
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployer.js","sourceRoot":"","sources":["../../src/deployer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"deployer.js","sourceRoot":"","sources":["../../src/deployer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import type { Host, DeployContext } from '../types.ts';
|
|
2
2
|
import type { CatapultLogger } from '../logger.ts';
|
|
3
3
|
export type LifecycleHook = (ctx: DeployContext, host: Host, logger: CatapultLogger) => Promise<void> | void;
|
|
4
|
+
export type StatusData = Record<string, unknown>;
|
|
5
|
+
export type StatusHook = (ctx: DeployContext, host: Host, logger: CatapultLogger) => Promise<StatusData | void> | StatusData | void;
|
|
4
6
|
export declare class PipelineHookStore {
|
|
5
7
|
#private;
|
|
6
8
|
addSetup(fn: LifecycleHook): void;
|
|
7
9
|
getSetup(): LifecycleHook[];
|
|
8
|
-
addStatus(fn:
|
|
9
|
-
getStatus():
|
|
10
|
+
addStatus(fn: StatusHook): void;
|
|
11
|
+
getStatus(): StatusHook[];
|
|
10
12
|
}
|
|
11
13
|
export declare const hooks: PipelineHookStore;
|
|
@@ -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":"AAiBA,MAAM,OAAO,iBAAiB;IAC5B,WAAW,GAAoB,EAAE,CAAA;IACjC,YAAY,GAAiB,EAAE,CAAA;IAE/B,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,EAAc;QACtB,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"}
|
package/build/src/pipeline.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { TaskName } from './types.ts';
|
|
2
|
-
import { hooks, type LifecycleHook } from './pipeline/hooks.ts';
|
|
2
|
+
import { hooks, type LifecycleHook, type StatusHook } from './pipeline/hooks.ts';
|
|
3
3
|
export { hooks };
|
|
4
|
-
export type { LifecycleHook } from './pipeline/hooks.ts';
|
|
4
|
+
export type { LifecycleHook, StatusHook, StatusData } from './pipeline/hooks.ts';
|
|
5
5
|
export declare function getPipeline(): string[];
|
|
6
6
|
export declare function setPipeline(tasks: TaskName[]): void;
|
|
7
7
|
export declare function initPipeline(tasks: TaskName[]): void;
|
|
@@ -10,4 +10,4 @@ export declare function after(existing: TaskName, newTask: TaskName): void;
|
|
|
10
10
|
export declare function inPipeline(name: TaskName): boolean;
|
|
11
11
|
export declare function remove(name: TaskName): void;
|
|
12
12
|
export declare function onSetup(fn: LifecycleHook): void;
|
|
13
|
-
export declare function onStatus(fn:
|
|
13
|
+
export declare function onStatus(fn: StatusHook): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/pipeline.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/pipeline.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,KAAK,EAAuC,MAAM,qBAAqB,CAAA;AAEhF,OAAO,EAAE,KAAK,EAAE,CAAA;AAIhB,MAAM,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAA;AAGpC,MAAM,UAAU,WAAW;IACzB,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAA;AACvB,CAAC;AAGD,MAAM,UAAU,WAAW,CAAC,KAAiB;IAC3C,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AACrB,CAAC;AAGD,MAAM,UAAU,YAAY,CAAC,KAAiB;IAC5C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACtB,CAAC;AAGD,MAAM,UAAU,MAAM,CAAC,QAAkB,EAAE,OAAiB;IAC1D,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;AACpC,CAAC;AAGD,MAAM,UAAU,KAAK,CAAC,QAAkB,EAAE,OAAiB;IACzD,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;AACnC,CAAC;AAGD,MAAM,UAAU,UAAU,CAAC,IAAc;IACvC,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AAC3B,CAAC;AAGD,MAAM,UAAU,MAAM,CAAC,IAAc;IACnC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AACvB,CAAC;AAGD,MAAM,UAAU,OAAO,CAAC,EAAiB;IACvC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;AACpB,CAAC;AAQD,MAAM,UAAU,QAAQ,CAAC,EAAc;IACrC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;AACrB,CAAC"}
|