@jacobwisniewski/openstack 0.1.1
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 +46 -0
- package/dist/__tests__/cli.test.d.ts +2 -0
- package/dist/__tests__/cli.test.d.ts.map +1 -0
- package/dist/__tests__/cli.test.js +21 -0
- package/dist/__tests__/cli.test.js.map +1 -0
- package/dist/__tests__/commands.test.d.ts +2 -0
- package/dist/__tests__/commands.test.d.ts.map +1 -0
- package/dist/__tests__/commands.test.js +295 -0
- package/dist/__tests__/commands.test.js.map +1 -0
- package/dist/__tests__/config-operations.test.d.ts +2 -0
- package/dist/__tests__/config-operations.test.d.ts.map +1 -0
- package/dist/__tests__/config-operations.test.js +132 -0
- package/dist/__tests__/config-operations.test.js.map +1 -0
- package/dist/__tests__/fixtures.d.ts +59 -0
- package/dist/__tests__/fixtures.d.ts.map +1 -0
- package/dist/__tests__/fixtures.js +59 -0
- package/dist/__tests__/fixtures.js.map +1 -0
- package/dist/__tests__/validation.test.d.ts +2 -0
- package/dist/__tests__/validation.test.d.ts.map +1 -0
- package/dist/__tests__/validation.test.js +124 -0
- package/dist/__tests__/validation.test.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +142 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands.d.ts +97 -0
- package/dist/commands.d.ts.map +1 -0
- package/dist/commands.js +245 -0
- package/dist/commands.js.map +1 -0
- package/dist/result.d.ts +2 -0
- package/dist/result.d.ts.map +1 -0
- package/dist/result.js +9 -0
- package/dist/result.js.map +1 -0
- package/dist/types/index.d.ts +26 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/validation.d.ts +21 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +32 -0
- package/dist/validation.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Common test data fixtures for validation tests
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.configWithInvalidProfile = exports.incompleteConfig = exports.invalidProfileMissingFields = exports.invalidProfileBadDate = exports.invalidProfileEmptyName = exports.emptyProfilesConfig = exports.configWithMultipleProfiles = exports.validConfig = exports.validProfileLocal = exports.validProfile = void 0;
|
|
5
|
+
exports.validProfile = {
|
|
6
|
+
name: "my-profile",
|
|
7
|
+
source: "https://github.com/user/repo",
|
|
8
|
+
installed_at: "2025-01-09T10:00:00Z",
|
|
9
|
+
};
|
|
10
|
+
exports.validProfileLocal = {
|
|
11
|
+
name: "default",
|
|
12
|
+
source: "local",
|
|
13
|
+
installed_at: "2025-01-09T10:00:00Z",
|
|
14
|
+
};
|
|
15
|
+
exports.validConfig = {
|
|
16
|
+
version: "0.1.0",
|
|
17
|
+
active_profile: "default",
|
|
18
|
+
profiles: [exports.validProfileLocal],
|
|
19
|
+
};
|
|
20
|
+
exports.configWithMultipleProfiles = {
|
|
21
|
+
version: "0.1.0",
|
|
22
|
+
active_profile: "work",
|
|
23
|
+
profiles: [
|
|
24
|
+
exports.validProfileLocal,
|
|
25
|
+
{
|
|
26
|
+
name: "work",
|
|
27
|
+
source: "https://github.com/user/repo",
|
|
28
|
+
installed_at: "2025-01-09T11:00:00Z",
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
};
|
|
32
|
+
exports.emptyProfilesConfig = {
|
|
33
|
+
version: "0.1.0",
|
|
34
|
+
active_profile: "default",
|
|
35
|
+
profiles: [],
|
|
36
|
+
};
|
|
37
|
+
// Invalid fixtures
|
|
38
|
+
exports.invalidProfileEmptyName = {
|
|
39
|
+
name: "",
|
|
40
|
+
source: "local",
|
|
41
|
+
installed_at: "2025-01-09T10:00:00Z",
|
|
42
|
+
};
|
|
43
|
+
exports.invalidProfileBadDate = {
|
|
44
|
+
name: "test",
|
|
45
|
+
source: "local",
|
|
46
|
+
installed_at: "not-a-datetime",
|
|
47
|
+
};
|
|
48
|
+
exports.invalidProfileMissingFields = {
|
|
49
|
+
name: "test",
|
|
50
|
+
};
|
|
51
|
+
exports.incompleteConfig = {
|
|
52
|
+
version: "0.1.0",
|
|
53
|
+
};
|
|
54
|
+
exports.configWithInvalidProfile = {
|
|
55
|
+
version: "0.1.0",
|
|
56
|
+
active_profile: "default",
|
|
57
|
+
profiles: [exports.invalidProfileEmptyName],
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=fixtures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../src/__tests__/fixtures.ts"],"names":[],"mappings":";AAAA,iDAAiD;;;AAEpC,QAAA,YAAY,GAAG;IAC1B,IAAI,EAAE,YAAY;IAClB,MAAM,EAAE,8BAA8B;IACtC,YAAY,EAAE,sBAAsB;CACrC,CAAC;AAEW,QAAA,iBAAiB,GAAG;IAC/B,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,OAAO;IACf,YAAY,EAAE,sBAAsB;CACrC,CAAC;AAEW,QAAA,WAAW,GAAG;IACzB,OAAO,EAAE,OAAO;IAChB,cAAc,EAAE,SAAS;IACzB,QAAQ,EAAE,CAAC,yBAAiB,CAAC;CAC9B,CAAC;AAEW,QAAA,0BAA0B,GAAG;IACxC,OAAO,EAAE,OAAO;IAChB,cAAc,EAAE,MAAM;IACtB,QAAQ,EAAE;QACR,yBAAiB;QACjB;YACE,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,8BAA8B;YACtC,YAAY,EAAE,sBAAsB;SACrC;KACF;CACF,CAAC;AAEW,QAAA,mBAAmB,GAAG;IACjC,OAAO,EAAE,OAAO;IAChB,cAAc,EAAE,SAAS;IACzB,QAAQ,EAAE,EAAE;CACb,CAAC;AAEF,mBAAmB;AACN,QAAA,uBAAuB,GAAG;IACrC,IAAI,EAAE,EAAE;IACR,MAAM,EAAE,OAAO;IACf,YAAY,EAAE,sBAAsB;CACrC,CAAC;AAEW,QAAA,qBAAqB,GAAG;IACnC,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,OAAO;IACf,YAAY,EAAE,gBAAgB;CAC/B,CAAC;AAEW,QAAA,2BAA2B,GAAG;IACzC,IAAI,EAAE,MAAM;CACb,CAAC;AAEW,QAAA,gBAAgB,GAAG;IAC9B,OAAO,EAAE,OAAO;CACjB,CAAC;AAEW,QAAA,wBAAwB,GAAG;IACtC,OAAO,EAAE,OAAO;IAChB,cAAc,EAAE,SAAS;IACzB,QAAQ,EAAE,CAAC,+BAAuB,CAAC;CACpC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/validation.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const validation_1 = require("../validation");
|
|
5
|
+
const fixtures_1 = require("./fixtures");
|
|
6
|
+
(0, vitest_1.describe)("ProfileEntrySchema", () => {
|
|
7
|
+
(0, vitest_1.describe)("GIVEN a valid profile entry", () => {
|
|
8
|
+
(0, vitest_1.it)("SHOULD parse successfully", () => {
|
|
9
|
+
const result = validation_1.ProfileEntrySchema.safeParse(fixtures_1.validProfile);
|
|
10
|
+
(0, vitest_1.expect)(result.success).toBe(true);
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
(0, vitest_1.describe)("GIVEN a profile with empty name", () => {
|
|
14
|
+
(0, vitest_1.it)("SHOULD fail validation", () => {
|
|
15
|
+
const result = validation_1.ProfileEntrySchema.safeParse(fixtures_1.invalidProfileEmptyName);
|
|
16
|
+
(0, vitest_1.expect)(result.success).toBe(false);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
(0, vitest_1.describe)("GIVEN a profile with invalid datetime", () => {
|
|
20
|
+
(0, vitest_1.it)("SHOULD fail validation", () => {
|
|
21
|
+
const result = validation_1.ProfileEntrySchema.safeParse(fixtures_1.invalidProfileBadDate);
|
|
22
|
+
(0, vitest_1.expect)(result.success).toBe(false);
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
(0, vitest_1.describe)("GIVEN a profile missing required fields", () => {
|
|
26
|
+
(0, vitest_1.it)("SHOULD fail validation", () => {
|
|
27
|
+
const result = validation_1.ProfileEntrySchema.safeParse(fixtures_1.invalidProfileMissingFields);
|
|
28
|
+
(0, vitest_1.expect)(result.success).toBe(false);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
(0, vitest_1.describe)("OpenStackConfigSchema", () => {
|
|
33
|
+
(0, vitest_1.describe)("GIVEN a valid config", () => {
|
|
34
|
+
(0, vitest_1.it)("SHOULD parse successfully", () => {
|
|
35
|
+
const result = validation_1.OpenStackConfigSchema.safeParse(fixtures_1.validConfig);
|
|
36
|
+
(0, vitest_1.expect)(result.success).toBe(true);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
(0, vitest_1.describe)("GIVEN a config with multiple profiles", () => {
|
|
40
|
+
(0, vitest_1.it)("SHOULD parse successfully", () => {
|
|
41
|
+
const result = validation_1.OpenStackConfigSchema.safeParse(fixtures_1.configWithMultipleProfiles);
|
|
42
|
+
(0, vitest_1.expect)(result.success).toBe(true);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
(0, vitest_1.describe)("GIVEN a config with empty profiles array", () => {
|
|
46
|
+
(0, vitest_1.it)("SHOULD parse successfully", () => {
|
|
47
|
+
const result = validation_1.OpenStackConfigSchema.safeParse(fixtures_1.emptyProfilesConfig);
|
|
48
|
+
(0, vitest_1.expect)(result.success).toBe(true);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
(0, vitest_1.describe)("GIVEN a config missing required fields", () => {
|
|
52
|
+
(0, vitest_1.it)("SHOULD fail validation", () => {
|
|
53
|
+
const result = validation_1.OpenStackConfigSchema.safeParse(fixtures_1.incompleteConfig);
|
|
54
|
+
(0, vitest_1.expect)(result.success).toBe(false);
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
(0, vitest_1.describe)("GIVEN a config with invalid profile in array", () => {
|
|
58
|
+
(0, vitest_1.it)("SHOULD fail validation", () => {
|
|
59
|
+
const result = validation_1.OpenStackConfigSchema.safeParse(fixtures_1.configWithInvalidProfile);
|
|
60
|
+
(0, vitest_1.expect)(result.success).toBe(false);
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
(0, vitest_1.describe)("validateProfileEntry", () => {
|
|
65
|
+
(0, vitest_1.describe)("GIVEN a valid profile entry", () => {
|
|
66
|
+
(0, vitest_1.it)("SHOULD return ok with the data", () => {
|
|
67
|
+
const result = (0, validation_1.validateProfileEntry)(fixtures_1.validProfile);
|
|
68
|
+
(0, vitest_1.expect)(result.isOk()).toBe(true);
|
|
69
|
+
if (result.isOk()) {
|
|
70
|
+
(0, vitest_1.expect)(result.value.name).toBe(fixtures_1.validProfile.name);
|
|
71
|
+
(0, vitest_1.expect)(result.value.source).toBe(fixtures_1.validProfile.source);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
(0, vitest_1.describe)("GIVEN an invalid profile entry", () => {
|
|
76
|
+
(0, vitest_1.it)("SHOULD return err with error message", () => {
|
|
77
|
+
const result = (0, validation_1.validateProfileEntry)(fixtures_1.invalidProfileEmptyName);
|
|
78
|
+
(0, vitest_1.expect)(result.isErr()).toBe(true);
|
|
79
|
+
if (result.isErr()) {
|
|
80
|
+
(0, vitest_1.expect)(result.error).toContain("name");
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
(0, vitest_1.describe)("validateConfig", () => {
|
|
86
|
+
(0, vitest_1.describe)("GIVEN a valid config", () => {
|
|
87
|
+
(0, vitest_1.it)("SHOULD return ok with the data", () => {
|
|
88
|
+
const result = (0, validation_1.validateConfig)(fixtures_1.validConfig);
|
|
89
|
+
(0, vitest_1.expect)(result.isOk()).toBe(true);
|
|
90
|
+
if (result.isOk()) {
|
|
91
|
+
(0, vitest_1.expect)(result.value.version).toBe(fixtures_1.validConfig.version);
|
|
92
|
+
(0, vitest_1.expect)(result.value.active_profile).toBe(fixtures_1.validConfig.active_profile);
|
|
93
|
+
(0, vitest_1.expect)(result.value.profiles).toHaveLength(1);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
(0, vitest_1.describe)("GIVEN an invalid config", () => {
|
|
98
|
+
(0, vitest_1.it)("SHOULD return err with formatted error message", () => {
|
|
99
|
+
const invalidConfig = {
|
|
100
|
+
version: "0.1.0",
|
|
101
|
+
active_profile: "default",
|
|
102
|
+
profiles: [fixtures_1.invalidProfileEmptyName],
|
|
103
|
+
};
|
|
104
|
+
const result = (0, validation_1.validateConfig)(invalidConfig);
|
|
105
|
+
(0, vitest_1.expect)(result.isErr()).toBe(true);
|
|
106
|
+
if (result.isErr()) {
|
|
107
|
+
(0, vitest_1.expect)(result.error.length).toBeGreaterThan(0);
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
(0, vitest_1.describe)("GIVEN non-object data", () => {
|
|
112
|
+
(0, vitest_1.it)("SHOULD return err", () => {
|
|
113
|
+
const result = (0, validation_1.validateConfig)("not an object");
|
|
114
|
+
(0, vitest_1.expect)(result.isErr()).toBe(true);
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
(0, vitest_1.describe)("GIVEN null data", () => {
|
|
118
|
+
(0, vitest_1.it)("SHOULD return err", () => {
|
|
119
|
+
const result = (0, validation_1.validateConfig)(null);
|
|
120
|
+
(0, vitest_1.expect)(result.isErr()).toBe(true);
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
//# sourceMappingURL=validation.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.test.js","sourceRoot":"","sources":["../../src/__tests__/validation.test.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const os = __importStar(require("os"));
|
|
40
|
+
const child_process_1 = require("child_process");
|
|
41
|
+
const commander_1 = require("commander");
|
|
42
|
+
const commands_1 = require("./commands");
|
|
43
|
+
const PACKAGE_JSON_PATH = path.join(__dirname, "..", "package.json");
|
|
44
|
+
const PACKAGE_VERSION = JSON.parse(fs.readFileSync(PACKAGE_JSON_PATH, "utf-8")).version;
|
|
45
|
+
function createPaths() {
|
|
46
|
+
const homeDir = os.homedir();
|
|
47
|
+
return {
|
|
48
|
+
openstackDir: path.join(homeDir, ".config", "openstack"),
|
|
49
|
+
opencodeDir: path.join(homeDir, ".config", "opencode"),
|
|
50
|
+
configFile: path.join(homeDir, ".config", "openstack", "config.yaml"),
|
|
51
|
+
profilesDir: path.join(homeDir, ".config", "openstack", "profiles"),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
const fileSystem = {
|
|
55
|
+
existsSync: fs.existsSync,
|
|
56
|
+
mkdirSync: fs.mkdirSync,
|
|
57
|
+
readFileSync: fs.readFileSync,
|
|
58
|
+
writeFileSync: fs.writeFileSync,
|
|
59
|
+
copyFileSync: fs.copyFileSync,
|
|
60
|
+
readdirSync: fs.readdirSync,
|
|
61
|
+
rmSync: fs.rmSync,
|
|
62
|
+
symlinkSync: fs.symlinkSync,
|
|
63
|
+
unlinkSync: fs.unlinkSync,
|
|
64
|
+
lstatSync: fs.lstatSync,
|
|
65
|
+
};
|
|
66
|
+
const gitRunner = {
|
|
67
|
+
clone: (url, dest) => {
|
|
68
|
+
(0, child_process_1.execSync)(`git clone --depth 1 "${url}" "${dest}"`, { stdio: "inherit" });
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
function handleError(message) {
|
|
72
|
+
console.error(`Error: ${message}`);
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
commander_1.program
|
|
76
|
+
.name("openstack")
|
|
77
|
+
.description("Simple profile management for OpenCode configurations")
|
|
78
|
+
.version(PACKAGE_VERSION);
|
|
79
|
+
commander_1.program
|
|
80
|
+
.command("init")
|
|
81
|
+
.description("Initialize openstack and backup your current config")
|
|
82
|
+
.option("-f, --force", "Force re-initialization (DANGER: will overwrite default backup)")
|
|
83
|
+
.action((options) => {
|
|
84
|
+
const paths = createPaths();
|
|
85
|
+
const result = (0, commands_1.init)(paths, fileSystem, { force: options.force ?? false }, PACKAGE_VERSION);
|
|
86
|
+
if (!result.success) {
|
|
87
|
+
handleError(result.error);
|
|
88
|
+
}
|
|
89
|
+
console.log(result.message);
|
|
90
|
+
});
|
|
91
|
+
commander_1.program
|
|
92
|
+
.command("install <source>")
|
|
93
|
+
.description("Install a profile from git URL or local path")
|
|
94
|
+
.option("-n, --name <name>", "Custom name for the profile")
|
|
95
|
+
.action((source, options) => {
|
|
96
|
+
const paths = createPaths();
|
|
97
|
+
const result = (0, commands_1.install)(paths, fileSystem, gitRunner, source, { name: options.name });
|
|
98
|
+
if (!result.success) {
|
|
99
|
+
handleError(result.error);
|
|
100
|
+
}
|
|
101
|
+
console.log(result.message);
|
|
102
|
+
});
|
|
103
|
+
commander_1.program
|
|
104
|
+
.command("use <name>")
|
|
105
|
+
.description("Switch to a profile")
|
|
106
|
+
.action((name) => {
|
|
107
|
+
const paths = createPaths();
|
|
108
|
+
const result = (0, commands_1.use)(paths, fileSystem, { name });
|
|
109
|
+
if (!result.success) {
|
|
110
|
+
handleError(result.error);
|
|
111
|
+
}
|
|
112
|
+
console.log(result.message);
|
|
113
|
+
});
|
|
114
|
+
commander_1.program
|
|
115
|
+
.command("remove <name>")
|
|
116
|
+
.description("Remove an installed profile")
|
|
117
|
+
.option("-f, --force", "Force removal even if profile is active")
|
|
118
|
+
.action((name, options) => {
|
|
119
|
+
const paths = createPaths();
|
|
120
|
+
const result = (0, commands_1.remove)(paths, fileSystem, { name, force: options.force });
|
|
121
|
+
if (!result.success) {
|
|
122
|
+
handleError(result.error);
|
|
123
|
+
}
|
|
124
|
+
console.log(result.message);
|
|
125
|
+
});
|
|
126
|
+
commander_1.program
|
|
127
|
+
.command("list")
|
|
128
|
+
.description("List installed profiles")
|
|
129
|
+
.action(() => {
|
|
130
|
+
const paths = createPaths();
|
|
131
|
+
const profiles = (0, commands_1.list)(paths, fileSystem);
|
|
132
|
+
if (profiles === null) {
|
|
133
|
+
handleError("openstack not initialized. Run 'openstack init' first to backup your current config.");
|
|
134
|
+
}
|
|
135
|
+
console.log("Installed profiles:");
|
|
136
|
+
profiles.forEach((p) => {
|
|
137
|
+
const marker = p.isActive ? "*" : " ";
|
|
138
|
+
console.log(` ${marker} ${p.name.padEnd(12)} (${p.source})`);
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
commander_1.program.parse();
|
|
142
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
import { type ValidatedOpenStackConfig } from "./validation";
|
|
3
|
+
export interface FileSystem {
|
|
4
|
+
existsSync: typeof fs.existsSync;
|
|
5
|
+
mkdirSync: typeof fs.mkdirSync;
|
|
6
|
+
readFileSync: typeof fs.readFileSync;
|
|
7
|
+
writeFileSync: typeof fs.writeFileSync;
|
|
8
|
+
copyFileSync: typeof fs.copyFileSync;
|
|
9
|
+
readdirSync: typeof fs.readdirSync;
|
|
10
|
+
rmSync: typeof fs.rmSync;
|
|
11
|
+
symlinkSync: typeof fs.symlinkSync;
|
|
12
|
+
unlinkSync: typeof fs.unlinkSync;
|
|
13
|
+
lstatSync: typeof fs.lstatSync;
|
|
14
|
+
}
|
|
15
|
+
export interface GitRunner {
|
|
16
|
+
clone: (url: string, dest: string) => void;
|
|
17
|
+
}
|
|
18
|
+
export interface OpenStackConfig {
|
|
19
|
+
version: string;
|
|
20
|
+
active_profile: string;
|
|
21
|
+
profiles: ProfileEntry[];
|
|
22
|
+
}
|
|
23
|
+
export interface ProfileEntry {
|
|
24
|
+
name: string;
|
|
25
|
+
source: string;
|
|
26
|
+
installed_at: string;
|
|
27
|
+
}
|
|
28
|
+
export interface Paths {
|
|
29
|
+
openstackDir: string;
|
|
30
|
+
opencodeDir: string;
|
|
31
|
+
configFile: string;
|
|
32
|
+
profilesDir: string;
|
|
33
|
+
}
|
|
34
|
+
export interface InitOptions {
|
|
35
|
+
force: boolean;
|
|
36
|
+
}
|
|
37
|
+
export interface InitResult {
|
|
38
|
+
success: true;
|
|
39
|
+
message: string;
|
|
40
|
+
}
|
|
41
|
+
export interface InitError {
|
|
42
|
+
success: false;
|
|
43
|
+
error: string;
|
|
44
|
+
}
|
|
45
|
+
export type InitOutput = InitResult | InitError;
|
|
46
|
+
export interface InstallOptions {
|
|
47
|
+
name?: string;
|
|
48
|
+
}
|
|
49
|
+
export interface InstallResult {
|
|
50
|
+
success: true;
|
|
51
|
+
message: string;
|
|
52
|
+
}
|
|
53
|
+
export interface InstallError {
|
|
54
|
+
success: false;
|
|
55
|
+
error: string;
|
|
56
|
+
}
|
|
57
|
+
export type InstallOutput = InstallResult | InstallError;
|
|
58
|
+
export declare function isInitialized(paths: Paths, fs: FileSystem): boolean;
|
|
59
|
+
export declare function loadConfig(paths: Paths, fs: FileSystem): ValidatedOpenStackConfig | null;
|
|
60
|
+
export declare function saveConfig(paths: Paths, fs: FileSystem, config: OpenStackConfig): void;
|
|
61
|
+
export declare function copyDir(fs: FileSystem, src: string, dest: string): void;
|
|
62
|
+
export declare function init(paths: Paths, fs: FileSystem, options: InitOptions, packageVersion: string): InitOutput;
|
|
63
|
+
export interface ProfileListItem {
|
|
64
|
+
name: string;
|
|
65
|
+
source: string;
|
|
66
|
+
isActive: boolean;
|
|
67
|
+
}
|
|
68
|
+
export declare function list(paths: Paths, fs: FileSystem): ProfileListItem[] | null;
|
|
69
|
+
export interface RemoveOptions {
|
|
70
|
+
name: string;
|
|
71
|
+
force?: boolean;
|
|
72
|
+
}
|
|
73
|
+
export interface RemoveResult {
|
|
74
|
+
success: true;
|
|
75
|
+
message: string;
|
|
76
|
+
}
|
|
77
|
+
export interface RemoveError {
|
|
78
|
+
success: false;
|
|
79
|
+
error: string;
|
|
80
|
+
}
|
|
81
|
+
export type RemoveOutput = RemoveResult | RemoveError;
|
|
82
|
+
export declare function remove(paths: Paths, fs: FileSystem, options: RemoveOptions): RemoveOutput;
|
|
83
|
+
export declare function install(paths: Paths, fs: FileSystem, git: GitRunner, source: string, options: InstallOptions): InstallOutput;
|
|
84
|
+
export interface UseOptions {
|
|
85
|
+
name: string;
|
|
86
|
+
}
|
|
87
|
+
export interface UseResult {
|
|
88
|
+
success: true;
|
|
89
|
+
message: string;
|
|
90
|
+
}
|
|
91
|
+
export interface UseError {
|
|
92
|
+
success: false;
|
|
93
|
+
error: string;
|
|
94
|
+
}
|
|
95
|
+
export type UseOutput = UseResult | UseError;
|
|
96
|
+
export declare function use(paths: Paths, fs: FileSystem, options: UseOptions): UseOutput;
|
|
97
|
+
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
|