@insureco/cli 0.1.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/README.md +168 -0
- package/dist/commands/backup.d.ts +11 -0
- package/dist/commands/backup.d.ts.map +1 -0
- package/dist/commands/backup.js +112 -0
- package/dist/commands/backup.js.map +1 -0
- package/dist/commands/config.d.ts +10 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +41 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/deploy.d.ts +16 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +219 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/destroy.d.ts +12 -0
- package/dist/commands/destroy.d.ts.map +1 -0
- package/dist/commands/destroy.js +62 -0
- package/dist/commands/destroy.js.map +1 -0
- package/dist/commands/env.d.ts +7 -0
- package/dist/commands/env.d.ts.map +1 -0
- package/dist/commands/env.js +42 -0
- package/dist/commands/env.js.map +1 -0
- package/dist/commands/init-ai.d.ts +7 -0
- package/dist/commands/init-ai.d.ts.map +1 -0
- package/dist/commands/init-ai.js +257 -0
- package/dist/commands/init-ai.js.map +1 -0
- package/dist/commands/init.d.ts +8 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +228 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/link.d.ts +10 -0
- package/dist/commands/link.d.ts.map +1 -0
- package/dist/commands/link.js +193 -0
- package/dist/commands/link.js.map +1 -0
- package/dist/commands/login.d.ts +8 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +164 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logs.d.ts +16 -0
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/commands/logs.js +362 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/preflight.d.ts +8 -0
- package/dist/commands/preflight.d.ts.map +1 -0
- package/dist/commands/preflight.js +188 -0
- package/dist/commands/preflight.js.map +1 -0
- package/dist/commands/program.d.ts +7 -0
- package/dist/commands/program.d.ts.map +1 -0
- package/dist/commands/program.js +59 -0
- package/dist/commands/program.js.map +1 -0
- package/dist/commands/push.d.ts +12 -0
- package/dist/commands/push.d.ts.map +1 -0
- package/dist/commands/push.js +171 -0
- package/dist/commands/push.js.map +1 -0
- package/dist/commands/register.d.ts +7 -0
- package/dist/commands/register.d.ts.map +1 -0
- package/dist/commands/register.js +124 -0
- package/dist/commands/register.js.map +1 -0
- package/dist/commands/rollback.d.ts +11 -0
- package/dist/commands/rollback.d.ts.map +1 -0
- package/dist/commands/rollback.js +172 -0
- package/dist/commands/rollback.js.map +1 -0
- package/dist/commands/sample.d.ts +11 -0
- package/dist/commands/sample.d.ts.map +1 -0
- package/dist/commands/sample.js +114 -0
- package/dist/commands/sample.js.map +1 -0
- package/dist/commands/services.d.ts +13 -0
- package/dist/commands/services.d.ts.map +1 -0
- package/dist/commands/services.js +95 -0
- package/dist/commands/services.js.map +1 -0
- package/dist/commands/status.d.ts +9 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +170 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/troubleshoot.d.ts +19 -0
- package/dist/commands/troubleshoot.d.ts.map +1 -0
- package/dist/commands/troubleshoot.js +465 -0
- package/dist/commands/troubleshoot.js.map +1 -0
- package/dist/commands/versions.d.ts +16 -0
- package/dist/commands/versions.d.ts.map +1 -0
- package/dist/commands/versions.js +162 -0
- package/dist/commands/versions.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +294 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/ai/client.d.ts +36 -0
- package/dist/lib/ai/client.d.ts.map +1 -0
- package/dist/lib/ai/client.js +140 -0
- package/dist/lib/ai/client.js.map +1 -0
- package/dist/lib/ai/generator.d.ts +17 -0
- package/dist/lib/ai/generator.d.ts.map +1 -0
- package/dist/lib/ai/generator.js +338 -0
- package/dist/lib/ai/generator.js.map +1 -0
- package/dist/lib/ai/prompts.d.ts +47 -0
- package/dist/lib/ai/prompts.d.ts.map +1 -0
- package/dist/lib/ai/prompts.js +247 -0
- package/dist/lib/ai/prompts.js.map +1 -0
- package/dist/lib/ai/scanner.d.ts +50 -0
- package/dist/lib/ai/scanner.d.ts.map +1 -0
- package/dist/lib/ai/scanner.js +237 -0
- package/dist/lib/ai/scanner.js.map +1 -0
- package/dist/lib/api.d.ts +18 -0
- package/dist/lib/api.d.ts.map +1 -0
- package/dist/lib/api.js +67 -0
- package/dist/lib/api.js.map +1 -0
- package/dist/lib/builder.d.ts +34 -0
- package/dist/lib/builder.d.ts.map +1 -0
- package/dist/lib/builder.js +132 -0
- package/dist/lib/builder.js.map +1 -0
- package/dist/lib/config.d.ts +20 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +124 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/output.d.ts +12 -0
- package/dist/lib/output.d.ts.map +1 -0
- package/dist/lib/output.js +39 -0
- package/dist/lib/output.js.map +1 -0
- package/dist/lib/scaffold.d.ts +29 -0
- package/dist/lib/scaffold.d.ts.map +1 -0
- package/dist/lib/scaffold.js +166 -0
- package/dist/lib/scaffold.js.map +1 -0
- package/dist/lib/troubleshoot/analyzer.d.ts +14 -0
- package/dist/lib/troubleshoot/analyzer.d.ts.map +1 -0
- package/dist/lib/troubleshoot/analyzer.js +541 -0
- package/dist/lib/troubleshoot/analyzer.js.map +1 -0
- package/dist/lib/troubleshoot/auto-fix.d.ts +29 -0
- package/dist/lib/troubleshoot/auto-fix.d.ts.map +1 -0
- package/dist/lib/troubleshoot/auto-fix.js +373 -0
- package/dist/lib/troubleshoot/auto-fix.js.map +1 -0
- package/dist/lib/troubleshoot/index.d.ts +5 -0
- package/dist/lib/troubleshoot/index.d.ts.map +1 -0
- package/dist/lib/troubleshoot/index.js +6 -0
- package/dist/lib/troubleshoot/index.js.map +1 -0
- package/dist/lib/troubleshoot/log-fetcher.d.ts +43 -0
- package/dist/lib/troubleshoot/log-fetcher.d.ts.map +1 -0
- package/dist/lib/troubleshoot/log-fetcher.js +431 -0
- package/dist/lib/troubleshoot/log-fetcher.js.map +1 -0
- package/dist/lib/troubleshoot/redactor.d.ts +35 -0
- package/dist/lib/troubleshoot/redactor.d.ts.map +1 -0
- package/dist/lib/troubleshoot/redactor.js +208 -0
- package/dist/lib/troubleshoot/redactor.js.map +1 -0
- package/dist/lib/validators/catalog-validator.d.ts +3 -0
- package/dist/lib/validators/catalog-validator.d.ts.map +1 -0
- package/dist/lib/validators/catalog-validator.js +205 -0
- package/dist/lib/validators/catalog-validator.js.map +1 -0
- package/dist/lib/validators/dockerfile-validator.d.ts +4 -0
- package/dist/lib/validators/dockerfile-validator.d.ts.map +1 -0
- package/dist/lib/validators/dockerfile-validator.js +262 -0
- package/dist/lib/validators/dockerfile-validator.js.map +1 -0
- package/dist/lib/validators/env-validator.d.ts +3 -0
- package/dist/lib/validators/env-validator.d.ts.map +1 -0
- package/dist/lib/validators/env-validator.js +268 -0
- package/dist/lib/validators/env-validator.js.map +1 -0
- package/dist/lib/validators/git-validator.d.ts +3 -0
- package/dist/lib/validators/git-validator.d.ts.map +1 -0
- package/dist/lib/validators/git-validator.js +236 -0
- package/dist/lib/validators/git-validator.js.map +1 -0
- package/dist/lib/validators/health-detector.d.ts +4 -0
- package/dist/lib/validators/health-detector.d.ts.map +1 -0
- package/dist/lib/validators/health-detector.js +159 -0
- package/dist/lib/validators/health-detector.js.map +1 -0
- package/dist/lib/validators/index.d.ts +7 -0
- package/dist/lib/validators/index.d.ts.map +1 -0
- package/dist/lib/validators/index.js +7 -0
- package/dist/lib/validators/index.js.map +1 -0
- package/dist/lib/validators/route-validator.d.ts +3 -0
- package/dist/lib/validators/route-validator.d.ts.map +1 -0
- package/dist/lib/validators/route-validator.js +238 -0
- package/dist/lib/validators/route-validator.js.map +1 -0
- package/dist/types/index.d.ts +455 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +37 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +58 -0
package/README.md
ADDED
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# @insureco/cli
|
|
2
|
+
|
|
3
|
+
Developer CLI for the InsurEco Tawa platform. Deploy, manage, and monitor services with a single tool.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g @insureco/cli
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Or use without installing:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npx @insureco/cli deploy
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Quick Start
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# Login to the platform
|
|
21
|
+
iec login
|
|
22
|
+
|
|
23
|
+
# Option 1: AI-powered setup (recommended)
|
|
24
|
+
iec init --ai
|
|
25
|
+
|
|
26
|
+
# Option 2: Use a starter template
|
|
27
|
+
iec sample --nextjs
|
|
28
|
+
cd my-service
|
|
29
|
+
|
|
30
|
+
# Check everything is configured correctly
|
|
31
|
+
iec preflight
|
|
32
|
+
|
|
33
|
+
# Deploy to sandbox
|
|
34
|
+
iec deploy
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Commands
|
|
38
|
+
|
|
39
|
+
### Setup & Configuration
|
|
40
|
+
|
|
41
|
+
| Command | Description |
|
|
42
|
+
|---------|-------------|
|
|
43
|
+
| `iec login` | Authenticate with the platform |
|
|
44
|
+
| `iec logout` | Sign out |
|
|
45
|
+
| `iec whoami` | Show current user |
|
|
46
|
+
| `iec config` | View/set CLI configuration |
|
|
47
|
+
| `iec init` | Scaffold new service |
|
|
48
|
+
| `iec init --ai` | AI-powered interactive setup |
|
|
49
|
+
| `iec sample --api` | Scaffold Express/Hono API starter |
|
|
50
|
+
| `iec sample --nextjs` | Scaffold Next.js starter |
|
|
51
|
+
| `iec sample --crosspod` | Scaffold two services with pod-to-pod auth demo |
|
|
52
|
+
|
|
53
|
+
### Deployment
|
|
54
|
+
|
|
55
|
+
| Command | Description |
|
|
56
|
+
|---------|-------------|
|
|
57
|
+
| `iec preflight` | Run pre-deployment checks |
|
|
58
|
+
| `iec register` | Register service with Koko |
|
|
59
|
+
| `iec link` | Connect repo to iec-builder |
|
|
60
|
+
| `iec deploy` | Build and deploy (via GitHub) |
|
|
61
|
+
| `iec push` | Push code directly to builder (no GitHub needed) |
|
|
62
|
+
| `iec rollback <version>` | Redeploy a previous version |
|
|
63
|
+
| `iec versions` | List deployable versions |
|
|
64
|
+
| `iec destroy` | Delete deployment |
|
|
65
|
+
|
|
66
|
+
### Monitoring
|
|
67
|
+
|
|
68
|
+
| Command | Description |
|
|
69
|
+
|---------|-------------|
|
|
70
|
+
| `iec status` | Show service and build status |
|
|
71
|
+
| `iec logs` | Stream container logs |
|
|
72
|
+
| `iec logs --build <id>` | View build logs |
|
|
73
|
+
| `iec builds` | List recent builds |
|
|
74
|
+
|
|
75
|
+
### Data Management
|
|
76
|
+
|
|
77
|
+
| Command | Description |
|
|
78
|
+
|---------|-------------|
|
|
79
|
+
| `iec env` | Manage environments |
|
|
80
|
+
| `iec program` | View programs |
|
|
81
|
+
| `iec backup` | Manage backups |
|
|
82
|
+
| `iec restore` | Restore from backup |
|
|
83
|
+
|
|
84
|
+
## Configuration
|
|
85
|
+
|
|
86
|
+
### Global Config (`~/.iec/config.yaml`)
|
|
87
|
+
|
|
88
|
+
```yaml
|
|
89
|
+
koko_url: https://janus.tawa.insureco.io/koko
|
|
90
|
+
builder_url: https://builder.tawa.insureco.io
|
|
91
|
+
registry: registry.digitalocean.com/insureco
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Project Config (`catalog-info.yaml`)
|
|
95
|
+
|
|
96
|
+
```yaml
|
|
97
|
+
apiVersion: backstage.io/v1alpha1
|
|
98
|
+
kind: Component
|
|
99
|
+
metadata:
|
|
100
|
+
name: my-service
|
|
101
|
+
description: My awesome service
|
|
102
|
+
annotations:
|
|
103
|
+
insureco.io/framework: nextjs
|
|
104
|
+
insureco.io/node-version: "20"
|
|
105
|
+
spec:
|
|
106
|
+
type: service
|
|
107
|
+
lifecycle: production
|
|
108
|
+
owner: my-team
|
|
109
|
+
routes:
|
|
110
|
+
- path: /api/users
|
|
111
|
+
methods: [GET, POST]
|
|
112
|
+
auth: required
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Environment Flags
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
iec deploy # Deploy to sandbox (default)
|
|
119
|
+
iec deploy --prod # Deploy to production
|
|
120
|
+
iec deploy --uat # Deploy to UAT
|
|
121
|
+
iec deploy --watch # Watch build progress
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Development
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
# Install dependencies
|
|
128
|
+
npm install
|
|
129
|
+
|
|
130
|
+
# Run in development
|
|
131
|
+
npm run dev
|
|
132
|
+
|
|
133
|
+
# Build
|
|
134
|
+
npm run build
|
|
135
|
+
|
|
136
|
+
# Run built CLI
|
|
137
|
+
npm start
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Publishing
|
|
141
|
+
|
|
142
|
+
Releases are automated via GitHub Actions. To publish a new version:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
# 1. Bump version in package.json
|
|
146
|
+
# 2. Commit and tag
|
|
147
|
+
git add -A && git commit -m "chore: release v0.2.0"
|
|
148
|
+
git tag v0.2.0
|
|
149
|
+
git push && git push --tags
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
The GitHub Action will automatically publish to npm when a `v*` tag is pushed.
|
|
153
|
+
|
|
154
|
+
### Manual Publishing
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
npm login
|
|
158
|
+
npm publish
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Requirements
|
|
162
|
+
|
|
163
|
+
- Node.js 20+
|
|
164
|
+
- npm or pnpm
|
|
165
|
+
|
|
166
|
+
## License
|
|
167
|
+
|
|
168
|
+
MIT
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface BackupOptions {
|
|
2
|
+
type?: 'mongodb' | 'redis' | 'neo4j';
|
|
3
|
+
database?: string;
|
|
4
|
+
}
|
|
5
|
+
interface RestoreOptions {
|
|
6
|
+
confirm?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function backupCommand(options: BackupOptions): Promise<void>;
|
|
9
|
+
export declare function restoreCommand(backupId: string, options: RestoreOptions): Promise<void>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=backup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"AAKA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,CAAA;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,UAAU,cAAc;IACtB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAkBD,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAQzE;AAED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC,CAkCf"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { log, formatTable, spinner } from '../lib/output.js';
|
|
2
|
+
const BACKUP_API_URL = 'http://jefferson.daryx.com:8090';
|
|
3
|
+
export async function backupCommand(options) {
|
|
4
|
+
if (options.type) {
|
|
5
|
+
// Trigger manual backup
|
|
6
|
+
await triggerBackup(options.type, options.database);
|
|
7
|
+
}
|
|
8
|
+
else {
|
|
9
|
+
// Show backup status
|
|
10
|
+
await showBackupStatus();
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export async function restoreCommand(backupId, options) {
|
|
14
|
+
if (!options.confirm) {
|
|
15
|
+
log.error('Restore requires --confirm flag');
|
|
16
|
+
log.dim('This is a destructive operation that will overwrite existing data');
|
|
17
|
+
process.exit(1);
|
|
18
|
+
}
|
|
19
|
+
const sp = spinner(`Restoring backup ${backupId}`);
|
|
20
|
+
try {
|
|
21
|
+
const response = await fetch(`${BACKUP_API_URL}/api/restore`, {
|
|
22
|
+
method: 'POST',
|
|
23
|
+
headers: { 'Content-Type': 'application/json' },
|
|
24
|
+
body: JSON.stringify({ backupId, confirm: true }),
|
|
25
|
+
});
|
|
26
|
+
const result = (await response.json());
|
|
27
|
+
if (!result.success) {
|
|
28
|
+
sp.stop(false);
|
|
29
|
+
log.error(`Restore failed: ${result.error?.message}`);
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
sp.stop(true);
|
|
33
|
+
log.success(`Restore started: job ${result.data?.jobId}`);
|
|
34
|
+
log.dim('Monitor progress with: iec backup --status');
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
sp.stop(false);
|
|
38
|
+
if (error instanceof Error) {
|
|
39
|
+
log.error(`Failed to start restore: ${error.message}`);
|
|
40
|
+
}
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
async function showBackupStatus() {
|
|
45
|
+
log.info('Backup status');
|
|
46
|
+
log.info('');
|
|
47
|
+
try {
|
|
48
|
+
const response = await fetch(`${BACKUP_API_URL}/api/status`);
|
|
49
|
+
const result = (await response.json());
|
|
50
|
+
if (!result.success || !result.data) {
|
|
51
|
+
log.error(`Failed to get status: ${result.error?.message}`);
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
54
|
+
const { lastRun, nextScheduled, storage } = result.data;
|
|
55
|
+
log.info('Last backups:');
|
|
56
|
+
const lastRunRows = Object.entries(lastRun).map(([type, info]) => {
|
|
57
|
+
const typed = info;
|
|
58
|
+
return [
|
|
59
|
+
type,
|
|
60
|
+
typed.status,
|
|
61
|
+
new Date(typed.timestamp).toLocaleString(),
|
|
62
|
+
`${typed.durationSec}s`,
|
|
63
|
+
];
|
|
64
|
+
});
|
|
65
|
+
console.log(formatTable(['TYPE', 'STATUS', 'TIMESTAMP', 'DURATION'], lastRunRows));
|
|
66
|
+
log.info('');
|
|
67
|
+
log.info('Next scheduled:');
|
|
68
|
+
for (const [type, timestamp] of Object.entries(nextScheduled)) {
|
|
69
|
+
log.dim(` ${type}: ${new Date(timestamp).toLocaleString()}`);
|
|
70
|
+
}
|
|
71
|
+
log.info('');
|
|
72
|
+
log.info('Storage:');
|
|
73
|
+
log.dim(` Provider: ${storage.provider}`);
|
|
74
|
+
log.dim(` Bucket: ${storage.bucket}`);
|
|
75
|
+
log.dim(` Used: ${(storage.usedBytes / 1024 / 1024 / 1024).toFixed(2)} GB`);
|
|
76
|
+
log.dim(` Backups: ${storage.backupCount}`);
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
if (error instanceof Error) {
|
|
80
|
+
log.error(`Failed to connect to backup service: ${error.message}`);
|
|
81
|
+
log.dim(`Backup service URL: ${BACKUP_API_URL}`);
|
|
82
|
+
}
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
async function triggerBackup(type, database) {
|
|
87
|
+
const sp = spinner(`Triggering ${type} backup`);
|
|
88
|
+
try {
|
|
89
|
+
const response = await fetch(`${BACKUP_API_URL}/api/backups`, {
|
|
90
|
+
method: 'POST',
|
|
91
|
+
headers: { 'Content-Type': 'application/json' },
|
|
92
|
+
body: JSON.stringify({ type, database }),
|
|
93
|
+
});
|
|
94
|
+
const result = (await response.json());
|
|
95
|
+
if (!result.success) {
|
|
96
|
+
sp.stop(false);
|
|
97
|
+
log.error(`Backup failed: ${result.error?.message}`);
|
|
98
|
+
process.exit(1);
|
|
99
|
+
}
|
|
100
|
+
sp.stop(true);
|
|
101
|
+
log.success(`Backup started: job ${result.data?.jobId}`);
|
|
102
|
+
log.dim('Monitor progress with: iec backup');
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
sp.stop(false);
|
|
106
|
+
if (error instanceof Error) {
|
|
107
|
+
log.error(`Failed to trigger backup: ${error.message}`);
|
|
108
|
+
}
|
|
109
|
+
process.exit(1);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=backup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface ConfigSetOptions {
|
|
2
|
+
kokoUrl?: string;
|
|
3
|
+
builderUrl?: string;
|
|
4
|
+
registry?: string;
|
|
5
|
+
kubeconfig?: string;
|
|
6
|
+
anthropicKey?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function configCommand(options: ConfigSetOptions): Promise<void>;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAIA,UAAU,gBAAgB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAa5E"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { loadConfig, saveConfig, CONFIG_PATH } from '../lib/config.js';
|
|
2
|
+
import { log } from '../lib/output.js';
|
|
3
|
+
export async function configCommand(options) {
|
|
4
|
+
const hasUpdates = options.kokoUrl !== undefined ||
|
|
5
|
+
options.builderUrl !== undefined ||
|
|
6
|
+
options.registry !== undefined ||
|
|
7
|
+
options.kubeconfig !== undefined ||
|
|
8
|
+
options.anthropicKey !== undefined;
|
|
9
|
+
if (hasUpdates) {
|
|
10
|
+
await setConfig(options);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
await showConfig();
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
async function showConfig() {
|
|
17
|
+
const config = await loadConfig();
|
|
18
|
+
log.info('Current configuration');
|
|
19
|
+
log.dim(`Config file: ${CONFIG_PATH}`);
|
|
20
|
+
log.info('');
|
|
21
|
+
log.dim(` koko_url: ${config.koko_url}`);
|
|
22
|
+
log.dim(` builder_url: ${config.builder_url}`);
|
|
23
|
+
log.dim(` registry: ${config.registry}`);
|
|
24
|
+
log.dim(` kubeconfig: ${config.kubeconfig}`);
|
|
25
|
+
log.dim(` anthropic_key: ${config.anthropic_api_key ? '***configured***' : '(not set)'}`);
|
|
26
|
+
}
|
|
27
|
+
async function setConfig(options) {
|
|
28
|
+
const config = await loadConfig();
|
|
29
|
+
const newConfig = {
|
|
30
|
+
...config,
|
|
31
|
+
...(options.kokoUrl && { koko_url: options.kokoUrl }),
|
|
32
|
+
...(options.builderUrl && { builder_url: options.builderUrl }),
|
|
33
|
+
...(options.registry && { registry: options.registry }),
|
|
34
|
+
...(options.kubeconfig && { kubeconfig: options.kubeconfig }),
|
|
35
|
+
...(options.anthropicKey && { anthropic_api_key: options.anthropicKey }),
|
|
36
|
+
};
|
|
37
|
+
await saveConfig(newConfig);
|
|
38
|
+
log.success('Configuration updated');
|
|
39
|
+
log.dim(`Saved to ${CONFIG_PATH}`);
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAWtC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAyB;IAC3D,MAAM,UAAU,GACd,OAAO,CAAC,OAAO,KAAK,SAAS;QAC7B,OAAO,CAAC,UAAU,KAAK,SAAS;QAChC,OAAO,CAAC,QAAQ,KAAK,SAAS;QAC9B,OAAO,CAAC,UAAU,KAAK,SAAS;QAChC,OAAO,CAAC,YAAY,KAAK,SAAS,CAAA;IAEpC,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,SAAS,CAAC,OAAO,CAAC,CAAA;IAC1B,CAAC;SAAM,CAAC;QACN,MAAM,UAAU,EAAE,CAAA;IACpB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU;IACvB,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAA;IAEjC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;IACjC,GAAG,CAAC,GAAG,CAAC,gBAAgB,WAAW,EAAE,CAAC,CAAA;IACtC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACZ,GAAG,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC/C,GAAG,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;IAClD,GAAG,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC/C,GAAG,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;IACjD,GAAG,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;AAC7F,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,OAAyB;IAChD,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAA;IAEjC,MAAM,SAAS,GAAW;QACxB,GAAG,MAAM;QACT,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;QACrD,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;QAC9D,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;QACvD,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;QAC7D,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,iBAAiB,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;KACzE,CAAA;IAED,MAAM,UAAU,CAAC,SAAS,CAAC,CAAA;IAC3B,GAAG,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAA;IACpC,GAAG,CAAC,GAAG,CAAC,YAAY,WAAW,EAAE,CAAC,CAAA;AACpC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Environment } from '../types/index.js';
|
|
2
|
+
interface DeployOptions {
|
|
3
|
+
branch?: string;
|
|
4
|
+
watch?: boolean;
|
|
5
|
+
env?: Environment;
|
|
6
|
+
prod?: boolean;
|
|
7
|
+
sandbox?: boolean;
|
|
8
|
+
uat?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function deployCommand(options: DeployOptions): Promise<void>;
|
|
11
|
+
export declare function listBuildsCommand(options: {
|
|
12
|
+
service?: string;
|
|
13
|
+
limit?: number;
|
|
14
|
+
}): Promise<void>;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=deploy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAsB,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAExE,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,GAAG,CAAC,EAAE,WAAW,CAAA;IACjB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,GAAG,CAAC,EAAE,OAAO,CAAA;CACd;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAuHzE;AA8DD,wBAAsB,iBAAiB,CAAC,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCpG"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { parse } from 'yaml';
|
|
4
|
+
import { loadLinkedService } from '../lib/config.js';
|
|
5
|
+
import { BuilderClient } from '../lib/builder.js';
|
|
6
|
+
import { KokoClient } from '../lib/api.js';
|
|
7
|
+
import { log, spinner, formatTable } from '../lib/output.js';
|
|
8
|
+
export async function deployCommand(options) {
|
|
9
|
+
// Check if linked
|
|
10
|
+
const linkedService = await loadLinkedService();
|
|
11
|
+
let serviceId;
|
|
12
|
+
let serviceName;
|
|
13
|
+
if (linkedService) {
|
|
14
|
+
serviceId = linkedService.serviceId;
|
|
15
|
+
serviceName = linkedService.serviceName;
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
// Try to get from catalog-info.yaml
|
|
19
|
+
try {
|
|
20
|
+
const catalogPath = join(process.cwd(), 'catalog-info.yaml');
|
|
21
|
+
const content = await readFile(catalogPath, 'utf-8');
|
|
22
|
+
const catalogInfo = parse(content);
|
|
23
|
+
serviceName = catalogInfo.metadata.name;
|
|
24
|
+
serviceId = serviceName; // Use name as ID for lookup
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
log.error('Not linked to iec-builder');
|
|
28
|
+
log.dim('Run "iec link" first to connect this service');
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
const branch = options.branch || linkedService?.branch || 'main';
|
|
33
|
+
// Resolve environment from flags (shorthand flags take precedence)
|
|
34
|
+
let environment = 'sandbox'; // default
|
|
35
|
+
if (options.prod) {
|
|
36
|
+
environment = 'prod';
|
|
37
|
+
}
|
|
38
|
+
else if (options.sandbox) {
|
|
39
|
+
environment = 'sandbox';
|
|
40
|
+
}
|
|
41
|
+
else if (options.uat) {
|
|
42
|
+
environment = 'uat';
|
|
43
|
+
}
|
|
44
|
+
else if (options.env) {
|
|
45
|
+
environment = options.env;
|
|
46
|
+
}
|
|
47
|
+
// Check if service is registered in Koko (required before deploy)
|
|
48
|
+
const spCheck = spinner('Checking service registration');
|
|
49
|
+
try {
|
|
50
|
+
const koko = await KokoClient.create();
|
|
51
|
+
const kokoResult = await koko.getService(serviceName);
|
|
52
|
+
if (!kokoResult.success || !kokoResult.data) {
|
|
53
|
+
spCheck.stop(false);
|
|
54
|
+
log.error(`Service "${serviceName}" is not registered in Koko`);
|
|
55
|
+
log.info('');
|
|
56
|
+
log.info('You must register the service before deploying:');
|
|
57
|
+
log.dim(' iec register');
|
|
58
|
+
log.info('');
|
|
59
|
+
log.info('Then link it to the builder:');
|
|
60
|
+
log.dim(' iec link');
|
|
61
|
+
log.info('');
|
|
62
|
+
log.info('Finally, deploy:');
|
|
63
|
+
log.dim(' iec deploy');
|
|
64
|
+
process.exit(1);
|
|
65
|
+
}
|
|
66
|
+
spCheck.stop(true);
|
|
67
|
+
log.dim(` Registered in Koko: ${kokoResult.data.id}`);
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
spCheck.stop(false);
|
|
71
|
+
if (error instanceof Error) {
|
|
72
|
+
log.warning(`Could not verify Koko registration: ${error.message}`);
|
|
73
|
+
log.dim('Proceeding with deploy (Koko may be unavailable)');
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
log.info(`Deploying ${serviceName}`);
|
|
77
|
+
log.dim(` Branch: ${branch}`);
|
|
78
|
+
log.dim(` Environment: ${environment}`);
|
|
79
|
+
const sp = spinner('Triggering build');
|
|
80
|
+
try {
|
|
81
|
+
const builder = await BuilderClient.create();
|
|
82
|
+
// Trigger build
|
|
83
|
+
const result = await builder.triggerBuild({
|
|
84
|
+
serviceId,
|
|
85
|
+
branch,
|
|
86
|
+
environment,
|
|
87
|
+
});
|
|
88
|
+
if (!result.success || !result.data) {
|
|
89
|
+
sp.stop(false);
|
|
90
|
+
log.error(`Failed to trigger build: ${result.error?.message || 'Unknown error'}`);
|
|
91
|
+
process.exit(1);
|
|
92
|
+
}
|
|
93
|
+
sp.stop(true);
|
|
94
|
+
const { buildId, message } = result.data;
|
|
95
|
+
log.success(`Build triggered: ${buildId.substring(0, 8)}`);
|
|
96
|
+
log.dim(` ${message}`);
|
|
97
|
+
if (options.watch) {
|
|
98
|
+
log.info('');
|
|
99
|
+
log.info('Watching build progress...');
|
|
100
|
+
log.dim('Press Ctrl+C to stop watching');
|
|
101
|
+
log.info('');
|
|
102
|
+
await watchBuild(builder, buildId);
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
log.info('');
|
|
106
|
+
log.info('To watch progress:');
|
|
107
|
+
log.dim(` iec status --build ${buildId}`);
|
|
108
|
+
log.info('');
|
|
109
|
+
log.info('To view logs:');
|
|
110
|
+
log.dim(` iec logs --build ${buildId}`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
sp.stop(false);
|
|
115
|
+
if (error instanceof Error) {
|
|
116
|
+
log.error(`Deploy failed: ${error.message}`);
|
|
117
|
+
}
|
|
118
|
+
process.exit(1);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
async function watchBuild(builder, buildId) {
|
|
122
|
+
const terminalStates = ['completed', 'failed'];
|
|
123
|
+
let lastStatus = '';
|
|
124
|
+
while (true) {
|
|
125
|
+
const result = await builder.getBuild(buildId);
|
|
126
|
+
if (!result.success || !result.data) {
|
|
127
|
+
log.error('Failed to get build status');
|
|
128
|
+
process.exit(1);
|
|
129
|
+
}
|
|
130
|
+
const build = result.data;
|
|
131
|
+
if (build.status !== lastStatus) {
|
|
132
|
+
lastStatus = build.status;
|
|
133
|
+
printBuildStatus(build);
|
|
134
|
+
}
|
|
135
|
+
if (terminalStates.includes(build.status)) {
|
|
136
|
+
log.info('');
|
|
137
|
+
if (build.status === 'completed') {
|
|
138
|
+
log.success('Build completed successfully!');
|
|
139
|
+
if (build.imageTag) {
|
|
140
|
+
log.dim(` Image: ${build.imageTag}`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
log.error('Build failed');
|
|
145
|
+
if (build.error) {
|
|
146
|
+
log.dim(` Error: ${build.error}`);
|
|
147
|
+
}
|
|
148
|
+
log.info('');
|
|
149
|
+
log.info('View full logs:');
|
|
150
|
+
log.dim(` iec logs --build ${buildId}`);
|
|
151
|
+
process.exit(1);
|
|
152
|
+
}
|
|
153
|
+
break;
|
|
154
|
+
}
|
|
155
|
+
// Poll every 2 seconds
|
|
156
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
function printBuildStatus(build) {
|
|
160
|
+
const statusEmoji = {
|
|
161
|
+
queued: '\u23f3', // hourglass
|
|
162
|
+
cloning: '\ud83d\udce5', // inbox
|
|
163
|
+
building: '\ud83d\udd28', // hammer
|
|
164
|
+
pushing: '\ud83d\udce4', // outbox
|
|
165
|
+
deploying: '\ud83d\ude80', // rocket
|
|
166
|
+
completed: '\u2705', // check
|
|
167
|
+
failed: '\u274c', // x
|
|
168
|
+
};
|
|
169
|
+
const emoji = statusEmoji[build.status] || '\u2022';
|
|
170
|
+
log.info(`${emoji} ${build.status}`);
|
|
171
|
+
}
|
|
172
|
+
// List recent builds
|
|
173
|
+
export async function listBuildsCommand(options) {
|
|
174
|
+
const builder = await BuilderClient.create();
|
|
175
|
+
let serviceId = options.service;
|
|
176
|
+
// Try to get service from linked config
|
|
177
|
+
if (!serviceId) {
|
|
178
|
+
const linkedService = await loadLinkedService();
|
|
179
|
+
if (linkedService) {
|
|
180
|
+
serviceId = linkedService.serviceId;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
const sp = spinner('Fetching builds');
|
|
184
|
+
const result = await builder.listBuilds(serviceId);
|
|
185
|
+
sp.stop(true);
|
|
186
|
+
if (!result.success || !result.data) {
|
|
187
|
+
log.error(`Failed to list builds: ${result.error?.message || 'Unknown error'}`);
|
|
188
|
+
process.exit(1);
|
|
189
|
+
}
|
|
190
|
+
const builds = result.data.slice(0, options.limit || 10);
|
|
191
|
+
if (builds.length === 0) {
|
|
192
|
+
log.warning('No builds found');
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
const rows = builds.map(b => [
|
|
196
|
+
b.id.substring(0, 8),
|
|
197
|
+
b.status,
|
|
198
|
+
b.branch,
|
|
199
|
+
b.commitSha?.substring(0, 7) || '-',
|
|
200
|
+
formatTime(b.createdAt),
|
|
201
|
+
]);
|
|
202
|
+
console.log(formatTable(['BUILD', 'STATUS', 'BRANCH', 'COMMIT', 'CREATED'], rows));
|
|
203
|
+
}
|
|
204
|
+
function formatTime(isoString) {
|
|
205
|
+
const date = new Date(isoString);
|
|
206
|
+
const now = new Date();
|
|
207
|
+
const diffMs = now.getTime() - date.getTime();
|
|
208
|
+
const diffMins = Math.floor(diffMs / 60000);
|
|
209
|
+
if (diffMins < 1)
|
|
210
|
+
return 'just now';
|
|
211
|
+
if (diffMins < 60)
|
|
212
|
+
return `${diffMins}m ago`;
|
|
213
|
+
const diffHours = Math.floor(diffMins / 60);
|
|
214
|
+
if (diffHours < 24)
|
|
215
|
+
return `${diffHours}h ago`;
|
|
216
|
+
const diffDays = Math.floor(diffHours / 24);
|
|
217
|
+
return `${diffDays}d ago`;
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=deploy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Environment } from '../types/index.js';
|
|
2
|
+
interface DestroyOptions {
|
|
3
|
+
namespace?: string;
|
|
4
|
+
env?: Environment;
|
|
5
|
+
prod?: boolean;
|
|
6
|
+
sandbox?: boolean;
|
|
7
|
+
uat?: boolean;
|
|
8
|
+
force?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function destroyCommand(options: DestroyOptions): Promise<void>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=destroy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"destroy.d.ts","sourceRoot":"","sources":["../../src/commands/destroy.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD,UAAU,cAAc;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,GAAG,CAAC,EAAE,WAAW,CAAA;IACjB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA6D3E"}
|