@insureco/cli 0.1.1 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/git.d.ts +30 -0
- package/dist/commands/git.d.ts.map +1 -0
- package/dist/commands/git.js +300 -0
- package/dist/commands/git.js.map +1 -0
- package/dist/commands/oauth.d.ts +33 -0
- package/dist/commands/oauth.d.ts.map +1 -0
- package/dist/commands/oauth.js +181 -0
- package/dist/commands/oauth.js.map +1 -0
- package/dist/commands/user.d.ts +13 -0
- package/dist/commands/user.d.ts.map +1 -0
- package/dist/commands/user.js +96 -0
- package/dist/commands/user.js.map +1 -0
- package/dist/index.js +142 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/bio.d.ts +13 -0
- package/dist/lib/bio.d.ts.map +1 -0
- package/dist/lib/bio.js +63 -0
- package/dist/lib/bio.js.map +1 -0
- package/dist/lib/builder.d.ts +17 -1
- package/dist/lib/builder.d.ts.map +1 -1
- package/dist/lib/builder.js +53 -2
- package/dist/lib/builder.js.map +1 -1
- package/dist/lib/config.js +1 -1
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/forgejo.d.ts +149 -0
- package/dist/lib/forgejo.d.ts.map +1 -0
- package/dist/lib/forgejo.js +137 -0
- package/dist/lib/forgejo.js.map +1 -0
- package/dist/templates/api/.env.example +15 -0
- package/dist/templates/api/Dockerfile +45 -0
- package/dist/templates/api/README.md +85 -0
- package/dist/templates/api/catalog-info.yaml +51 -0
- package/dist/templates/api/helm/{{name}}/Chart.yaml +9 -0
- package/dist/templates/api/helm/{{name}}/templates/deployment.yaml +68 -0
- package/dist/templates/api/helm/{{name}}/templates/service.yaml +17 -0
- package/dist/templates/api/helm/{{name}}/values.yaml +55 -0
- package/dist/templates/api/package.json +33 -0
- package/dist/templates/api/src/index.ts +61 -0
- package/dist/templates/api/src/routes/example.ts +162 -0
- package/dist/templates/api/tsconfig.json +18 -0
- package/dist/templates/crosspod/README.md +87 -0
- package/dist/templates/crosspod/service-a/Dockerfile +27 -0
- package/dist/templates/crosspod/service-a/catalog-info.yaml +54 -0
- package/dist/templates/crosspod/service-a/helm/{{name}}-service-a/Chart.yaml +6 -0
- package/dist/templates/crosspod/service-a/helm/{{name}}-service-a/values.yaml +35 -0
- package/dist/templates/crosspod/service-a/package.json +29 -0
- package/dist/templates/crosspod/service-a/src/index.ts +89 -0
- package/dist/templates/crosspod/service-a/tsconfig.json +14 -0
- package/dist/templates/crosspod/service-b/Dockerfile +27 -0
- package/dist/templates/crosspod/service-b/catalog-info.yaml +27 -0
- package/dist/templates/crosspod/service-b/helm/{{name}}-service-b/Chart.yaml +6 -0
- package/dist/templates/crosspod/service-b/helm/{{name}}-service-b/values.yaml +38 -0
- package/dist/templates/crosspod/service-b/package.json +26 -0
- package/dist/templates/crosspod/service-b/src/index.ts +143 -0
- package/dist/templates/crosspod/service-b/tsconfig.json +14 -0
- package/dist/templates/nextjs/.env.example +11 -0
- package/dist/templates/nextjs/Dockerfile +51 -0
- package/dist/templates/nextjs/README.md +87 -0
- package/dist/templates/nextjs/catalog-info.yaml +16 -0
- package/dist/templates/nextjs/helm/{{name}}/Chart.yaml +9 -0
- package/dist/templates/nextjs/helm/{{name}}/templates/deployment.yaml +68 -0
- package/dist/templates/nextjs/helm/{{name}}/templates/service.yaml +17 -0
- package/dist/templates/nextjs/helm/{{name}}/values.yaml +51 -0
- package/dist/templates/nextjs/next.config.js +23 -0
- package/dist/templates/nextjs/package.json +29 -0
- package/dist/templates/nextjs/public/.gitkeep +0 -0
- package/dist/templates/nextjs/src/app/api/example/route.ts +63 -0
- package/dist/templates/nextjs/src/app/api/health/route.ts +10 -0
- package/dist/templates/nextjs/src/app/layout.tsx +18 -0
- package/dist/templates/nextjs/src/app/page.tsx +49 -0
- package/dist/templates/nextjs/tsconfig.json +26 -0
- package/dist/templates/worker/.env.example +13 -0
- package/dist/templates/worker/Dockerfile +26 -0
- package/dist/templates/worker/README.md +106 -0
- package/dist/templates/worker/catalog-info.yaml +19 -0
- package/dist/templates/worker/helm/{{name}}/Chart.yaml +9 -0
- package/dist/templates/worker/helm/{{name}}/templates/deployment.yaml +64 -0
- package/dist/templates/worker/helm/{{name}}/values.yaml +55 -0
- package/dist/templates/worker/package.json +26 -0
- package/dist/templates/worker/src/index.ts +185 -0
- package/dist/templates/worker/tsconfig.json +14 -0
- package/dist/types/index.d.ts +77 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
interface CreateOptions {
|
|
2
|
+
description?: string;
|
|
3
|
+
private?: boolean;
|
|
4
|
+
webhook?: boolean;
|
|
5
|
+
}
|
|
6
|
+
interface ListOptions {
|
|
7
|
+
json?: boolean;
|
|
8
|
+
}
|
|
9
|
+
interface DeleteOptions {
|
|
10
|
+
yes?: boolean;
|
|
11
|
+
}
|
|
12
|
+
interface CloneOptions {
|
|
13
|
+
dir?: string;
|
|
14
|
+
}
|
|
15
|
+
interface SSHKeyOptions {
|
|
16
|
+
file?: string;
|
|
17
|
+
title?: string;
|
|
18
|
+
}
|
|
19
|
+
export declare function loginCommand(token?: string): Promise<void>;
|
|
20
|
+
export declare function logoutCommand(): Promise<void>;
|
|
21
|
+
export declare function listReposCommand(options: ListOptions): Promise<void>;
|
|
22
|
+
export declare function createRepoCommand(name: string, options: CreateOptions): Promise<void>;
|
|
23
|
+
export declare function deleteRepoCommand(name: string, options: DeleteOptions): Promise<void>;
|
|
24
|
+
export declare function getRepoCommand(name: string): Promise<void>;
|
|
25
|
+
export declare function cloneRepoCommand(name: string, options: CloneOptions): Promise<void>;
|
|
26
|
+
export declare function sshKeyCommand(options: SSHKeyOptions): Promise<void>;
|
|
27
|
+
export declare function listSSHKeysCommand(): Promise<void>;
|
|
28
|
+
export declare function addWebhookCommand(repoName: string): Promise<void>;
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=git.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/commands/git.ts"],"names":[],"mappings":"AASA,UAAU,aAAa;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,UAAU,aAAa;IACrB,GAAG,CAAC,EAAE,OAAO,CAAA;CACd;AAED,UAAU,YAAY;IACpB,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAsBD,wBAAsB,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBhE;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAQnD;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B1E;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA6D3F;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAe3F;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BhE;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBzF;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAoDzE;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAyBxD;AAED,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCvE"}
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
import { homedir } from 'node:os';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
4
|
+
import { execSync } from 'node:child_process';
|
|
5
|
+
import { ForgejoClient, FORGEJO_URL, FORGEJO_ORG } from '../lib/forgejo.js';
|
|
6
|
+
import { BuilderClient } from '../lib/builder.js';
|
|
7
|
+
import { loadConfig } from '../lib/config.js';
|
|
8
|
+
import { log, formatTable } from '../lib/output.js';
|
|
9
|
+
// Get the builder webhook URL
|
|
10
|
+
async function getWebhookUrl() {
|
|
11
|
+
const config = await loadConfig();
|
|
12
|
+
return `${config.builder_url}/webhooks/forgejo`;
|
|
13
|
+
}
|
|
14
|
+
// Get the builder webhook secret for a service
|
|
15
|
+
async function getWebhookSecret(serviceName) {
|
|
16
|
+
try {
|
|
17
|
+
const builderClient = await BuilderClient.create();
|
|
18
|
+
const result = await builderClient.getService(serviceName);
|
|
19
|
+
if (result.success && result.data) {
|
|
20
|
+
return result.data.webhookSecret;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
// Service may not be registered yet
|
|
25
|
+
}
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
export async function loginCommand(token) {
|
|
29
|
+
if (!token) {
|
|
30
|
+
log.info(`To authenticate with ${FORGEJO_URL}:`);
|
|
31
|
+
log.info('');
|
|
32
|
+
log.info('1. Go to https://git.insureco.io/user/settings/applications');
|
|
33
|
+
log.info('2. Generate a new access token with appropriate permissions');
|
|
34
|
+
log.info('3. Run: iec git login <your-token>');
|
|
35
|
+
log.info('');
|
|
36
|
+
log.dim('Or sign in with bio-id at https://git.insureco.io and use the web UI.');
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
// Validate the token
|
|
40
|
+
const client = new ForgejoClient(FORGEJO_URL, token);
|
|
41
|
+
const result = await client.getCurrentUser();
|
|
42
|
+
if (!result.success) {
|
|
43
|
+
log.error(`Invalid token: ${result.error?.message}`);
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
ForgejoClient.saveCredentials(FORGEJO_URL, token);
|
|
47
|
+
log.success(`Authenticated as ${result.data?.login}`);
|
|
48
|
+
}
|
|
49
|
+
export async function logoutCommand() {
|
|
50
|
+
if (!ForgejoClient.hasCredentials()) {
|
|
51
|
+
log.warning('Not logged in to Forgejo');
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
ForgejoClient.clearCredentials();
|
|
55
|
+
log.success('Logged out of Forgejo');
|
|
56
|
+
}
|
|
57
|
+
export async function listReposCommand(options) {
|
|
58
|
+
const client = await ForgejoClient.create();
|
|
59
|
+
const result = await client.listRepos();
|
|
60
|
+
if (!result.success) {
|
|
61
|
+
log.error(`Failed to list repositories: ${result.error?.message}`);
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
const repos = result.data || [];
|
|
65
|
+
if (options.json) {
|
|
66
|
+
console.log(JSON.stringify(repos, null, 2));
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
if (repos.length === 0) {
|
|
70
|
+
log.warning('No repositories found');
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const rows = repos.map((r) => [
|
|
74
|
+
r.name,
|
|
75
|
+
r.description || '-',
|
|
76
|
+
r.private ? 'private' : 'public',
|
|
77
|
+
r.default_branch,
|
|
78
|
+
new Date(r.updated_at).toLocaleDateString(),
|
|
79
|
+
]);
|
|
80
|
+
console.log(formatTable(['NAME', 'DESCRIPTION', 'VISIBILITY', 'BRANCH', 'UPDATED'], rows));
|
|
81
|
+
}
|
|
82
|
+
export async function createRepoCommand(name, options) {
|
|
83
|
+
const client = await ForgejoClient.create();
|
|
84
|
+
log.info(`Creating repository ${FORGEJO_ORG}/${name}...`);
|
|
85
|
+
const result = await client.createRepo({
|
|
86
|
+
name,
|
|
87
|
+
description: options.description,
|
|
88
|
+
private: options.private ?? true,
|
|
89
|
+
auto_init: true,
|
|
90
|
+
default_branch: 'main',
|
|
91
|
+
});
|
|
92
|
+
if (!result.success) {
|
|
93
|
+
log.error(`Failed to create repository: ${result.error?.message}`);
|
|
94
|
+
process.exit(1);
|
|
95
|
+
}
|
|
96
|
+
const repo = result.data;
|
|
97
|
+
log.success(`Repository created: ${repo.full_name}`);
|
|
98
|
+
log.info('');
|
|
99
|
+
log.dim(` URL: ${repo.html_url}`);
|
|
100
|
+
log.dim(` SSH: ${repo.ssh_url}`);
|
|
101
|
+
log.dim(` Clone: ${repo.clone_url}`);
|
|
102
|
+
// Add auto-deploy webhook if requested
|
|
103
|
+
if (options.webhook !== false) {
|
|
104
|
+
log.info('');
|
|
105
|
+
log.info('Setting up auto-deploy webhook...');
|
|
106
|
+
try {
|
|
107
|
+
const webhookUrl = await getWebhookUrl();
|
|
108
|
+
const webhookSecret = await getWebhookSecret(name);
|
|
109
|
+
const webhookResult = await client.createWebhook(name, {
|
|
110
|
+
type: 'forgejo',
|
|
111
|
+
config: {
|
|
112
|
+
url: webhookUrl,
|
|
113
|
+
content_type: 'json',
|
|
114
|
+
secret: webhookSecret || undefined,
|
|
115
|
+
},
|
|
116
|
+
events: ['push'],
|
|
117
|
+
active: true,
|
|
118
|
+
});
|
|
119
|
+
if (webhookResult.success) {
|
|
120
|
+
log.success('Auto-deploy webhook configured');
|
|
121
|
+
log.dim(` Webhook URL: ${webhookUrl}`);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
log.warning(`Failed to add webhook: ${webhookResult.error?.message}`);
|
|
125
|
+
log.dim('You can add it manually later via: iec git webhook <repo>');
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
log.warning('Failed to configure webhook (builder may not be available)');
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
log.info('');
|
|
133
|
+
log.info('To clone and start working:');
|
|
134
|
+
log.info(` git clone ${repo.ssh_url}`);
|
|
135
|
+
log.info(` cd ${name}`);
|
|
136
|
+
}
|
|
137
|
+
export async function deleteRepoCommand(name, options) {
|
|
138
|
+
if (!options.yes) {
|
|
139
|
+
log.error(`Use --yes to confirm deletion of ${FORGEJO_ORG}/${name}`);
|
|
140
|
+
process.exit(1);
|
|
141
|
+
}
|
|
142
|
+
const client = await ForgejoClient.create();
|
|
143
|
+
const result = await client.deleteRepo(name);
|
|
144
|
+
if (!result.success) {
|
|
145
|
+
log.error(`Failed to delete repository: ${result.error?.message}`);
|
|
146
|
+
process.exit(1);
|
|
147
|
+
}
|
|
148
|
+
log.success(`Repository ${FORGEJO_ORG}/${name} deleted`);
|
|
149
|
+
}
|
|
150
|
+
export async function getRepoCommand(name) {
|
|
151
|
+
const client = await ForgejoClient.create();
|
|
152
|
+
const result = await client.getRepo(name);
|
|
153
|
+
if (!result.success) {
|
|
154
|
+
log.error(`Failed to get repository: ${result.error?.message}`);
|
|
155
|
+
process.exit(1);
|
|
156
|
+
}
|
|
157
|
+
const repo = result.data;
|
|
158
|
+
log.info(`Repository: ${repo.full_name}`);
|
|
159
|
+
log.info('');
|
|
160
|
+
log.dim(` Description: ${repo.description || '(none)'}`);
|
|
161
|
+
log.dim(` Visibility: ${repo.private ? 'private' : 'public'}`);
|
|
162
|
+
log.dim(` Branch: ${repo.default_branch}`);
|
|
163
|
+
log.dim(` URL: ${repo.html_url}`);
|
|
164
|
+
log.dim(` SSH: ${repo.ssh_url}`);
|
|
165
|
+
log.dim(` Clone: ${repo.clone_url}`);
|
|
166
|
+
log.info('');
|
|
167
|
+
log.dim(` Created: ${new Date(repo.created_at).toLocaleString()}`);
|
|
168
|
+
log.dim(` Updated: ${new Date(repo.updated_at).toLocaleString()}`);
|
|
169
|
+
// List webhooks
|
|
170
|
+
const webhooksResult = await client.listWebhooks(name);
|
|
171
|
+
if (webhooksResult.success && webhooksResult.data && webhooksResult.data.length > 0) {
|
|
172
|
+
log.info('');
|
|
173
|
+
log.dim(' Webhooks:');
|
|
174
|
+
for (const webhook of webhooksResult.data) {
|
|
175
|
+
log.dim(` - ${webhook.url} (${webhook.active ? 'active' : 'inactive'})`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
export async function cloneRepoCommand(name, options) {
|
|
180
|
+
const client = await ForgejoClient.create();
|
|
181
|
+
const result = await client.getRepo(name);
|
|
182
|
+
if (!result.success) {
|
|
183
|
+
log.error(`Repository not found: ${result.error?.message}`);
|
|
184
|
+
process.exit(1);
|
|
185
|
+
}
|
|
186
|
+
const repo = result.data;
|
|
187
|
+
const targetDir = options.dir || name;
|
|
188
|
+
log.info(`Cloning ${repo.full_name} to ${targetDir}...`);
|
|
189
|
+
try {
|
|
190
|
+
execSync(`git clone ${repo.ssh_url} ${targetDir}`, { stdio: 'inherit' });
|
|
191
|
+
log.success(`Cloned to ${targetDir}`);
|
|
192
|
+
}
|
|
193
|
+
catch {
|
|
194
|
+
log.error('Clone failed. Make sure your SSH key is configured.');
|
|
195
|
+
log.dim('Run: iec git ssh-key to add your key');
|
|
196
|
+
process.exit(1);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
export async function sshKeyCommand(options) {
|
|
200
|
+
const client = await ForgejoClient.create();
|
|
201
|
+
// Find SSH key
|
|
202
|
+
const defaultKeyPath = join(homedir(), '.ssh', 'id_ed25519.pub');
|
|
203
|
+
const rsaKeyPath = join(homedir(), '.ssh', 'id_rsa.pub');
|
|
204
|
+
const keyPath = options.file || (existsSync(defaultKeyPath) ? defaultKeyPath : rsaKeyPath);
|
|
205
|
+
if (!existsSync(keyPath)) {
|
|
206
|
+
log.error(`SSH public key not found at ${keyPath}`);
|
|
207
|
+
log.info('');
|
|
208
|
+
log.info('Generate one with:');
|
|
209
|
+
log.info(' ssh-keygen -t ed25519 -C "your-email@example.com"');
|
|
210
|
+
log.info('');
|
|
211
|
+
log.info('Or specify a different key:');
|
|
212
|
+
log.info(' iec git ssh-key --file ~/.ssh/my_key.pub');
|
|
213
|
+
process.exit(1);
|
|
214
|
+
}
|
|
215
|
+
const publicKey = readFileSync(keyPath, 'utf-8').trim();
|
|
216
|
+
const title = options.title || `iec-cli-${new Date().toISOString().split('T')[0]}`;
|
|
217
|
+
// Check if key already exists
|
|
218
|
+
const existingKeys = await client.listSSHKeys();
|
|
219
|
+
if (existingKeys.success && existingKeys.data) {
|
|
220
|
+
const keyFingerprint = publicKey.split(' ')[1];
|
|
221
|
+
const existing = existingKeys.data.find((k) => k.key.includes(keyFingerprint));
|
|
222
|
+
if (existing) {
|
|
223
|
+
log.warning(`SSH key already registered as "${existing.title}"`);
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
const result = await client.addSSHKey(title, publicKey);
|
|
228
|
+
if (!result.success) {
|
|
229
|
+
log.error(`Failed to add SSH key: ${result.error?.message}`);
|
|
230
|
+
process.exit(1);
|
|
231
|
+
}
|
|
232
|
+
log.success(`SSH key added: ${title}`);
|
|
233
|
+
log.info('');
|
|
234
|
+
log.info('You can now clone repositories with:');
|
|
235
|
+
log.info(' git clone git@git.insureco.io:insureco/<repo>.git');
|
|
236
|
+
log.info('');
|
|
237
|
+
log.dim('Note: SSH uses port 2222. Add this to ~/.ssh/config:');
|
|
238
|
+
log.dim('');
|
|
239
|
+
log.dim(' Host git.insureco.io');
|
|
240
|
+
log.dim(' HostName git.insureco.io');
|
|
241
|
+
log.dim(' Port 2222');
|
|
242
|
+
log.dim(' User git');
|
|
243
|
+
log.dim(' IdentityFile ~/.ssh/id_ed25519');
|
|
244
|
+
}
|
|
245
|
+
export async function listSSHKeysCommand() {
|
|
246
|
+
const client = await ForgejoClient.create();
|
|
247
|
+
const result = await client.listSSHKeys();
|
|
248
|
+
if (!result.success) {
|
|
249
|
+
log.error(`Failed to list SSH keys: ${result.error?.message}`);
|
|
250
|
+
process.exit(1);
|
|
251
|
+
}
|
|
252
|
+
const keys = result.data || [];
|
|
253
|
+
if (keys.length === 0) {
|
|
254
|
+
log.warning('No SSH keys found');
|
|
255
|
+
log.info('Add one with: iec git ssh-key');
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
const rows = keys.map((k) => [
|
|
259
|
+
k.id.toString(),
|
|
260
|
+
k.title,
|
|
261
|
+
k.key.substring(0, 40) + '...',
|
|
262
|
+
new Date(k.created_at).toLocaleDateString(),
|
|
263
|
+
]);
|
|
264
|
+
console.log(formatTable(['ID', 'TITLE', 'KEY', 'CREATED'], rows));
|
|
265
|
+
}
|
|
266
|
+
export async function addWebhookCommand(repoName) {
|
|
267
|
+
const client = await ForgejoClient.create();
|
|
268
|
+
// Check repo exists
|
|
269
|
+
const repoResult = await client.getRepo(repoName);
|
|
270
|
+
if (!repoResult.success) {
|
|
271
|
+
log.error(`Repository not found: ${repoResult.error?.message}`);
|
|
272
|
+
process.exit(1);
|
|
273
|
+
}
|
|
274
|
+
try {
|
|
275
|
+
const webhookUrl = await getWebhookUrl();
|
|
276
|
+
const webhookSecret = await getWebhookSecret(repoName);
|
|
277
|
+
const result = await client.createWebhook(repoName, {
|
|
278
|
+
type: 'forgejo',
|
|
279
|
+
config: {
|
|
280
|
+
url: webhookUrl,
|
|
281
|
+
content_type: 'json',
|
|
282
|
+
secret: webhookSecret || undefined,
|
|
283
|
+
},
|
|
284
|
+
events: ['push'],
|
|
285
|
+
active: true,
|
|
286
|
+
});
|
|
287
|
+
if (!result.success) {
|
|
288
|
+
log.error(`Failed to add webhook: ${result.error?.message}`);
|
|
289
|
+
process.exit(1);
|
|
290
|
+
}
|
|
291
|
+
log.success('Auto-deploy webhook configured');
|
|
292
|
+
log.dim(` Webhook URL: ${webhookUrl}`);
|
|
293
|
+
log.dim(` Events: push`);
|
|
294
|
+
}
|
|
295
|
+
catch (error) {
|
|
296
|
+
log.error('Failed to configure webhook');
|
|
297
|
+
process.exit(1);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
//# sourceMappingURL=git.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/commands/git.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
interface CreateOptions {
|
|
2
|
+
description?: string;
|
|
3
|
+
scopes?: string;
|
|
4
|
+
grants?: string;
|
|
5
|
+
confidential?: boolean;
|
|
6
|
+
accessTtl?: number;
|
|
7
|
+
refreshTtl?: number;
|
|
8
|
+
}
|
|
9
|
+
interface UpdateOptions {
|
|
10
|
+
name?: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
active?: boolean;
|
|
13
|
+
scopes?: string;
|
|
14
|
+
grants?: string;
|
|
15
|
+
accessTtl?: number;
|
|
16
|
+
refreshTtl?: number;
|
|
17
|
+
}
|
|
18
|
+
export declare function listOAuthClientsCommand(options: {
|
|
19
|
+
json?: boolean;
|
|
20
|
+
}): Promise<void>;
|
|
21
|
+
export declare function getOAuthClientCommand(clientId: string): Promise<void>;
|
|
22
|
+
export declare function createOAuthClientCommand(name: string, redirectUris: string[], options: CreateOptions): Promise<void>;
|
|
23
|
+
export declare function updateOAuthClientCommand(clientId: string, options: UpdateOptions): Promise<void>;
|
|
24
|
+
export declare function deleteOAuthClientCommand(clientId: string, options: {
|
|
25
|
+
yes?: boolean;
|
|
26
|
+
}): Promise<void>;
|
|
27
|
+
export declare function addRedirectUriCommand(clientId: string, uri: string): Promise<void>;
|
|
28
|
+
export declare function removeRedirectUriCommand(clientId: string, uri: string): Promise<void>;
|
|
29
|
+
export declare function regenerateSecretCommand(clientId: string, options: {
|
|
30
|
+
yes?: boolean;
|
|
31
|
+
}): Promise<void>;
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=oauth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/commands/oauth.ts"],"names":[],"mappings":"AAGA,UAAU,aAAa;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BxF;AAED,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmC3E;AAED,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAwCf;AAED,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBtG;AAED,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAe1G;AAED,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWxF;AAED,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAW3F;AAED,wBAAsB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BzG"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { BuilderClient } from '../lib/builder.js';
|
|
2
|
+
import { log, formatTable } from '../lib/output.js';
|
|
3
|
+
export async function listOAuthClientsCommand(options) {
|
|
4
|
+
const client = await BuilderClient.create();
|
|
5
|
+
const result = await client.listOAuthClients();
|
|
6
|
+
if (!result.success) {
|
|
7
|
+
log.error(`Failed to list OAuth clients: ${result.error?.message}`);
|
|
8
|
+
process.exit(1);
|
|
9
|
+
}
|
|
10
|
+
const clients = result.data || [];
|
|
11
|
+
if (options.json) {
|
|
12
|
+
console.log(JSON.stringify(clients, null, 2));
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
if (clients.length === 0) {
|
|
16
|
+
log.warning('No OAuth clients found');
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const rows = clients.map((c) => [
|
|
20
|
+
c.clientId,
|
|
21
|
+
c.name,
|
|
22
|
+
c.isActive ? 'active' : 'inactive',
|
|
23
|
+
c.redirectUris.length.toString(),
|
|
24
|
+
c.allowedScopes.join(', '),
|
|
25
|
+
new Date(c.createdAt).toLocaleDateString(),
|
|
26
|
+
]);
|
|
27
|
+
console.log(formatTable(['CLIENT ID', 'NAME', 'STATUS', 'URIs', 'SCOPES', 'CREATED'], rows));
|
|
28
|
+
}
|
|
29
|
+
export async function getOAuthClientCommand(clientId) {
|
|
30
|
+
const client = await BuilderClient.create();
|
|
31
|
+
const result = await client.getOAuthClient(clientId);
|
|
32
|
+
if (!result.success) {
|
|
33
|
+
log.error(`Failed to get OAuth client: ${result.error?.message}`);
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
const oauthClient = result.data;
|
|
37
|
+
if (!oauthClient) {
|
|
38
|
+
log.error(`OAuth client "${clientId}" not found`);
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
log.info(`OAuth Client: ${oauthClient.name}`);
|
|
42
|
+
log.info('');
|
|
43
|
+
log.dim(` Client ID: ${oauthClient.clientId}`);
|
|
44
|
+
log.dim(` Status: ${oauthClient.isActive ? 'active' : 'inactive'}`);
|
|
45
|
+
log.dim(` Confidential: ${oauthClient.isConfidential ?? true}`);
|
|
46
|
+
log.dim(` Description: ${oauthClient.description || '(none)'}`);
|
|
47
|
+
log.info('');
|
|
48
|
+
log.dim(` Redirect URIs:`);
|
|
49
|
+
for (const uri of oauthClient.redirectUris) {
|
|
50
|
+
log.dim(` - ${uri}`);
|
|
51
|
+
}
|
|
52
|
+
log.info('');
|
|
53
|
+
log.dim(` Allowed Scopes: ${oauthClient.allowedScopes.join(', ')}`);
|
|
54
|
+
log.dim(` Grant Types: ${oauthClient.allowedGrantTypes?.join(', ') || 'authorization_code, refresh_token'}`);
|
|
55
|
+
log.info('');
|
|
56
|
+
log.dim(` Access Token TTL: ${oauthClient.accessTokenTtl || 3600}s`);
|
|
57
|
+
log.dim(` Refresh Token TTL: ${oauthClient.refreshTokenTtl || 604800}s`);
|
|
58
|
+
log.info('');
|
|
59
|
+
log.dim(` Created: ${new Date(oauthClient.createdAt).toLocaleString()}`);
|
|
60
|
+
log.dim(` Updated: ${new Date(oauthClient.updatedAt).toLocaleString()}`);
|
|
61
|
+
}
|
|
62
|
+
export async function createOAuthClientCommand(name, redirectUris, options) {
|
|
63
|
+
if (redirectUris.length === 0) {
|
|
64
|
+
log.error('At least one redirect URI is required');
|
|
65
|
+
process.exit(1);
|
|
66
|
+
}
|
|
67
|
+
const client = await BuilderClient.create();
|
|
68
|
+
const data = {
|
|
69
|
+
name,
|
|
70
|
+
redirectUris,
|
|
71
|
+
description: options.description,
|
|
72
|
+
allowedScopes: options.scopes?.split(',').map((s) => s.trim()),
|
|
73
|
+
allowedGrantTypes: options.grants?.split(',').map((s) => s.trim()),
|
|
74
|
+
isConfidential: options.confidential ?? true,
|
|
75
|
+
accessTokenTtl: options.accessTtl,
|
|
76
|
+
refreshTokenTtl: options.refreshTtl,
|
|
77
|
+
};
|
|
78
|
+
const result = await client.createOAuthClient(data);
|
|
79
|
+
if (!result.success) {
|
|
80
|
+
log.error(`Failed to create OAuth client: ${result.error?.message}`);
|
|
81
|
+
process.exit(1);
|
|
82
|
+
}
|
|
83
|
+
const created = result.data;
|
|
84
|
+
if (!created) {
|
|
85
|
+
log.error('No data returned from create');
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
log.success(`OAuth client created: ${created.clientId}`);
|
|
89
|
+
log.info('');
|
|
90
|
+
log.warning('Save these credentials - the secret will not be shown again!');
|
|
91
|
+
log.info('');
|
|
92
|
+
console.log(` Client ID: ${created.clientId}`);
|
|
93
|
+
console.log(` Client Secret: ${created.clientSecret}`);
|
|
94
|
+
log.info('');
|
|
95
|
+
log.dim(` Redirect URIs: ${created.redirectUris.join(', ')}`);
|
|
96
|
+
}
|
|
97
|
+
export async function updateOAuthClientCommand(clientId, options) {
|
|
98
|
+
const client = await BuilderClient.create();
|
|
99
|
+
const data = {};
|
|
100
|
+
if (options.name)
|
|
101
|
+
data.name = options.name;
|
|
102
|
+
if (options.description)
|
|
103
|
+
data.description = options.description;
|
|
104
|
+
if (options.active !== undefined)
|
|
105
|
+
data.isActive = options.active;
|
|
106
|
+
if (options.scopes)
|
|
107
|
+
data.allowedScopes = options.scopes.split(',').map((s) => s.trim());
|
|
108
|
+
if (options.grants)
|
|
109
|
+
data.allowedGrantTypes = options.grants.split(',').map((s) => s.trim());
|
|
110
|
+
if (options.accessTtl)
|
|
111
|
+
data.accessTokenTtl = options.accessTtl;
|
|
112
|
+
if (options.refreshTtl)
|
|
113
|
+
data.refreshTokenTtl = options.refreshTtl;
|
|
114
|
+
if (Object.keys(data).length === 0) {
|
|
115
|
+
log.error('No updates specified');
|
|
116
|
+
process.exit(1);
|
|
117
|
+
}
|
|
118
|
+
const result = await client.updateOAuthClient(clientId, data);
|
|
119
|
+
if (!result.success) {
|
|
120
|
+
log.error(`Failed to update OAuth client: ${result.error?.message}`);
|
|
121
|
+
process.exit(1);
|
|
122
|
+
}
|
|
123
|
+
log.success(`OAuth client "${clientId}" updated`);
|
|
124
|
+
}
|
|
125
|
+
export async function deleteOAuthClientCommand(clientId, options) {
|
|
126
|
+
if (!options.yes) {
|
|
127
|
+
log.error('Use --yes to confirm deletion');
|
|
128
|
+
process.exit(1);
|
|
129
|
+
}
|
|
130
|
+
const client = await BuilderClient.create();
|
|
131
|
+
const result = await client.deleteOAuthClient(clientId);
|
|
132
|
+
if (!result.success) {
|
|
133
|
+
log.error(`Failed to delete OAuth client: ${result.error?.message}`);
|
|
134
|
+
process.exit(1);
|
|
135
|
+
}
|
|
136
|
+
log.success(`OAuth client "${clientId}" deleted`);
|
|
137
|
+
}
|
|
138
|
+
export async function addRedirectUriCommand(clientId, uri) {
|
|
139
|
+
const client = await BuilderClient.create();
|
|
140
|
+
const result = await client.addRedirectUri(clientId, uri);
|
|
141
|
+
if (!result.success) {
|
|
142
|
+
log.error(`Failed to add redirect URI: ${result.error?.message}`);
|
|
143
|
+
process.exit(1);
|
|
144
|
+
}
|
|
145
|
+
log.success(`Redirect URI added to "${clientId}"`);
|
|
146
|
+
log.dim(` URIs: ${result.data?.redirectUris.join(', ')}`);
|
|
147
|
+
}
|
|
148
|
+
export async function removeRedirectUriCommand(clientId, uri) {
|
|
149
|
+
const client = await BuilderClient.create();
|
|
150
|
+
const result = await client.removeRedirectUri(clientId, uri);
|
|
151
|
+
if (!result.success) {
|
|
152
|
+
log.error(`Failed to remove redirect URI: ${result.error?.message}`);
|
|
153
|
+
process.exit(1);
|
|
154
|
+
}
|
|
155
|
+
log.success(`Redirect URI removed from "${clientId}"`);
|
|
156
|
+
log.dim(` URIs: ${result.data?.redirectUris.join(', ')}`);
|
|
157
|
+
}
|
|
158
|
+
export async function regenerateSecretCommand(clientId, options) {
|
|
159
|
+
if (!options.yes) {
|
|
160
|
+
log.error('Use --yes to confirm secret regeneration');
|
|
161
|
+
process.exit(1);
|
|
162
|
+
}
|
|
163
|
+
const client = await BuilderClient.create();
|
|
164
|
+
const result = await client.regenerateClientSecret(clientId);
|
|
165
|
+
if (!result.success) {
|
|
166
|
+
log.error(`Failed to regenerate secret: ${result.error?.message}`);
|
|
167
|
+
process.exit(1);
|
|
168
|
+
}
|
|
169
|
+
const data = result.data;
|
|
170
|
+
if (!data) {
|
|
171
|
+
log.error('No data returned');
|
|
172
|
+
process.exit(1);
|
|
173
|
+
}
|
|
174
|
+
log.success(`Secret regenerated for "${clientId}"`);
|
|
175
|
+
log.info('');
|
|
176
|
+
log.warning('Save this secret - it will not be shown again!');
|
|
177
|
+
log.info('');
|
|
178
|
+
console.log(` Client ID: ${data.clientId}`);
|
|
179
|
+
console.log(` Client Secret: ${data.clientSecret}`);
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=oauth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/commands/oauth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare function createUserCommand(email: string, options: {
|
|
2
|
+
firstName?: string;
|
|
3
|
+
lastName?: string;
|
|
4
|
+
password?: string;
|
|
5
|
+
type?: string;
|
|
6
|
+
jobTitle?: string;
|
|
7
|
+
json?: boolean;
|
|
8
|
+
}): Promise<void>;
|
|
9
|
+
export declare function searchUsersCommand(query: string, options: {
|
|
10
|
+
limit?: number;
|
|
11
|
+
json?: boolean;
|
|
12
|
+
}): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=user.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/commands/user.ts"],"names":[],"mappings":"AASA,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IACP,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf,GACA,OAAO,CAAC,IAAI,CAAC,CA6Ef;AAED,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;CACf,GACA,OAAO,CAAC,IAAI,CAAC,CAiCf"}
|