casualos 3.3.9 → 3.3.10
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/cli.js +2 -0
- package/cli.js.map +1 -1
- package/config.d.ts +5 -0
- package/config.js +2 -0
- package/config.js.map +1 -0
- package/dist/cli.js +23781 -9723
- package/infra-utils.d.ts +2 -0
- package/infra-utils.js +4 -0
- package/infra-utils.js.map +1 -0
- package/infra.d.ts +40 -0
- package/infra.js +303 -0
- package/infra.js.map +1 -0
- package/package.json +13 -4
package/infra-utils.d.ts
ADDED
package/infra-utils.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infra-utils.js","sourceRoot":"","sources":["infra-utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,WAAW,CAAC,IAAY;IACpC,OAAO,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAC7E,CAAC"}
|
package/infra.d.ts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { CliConfig } from './config';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
export declare function setupInfraCommands(program: Command, config: CliConfig): void;
|
|
5
|
+
export interface InfraMetadata {
|
|
6
|
+
id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
}
|
|
9
|
+
declare const INFRA_CONFIG_SCHEMA: z.ZodObject<{
|
|
10
|
+
githubToken: z.ZodNullable<z.ZodOptional<z.ZodObject<{
|
|
11
|
+
token: z.ZodString;
|
|
12
|
+
refreshToken: z.ZodNullable<z.ZodOptional<z.ZodString>>;
|
|
13
|
+
expiresAt: z.ZodDate;
|
|
14
|
+
}, "strip", z.ZodTypeAny, {
|
|
15
|
+
token?: string;
|
|
16
|
+
refreshToken?: string;
|
|
17
|
+
expiresAt?: Date;
|
|
18
|
+
}, {
|
|
19
|
+
token?: string;
|
|
20
|
+
refreshToken?: string;
|
|
21
|
+
expiresAt?: Date;
|
|
22
|
+
}>>>;
|
|
23
|
+
}, "strip", z.ZodTypeAny, {
|
|
24
|
+
githubToken?: {
|
|
25
|
+
token?: string;
|
|
26
|
+
refreshToken?: string;
|
|
27
|
+
expiresAt?: Date;
|
|
28
|
+
};
|
|
29
|
+
}, {
|
|
30
|
+
githubToken?: {
|
|
31
|
+
token?: string;
|
|
32
|
+
refreshToken?: string;
|
|
33
|
+
expiresAt?: Date;
|
|
34
|
+
};
|
|
35
|
+
}>;
|
|
36
|
+
export type InfraConfig = z.infer<typeof INFRA_CONFIG_SCHEMA>;
|
|
37
|
+
export declare function getRepoPath(name: string): string;
|
|
38
|
+
export declare function getLoginPath(name: string): string;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=infra.d.ts.map
|
package/infra.js
ADDED
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { z } from 'zod';
|
|
11
|
+
import prompts from 'prompts';
|
|
12
|
+
import { resolve } from 'path';
|
|
13
|
+
import { mkdir, writeFile } from 'fs/promises';
|
|
14
|
+
import { createOAuthDeviceAuth } from '@octokit/auth-oauth-device';
|
|
15
|
+
import { Octokit } from 'octokit';
|
|
16
|
+
import simpleGit from 'simple-git';
|
|
17
|
+
import { exec as nodeExec } from 'child_process';
|
|
18
|
+
import { existsSync } from 'fs';
|
|
19
|
+
import { v4 as uuid } from 'uuid';
|
|
20
|
+
import { promisify } from 'util';
|
|
21
|
+
import { getRepoName } from './infra-utils';
|
|
22
|
+
const exec = promisify(nodeExec);
|
|
23
|
+
export function setupInfraCommands(program, config) {
|
|
24
|
+
// new infra repo
|
|
25
|
+
program
|
|
26
|
+
.command('new [name]')
|
|
27
|
+
.description('Create a new infrastructure project')
|
|
28
|
+
.action((name) => __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
console.log('Creating a new repository for storing infrastructure');
|
|
30
|
+
if (!name) {
|
|
31
|
+
const res = yield prompts({
|
|
32
|
+
type: 'text',
|
|
33
|
+
name: 'name',
|
|
34
|
+
message: 'Enter the name of the repository',
|
|
35
|
+
});
|
|
36
|
+
name = res.name;
|
|
37
|
+
}
|
|
38
|
+
if (!name) {
|
|
39
|
+
console.error('No repository name provided');
|
|
40
|
+
process.exit(1);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const fullPath = getRepoPath(name);
|
|
44
|
+
if (existsSync(fullPath)) {
|
|
45
|
+
console.error('Directory already exists:', fullPath);
|
|
46
|
+
process.exit(1);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
console.log('Creating repository in:', fullPath);
|
|
50
|
+
yield mkdir(fullPath, { recursive: true });
|
|
51
|
+
const git = simpleGit(fullPath);
|
|
52
|
+
yield git.init();
|
|
53
|
+
console.log('Local Git Repository created:', fullPath);
|
|
54
|
+
const { createGithub } = yield prompts({
|
|
55
|
+
type: 'confirm',
|
|
56
|
+
name: 'createGithub',
|
|
57
|
+
message: 'Create a GitHub repository for the project?',
|
|
58
|
+
});
|
|
59
|
+
const repoName = getRepoName(name);
|
|
60
|
+
if (createGithub) {
|
|
61
|
+
const kit = yield getOctokit(fullPath, config);
|
|
62
|
+
const orgs = (yield kit.rest.apps.listInstallationsForAuthenticatedUser({})).data.installations.filter((i) => i.target_type === 'Organization');
|
|
63
|
+
const { org } = yield prompts({
|
|
64
|
+
type: 'autocomplete',
|
|
65
|
+
name: 'org',
|
|
66
|
+
message: 'Select the organization to create the repository in',
|
|
67
|
+
choices: orgs.map((org) => ({
|
|
68
|
+
title: org.account.login,
|
|
69
|
+
value: org.account.login,
|
|
70
|
+
})),
|
|
71
|
+
});
|
|
72
|
+
if (!org) {
|
|
73
|
+
console.error('No organization selected');
|
|
74
|
+
process.exit(1);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const { enteredName } = yield prompts({
|
|
78
|
+
type: 'text',
|
|
79
|
+
name: 'enteredName',
|
|
80
|
+
message: 'Enter the name of the repository',
|
|
81
|
+
initial: repoName,
|
|
82
|
+
});
|
|
83
|
+
if (!enteredName) {
|
|
84
|
+
console.error('No repository name provided');
|
|
85
|
+
process.exit(1);
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
const repo = yield kit.rest.repos.createInOrg({
|
|
89
|
+
org: org,
|
|
90
|
+
name: enteredName,
|
|
91
|
+
visibility: 'private',
|
|
92
|
+
});
|
|
93
|
+
console.log('GitHub Repository created:', repo.data.html_url);
|
|
94
|
+
yield git.addRemote('origin', repo.data.ssh_url);
|
|
95
|
+
}
|
|
96
|
+
const projectId = uuid();
|
|
97
|
+
const projectMeta = {
|
|
98
|
+
id: projectId,
|
|
99
|
+
name: repoName,
|
|
100
|
+
};
|
|
101
|
+
yield git.checkoutLocalBranch('main');
|
|
102
|
+
yield writeFile(resolve(fullPath, '.infra.json'), JSON.stringify(projectMeta, null, 2));
|
|
103
|
+
// const casualOsPath = require.resolve('casualos');
|
|
104
|
+
// const templatePath = resolve(casualOsPath, 'templates');
|
|
105
|
+
// await cp(templatePath, fullPath, { recursive: true })
|
|
106
|
+
yield git.add('.');
|
|
107
|
+
yield git.commit('Initial commit');
|
|
108
|
+
if (createGithub) {
|
|
109
|
+
yield git.push('origin', 'main', ['--set-upstream']);
|
|
110
|
+
}
|
|
111
|
+
yield exec('pulumi login file://' + getLoginPath(fullPath));
|
|
112
|
+
yield git.add('.');
|
|
113
|
+
yield git.commit('Add Pulumi Metadata');
|
|
114
|
+
if (createGithub) {
|
|
115
|
+
yield git.push('origin', 'main', ['--set-upstream']);
|
|
116
|
+
}
|
|
117
|
+
console.log('Repository setup complete!');
|
|
118
|
+
}));
|
|
119
|
+
program
|
|
120
|
+
.command('clone [url]')
|
|
121
|
+
.description('Clone an infrastructure project')
|
|
122
|
+
.action((url) => __awaiter(this, void 0, void 0, function* () {
|
|
123
|
+
if (!url) {
|
|
124
|
+
const res = yield prompts({
|
|
125
|
+
type: 'text',
|
|
126
|
+
name: 'url',
|
|
127
|
+
message: 'Enter the url of the repository',
|
|
128
|
+
});
|
|
129
|
+
url = res.url;
|
|
130
|
+
}
|
|
131
|
+
const regex = /\/([\w-\.\s]+)\.git$/;
|
|
132
|
+
const match = regex.exec(url);
|
|
133
|
+
if (!match) {
|
|
134
|
+
console.error('Invalid repository URL');
|
|
135
|
+
process.exit(1);
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
const repoName = match[1];
|
|
139
|
+
const fullPath = getRepoPath(repoName);
|
|
140
|
+
if (existsSync(fullPath)) {
|
|
141
|
+
console.error('Directory already exists:', fullPath);
|
|
142
|
+
process.exit(1);
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
console.log('Cloning repository:', url);
|
|
146
|
+
yield simpleGit().clone(url, fullPath);
|
|
147
|
+
yield exec('pulumi login file://' + getLoginPath(fullPath));
|
|
148
|
+
console.log('Done.');
|
|
149
|
+
}));
|
|
150
|
+
program
|
|
151
|
+
.command('switch <name>')
|
|
152
|
+
.description('Switch to a different infrastructure project')
|
|
153
|
+
.action((name) => __awaiter(this, void 0, void 0, function* () {
|
|
154
|
+
const fullPath = getRepoPath(name);
|
|
155
|
+
yield exec('pulumi login file://' + getLoginPath(fullPath));
|
|
156
|
+
}));
|
|
157
|
+
program
|
|
158
|
+
.command('status <name>')
|
|
159
|
+
.description('Get info about a infrastructure project')
|
|
160
|
+
.action((name) => __awaiter(this, void 0, void 0, function* () {
|
|
161
|
+
const fullPath = getRepoPath(name);
|
|
162
|
+
const git = simpleGit(fullPath);
|
|
163
|
+
const status = yield git.status();
|
|
164
|
+
console.log('Project Info:');
|
|
165
|
+
console.log('Path:', fullPath);
|
|
166
|
+
console.log('Status:', status.isClean() ? 'Clean' : 'Dirty');
|
|
167
|
+
if (!status.isClean()) {
|
|
168
|
+
console.log('Changes:');
|
|
169
|
+
console.log(status.files.map((f) => f.path).join('\n'));
|
|
170
|
+
}
|
|
171
|
+
}));
|
|
172
|
+
program
|
|
173
|
+
.command('save <name>')
|
|
174
|
+
.description('Get info about a infrastructure project')
|
|
175
|
+
.option('-m, --message <message>', 'Commit message')
|
|
176
|
+
.action((name, options) => __awaiter(this, void 0, void 0, function* () {
|
|
177
|
+
const fullPath = getRepoPath(name);
|
|
178
|
+
const git = simpleGit(fullPath);
|
|
179
|
+
yield git.add('.');
|
|
180
|
+
const message = options.message || 'Save changes';
|
|
181
|
+
yield git.commit(message);
|
|
182
|
+
console.log('Changes saved');
|
|
183
|
+
const { push } = yield prompts({
|
|
184
|
+
type: 'confirm',
|
|
185
|
+
name: 'push',
|
|
186
|
+
message: 'Push changes to remote?',
|
|
187
|
+
initial: true,
|
|
188
|
+
});
|
|
189
|
+
if (push) {
|
|
190
|
+
yield git.push();
|
|
191
|
+
}
|
|
192
|
+
}));
|
|
193
|
+
}
|
|
194
|
+
const INFRA_CONFIG_SCHEMA = z.object({
|
|
195
|
+
githubToken: z
|
|
196
|
+
.object({
|
|
197
|
+
token: z.string(),
|
|
198
|
+
refreshToken: z.string().optional().nullable(),
|
|
199
|
+
expiresAt: z.coerce.date(),
|
|
200
|
+
})
|
|
201
|
+
.optional()
|
|
202
|
+
.nullable(),
|
|
203
|
+
});
|
|
204
|
+
function getOctokit(cwd, config) {
|
|
205
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
206
|
+
const token = yield getOrRequestGithubToken(cwd, config);
|
|
207
|
+
const kit = new Octokit({
|
|
208
|
+
auth: token.token,
|
|
209
|
+
});
|
|
210
|
+
return kit;
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
const CLIENT_ID = 'Iv23li10jiTgXpOGRrWJ';
|
|
214
|
+
function getOrRequestGithubToken(cwd, config) {
|
|
215
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
216
|
+
const infra = getInfraConfig(cwd, config);
|
|
217
|
+
if (!infra.githubToken || infra.githubToken.expiresAt < new Date()) {
|
|
218
|
+
if (infra.githubToken && infra.githubToken.expiresAt < new Date()) {
|
|
219
|
+
console.log('Token expired, refreshing');
|
|
220
|
+
}
|
|
221
|
+
const token = yield requestGithubToken();
|
|
222
|
+
config.set(`infra.githubToken`, token);
|
|
223
|
+
return token;
|
|
224
|
+
}
|
|
225
|
+
return infra.githubToken;
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
function requestGithubToken() {
|
|
229
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
230
|
+
const auth = createOAuthDeviceAuth({
|
|
231
|
+
clientType: 'github-app',
|
|
232
|
+
clientId: CLIENT_ID,
|
|
233
|
+
onVerification: (verification) => {
|
|
234
|
+
console.log('\nVerification required.\n');
|
|
235
|
+
console.log('Open this URL:', verification.verification_uri);
|
|
236
|
+
console.log('Enter code:', verification.user_code);
|
|
237
|
+
},
|
|
238
|
+
});
|
|
239
|
+
const token = yield auth({
|
|
240
|
+
type: 'oauth',
|
|
241
|
+
});
|
|
242
|
+
console.log('Token:', token);
|
|
243
|
+
return token;
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
function getInfraConfig(cwd, config) {
|
|
247
|
+
return INFRA_CONFIG_SCHEMA.parse({
|
|
248
|
+
githubToken: config.get(`infra.githubToken`),
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
// async function getAndSaveSshKey(
|
|
252
|
+
// cwd: string,
|
|
253
|
+
// config: CliConfig,
|
|
254
|
+
// infra: InfraConfig
|
|
255
|
+
// ) {
|
|
256
|
+
// const sshKey = await getInfraSshKey(cwd, infra);
|
|
257
|
+
// config.set(`${cwd}.infra.sshKey`, sshKey);
|
|
258
|
+
// return sshKey;
|
|
259
|
+
// }
|
|
260
|
+
// async function getInfraSshKey(cwd: string, config: InfraConfig) {
|
|
261
|
+
// if (!config.sshKey) {
|
|
262
|
+
// const home = homedir();
|
|
263
|
+
// const sshDir = resolve(home, '.ssh');
|
|
264
|
+
// // get list of files in .ssh directory
|
|
265
|
+
// let sshFiles: string[] = [];
|
|
266
|
+
// try {
|
|
267
|
+
// sshFiles = await readdir(sshDir);
|
|
268
|
+
// } catch (e) {
|
|
269
|
+
// // ignore
|
|
270
|
+
// console.warn('Unable to read .ssh directory:');
|
|
271
|
+
// }
|
|
272
|
+
// const { selectOrEnter } = await prompts({
|
|
273
|
+
// type: 'autocomplete',
|
|
274
|
+
// name: 'selectOrEnter',
|
|
275
|
+
// message: `Select an SSH key for the repository`,
|
|
276
|
+
// choices: [
|
|
277
|
+
// { title: 'None', value: 'none' },
|
|
278
|
+
// { title: 'Enter SSH Key Path', value: 'enter' },
|
|
279
|
+
// ...sshFiles.map((file) => ({ title: file, value: file })),
|
|
280
|
+
// ],
|
|
281
|
+
// });
|
|
282
|
+
// if (selectOrEnter === 'none') {
|
|
283
|
+
// return null;
|
|
284
|
+
// } else if (selectOrEnter === 'enter') {
|
|
285
|
+
// const { path } = await prompts({
|
|
286
|
+
// type: 'text',
|
|
287
|
+
// name: 'path',
|
|
288
|
+
// message: 'Enter the path to the SSH key file',
|
|
289
|
+
// });
|
|
290
|
+
// return resolve(cwd, path);
|
|
291
|
+
// } else {
|
|
292
|
+
// return resolve(sshDir, selectOrEnter);
|
|
293
|
+
// }
|
|
294
|
+
// }
|
|
295
|
+
// return config.sshKey;
|
|
296
|
+
// }
|
|
297
|
+
export function getRepoPath(name) {
|
|
298
|
+
return resolve(name);
|
|
299
|
+
}
|
|
300
|
+
export function getLoginPath(name) {
|
|
301
|
+
return resolve(name, '.state');
|
|
302
|
+
}
|
|
303
|
+
//# sourceMappingURL=infra.js.map
|
package/infra.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infra.js","sourceRoot":"","sources":["infra.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "casualos",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.10",
|
|
4
4
|
"description": "Command line interface for CasualOS.",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
@@ -37,11 +37,19 @@
|
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@casual-simulation/aux-common": "^3.3.8",
|
|
39
39
|
"@casual-simulation/aux-records": "^3.3.9",
|
|
40
|
+
"@octokit/app": "^15.1.0",
|
|
41
|
+
"@octokit/auth-oauth-device": "^7.1.1",
|
|
42
|
+
"@octokit/core": "^6.1.2",
|
|
40
43
|
"axios": "1.6.2",
|
|
41
44
|
"commander": "12.0.0",
|
|
42
45
|
"conf": "12.0.0",
|
|
46
|
+
"octokit": "^4.0.2",
|
|
43
47
|
"open": "10.1.0",
|
|
44
|
-
"prompts": "2.4.2"
|
|
48
|
+
"prompts": "2.4.2",
|
|
49
|
+
"simple-git": "^3.24.0",
|
|
50
|
+
"tweetnacl": "1.0.3",
|
|
51
|
+
"uuid": "^8.3.2",
|
|
52
|
+
"zod": "3.22.4"
|
|
45
53
|
},
|
|
46
54
|
"devDependencies": {
|
|
47
55
|
"@types/prompts": "^2.4.9"
|
|
@@ -52,7 +60,8 @@
|
|
|
52
60
|
"**/*.js",
|
|
53
61
|
"**/*.js.map",
|
|
54
62
|
"**/*.d.ts",
|
|
55
|
-
"**/*.def"
|
|
63
|
+
"**/*.def",
|
|
64
|
+
"templates/**"
|
|
56
65
|
],
|
|
57
|
-
"gitHead": "
|
|
66
|
+
"gitHead": "2302721dbe662af79ea662387f4c9c0642b4a34a"
|
|
58
67
|
}
|