@chucky.cloud/cli 0.2.8 → 0.3.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/dist/commands/apply.d.ts +7 -0
- package/dist/commands/apply.d.ts.map +1 -0
- package/dist/commands/apply.js +104 -0
- package/dist/commands/apply.js.map +1 -0
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +5 -1
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/delete.js +3 -3
- package/dist/commands/delete.js.map +1 -1
- package/dist/commands/deploy.d.ts +6 -2
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +177 -33
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/diff.d.ts +6 -0
- package/dist/commands/diff.d.ts.map +1 -0
- package/dist/commands/diff.js +101 -0
- package/dist/commands/diff.js.map +1 -0
- package/dist/commands/discard.d.ts +6 -0
- package/dist/commands/discard.d.ts.map +1 -0
- package/dist/commands/discard.js +36 -0
- package/dist/commands/discard.js.map +1 -0
- package/dist/commands/fetch.d.ts +6 -0
- package/dist/commands/fetch.d.ts.map +1 -0
- package/dist/commands/fetch.js +147 -0
- package/dist/commands/fetch.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +199 -57
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/jobs.d.ts +3 -0
- package/dist/commands/jobs.d.ts.map +1 -0
- package/dist/commands/jobs.js +417 -0
- package/dist/commands/jobs.js.map +1 -0
- package/dist/commands/keys.d.ts.map +1 -1
- package/dist/commands/keys.js +6 -1
- package/dist/commands/keys.js.map +1 -1
- package/dist/commands/log.d.ts +5 -0
- package/dist/commands/log.d.ts.map +1 -0
- package/dist/commands/log.js +69 -0
- package/dist/commands/log.js.map +1 -0
- package/dist/commands/prompt.d.ts +2 -0
- package/dist/commands/prompt.d.ts.map +1 -1
- package/dist/commands/prompt.js +174 -2
- package/dist/commands/prompt.js.map +1 -1
- package/dist/commands/pull.d.ts +7 -0
- package/dist/commands/pull.d.ts.map +1 -0
- package/dist/commands/pull.js +19 -0
- package/dist/commands/pull.js.map +1 -0
- package/dist/commands/sessions.d.ts +7 -0
- package/dist/commands/sessions.d.ts.map +1 -0
- package/dist/commands/sessions.js +57 -0
- package/dist/commands/sessions.js.map +1 -0
- package/dist/commands/wait.d.ts +7 -0
- package/dist/commands/wait.d.ts.map +1 -0
- package/dist/commands/wait.js +91 -0
- package/dist/commands/wait.js.map +1 -0
- package/dist/index.js +80 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/api.d.ts +130 -0
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +99 -0
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/archive.d.ts +5 -1
- package/dist/lib/archive.d.ts.map +1 -1
- package/dist/lib/archive.js +10 -15
- package/dist/lib/archive.js.map +1 -1
- package/dist/lib/config.d.ts +80 -5
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +86 -9
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/git.d.ts +70 -0
- package/dist/lib/git.d.ts.map +1 -0
- package/dist/lib/git.js +232 -0
- package/dist/lib/git.js.map +1 -0
- package/dist/lib/output.d.ts +42 -0
- package/dist/lib/output.d.ts.map +1 -0
- package/dist/lib/output.js +123 -0
- package/dist/lib/output.js.map +1 -0
- package/package.json +2 -2
package/dist/lib/config.js
CHANGED
|
@@ -3,7 +3,8 @@ import { homedir } from "node:os";
|
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
const CONFIG_DIR = join(homedir(), ".chucky");
|
|
5
5
|
const GLOBAL_CONFIG_PATH = join(CONFIG_DIR, "config.json");
|
|
6
|
-
const
|
|
6
|
+
const CHUCKY_CONFIG_FILE = "chucky.json"; // Committed
|
|
7
|
+
const PROJECT_BINDING_FILE = ".chucky"; // Gitignored
|
|
7
8
|
// Default portal URL (production)
|
|
8
9
|
const DEFAULT_PORTAL_URL = "https://doting-hornet-490.convex.site";
|
|
9
10
|
/**
|
|
@@ -37,11 +38,11 @@ export function saveGlobalConfig(config) {
|
|
|
37
38
|
writeFileSync(GLOBAL_CONFIG_PATH, JSON.stringify(config, null, 2));
|
|
38
39
|
}
|
|
39
40
|
/**
|
|
40
|
-
* Load
|
|
41
|
+
* Load chucky.json config (committed file)
|
|
41
42
|
*/
|
|
42
|
-
export function
|
|
43
|
+
export function loadChuckyConfig(cwd = process.cwd()) {
|
|
43
44
|
try {
|
|
44
|
-
const configPath = join(cwd,
|
|
45
|
+
const configPath = join(cwd, CHUCKY_CONFIG_FILE);
|
|
45
46
|
if (!existsSync(configPath)) {
|
|
46
47
|
return null;
|
|
47
48
|
}
|
|
@@ -53,12 +54,69 @@ export function loadProjectConfig(cwd = process.cwd()) {
|
|
|
53
54
|
}
|
|
54
55
|
}
|
|
55
56
|
/**
|
|
56
|
-
* Save
|
|
57
|
+
* Save chucky.json config (committed file)
|
|
57
58
|
*/
|
|
58
|
-
export function
|
|
59
|
-
const configPath = join(cwd,
|
|
59
|
+
export function saveChuckyConfig(config, cwd = process.cwd()) {
|
|
60
|
+
const configPath = join(cwd, CHUCKY_CONFIG_FILE);
|
|
60
61
|
writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
61
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Load .chucky project binding (gitignored file)
|
|
65
|
+
*/
|
|
66
|
+
export function loadProjectBinding(cwd = process.cwd()) {
|
|
67
|
+
try {
|
|
68
|
+
const bindingPath = join(cwd, PROJECT_BINDING_FILE);
|
|
69
|
+
if (!existsSync(bindingPath)) {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
const content = readFileSync(bindingPath, "utf-8");
|
|
73
|
+
return JSON.parse(content);
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Save .chucky project binding (gitignored file)
|
|
81
|
+
*/
|
|
82
|
+
export function saveProjectBinding(binding, cwd = process.cwd()) {
|
|
83
|
+
const bindingPath = join(cwd, PROJECT_BINDING_FILE);
|
|
84
|
+
writeFileSync(bindingPath, JSON.stringify(binding, null, 2));
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Load combined project config (chucky.json + .chucky)
|
|
88
|
+
*/
|
|
89
|
+
export function loadProjectConfig(cwd = process.cwd()) {
|
|
90
|
+
const chuckyConfig = loadChuckyConfig(cwd);
|
|
91
|
+
if (!chuckyConfig) {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
const binding = loadProjectBinding(cwd);
|
|
95
|
+
return {
|
|
96
|
+
name: chuckyConfig.name,
|
|
97
|
+
description: chuckyConfig.description,
|
|
98
|
+
folder: chuckyConfig.folder || ".",
|
|
99
|
+
crons: chuckyConfig.crons,
|
|
100
|
+
projectId: binding?.projectId,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Legacy: Save project config (for backwards compatibility during migration)
|
|
105
|
+
* @deprecated Use saveChuckyConfig and saveProjectBinding separately
|
|
106
|
+
*/
|
|
107
|
+
export function saveProjectConfig(config, cwd = process.cwd()) {
|
|
108
|
+
// Save chucky.json (committed)
|
|
109
|
+
saveChuckyConfig({
|
|
110
|
+
name: config.name,
|
|
111
|
+
description: config.description,
|
|
112
|
+
folder: config.folder,
|
|
113
|
+
crons: config.crons,
|
|
114
|
+
}, cwd);
|
|
115
|
+
// Save .chucky (gitignored) if projectId exists
|
|
116
|
+
if (config.projectId) {
|
|
117
|
+
saveProjectBinding({ projectId: config.projectId }, cwd);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
62
120
|
/**
|
|
63
121
|
* Check if user is logged in
|
|
64
122
|
*/
|
|
@@ -88,20 +146,39 @@ export function getPortalUrl() {
|
|
|
88
146
|
const config = loadGlobalConfig();
|
|
89
147
|
return config?.portalUrl || DEFAULT_PORTAL_URL;
|
|
90
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* Get worker URL (ChuckyBox)
|
|
151
|
+
*/
|
|
152
|
+
export function getWorkerUrl() {
|
|
153
|
+
return process.env.CHUCKY_WORKER_URL || "https://conjure.chucky.cloud";
|
|
154
|
+
}
|
|
91
155
|
/**
|
|
92
156
|
* Get project config or throw if not initialized
|
|
93
157
|
*/
|
|
94
158
|
export function requireProjectConfig() {
|
|
95
159
|
const config = loadProjectConfig();
|
|
96
160
|
if (!config) {
|
|
97
|
-
throw new Error("
|
|
161
|
+
throw new Error("No chucky.json found. Run 'chucky init' first.");
|
|
98
162
|
}
|
|
99
163
|
return config;
|
|
100
164
|
}
|
|
165
|
+
/**
|
|
166
|
+
* Check if chucky.json exists in current directory
|
|
167
|
+
*/
|
|
168
|
+
export function hasChuckyConfig() {
|
|
169
|
+
return loadChuckyConfig() !== null;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Check if project is bound (has .chucky with projectId)
|
|
173
|
+
*/
|
|
174
|
+
export function isProjectBound() {
|
|
175
|
+
return loadProjectBinding() !== null;
|
|
176
|
+
}
|
|
101
177
|
/**
|
|
102
178
|
* Check if project is initialized in current directory
|
|
179
|
+
* @deprecated Use hasChuckyConfig() and isProjectBound() separately
|
|
103
180
|
*/
|
|
104
181
|
export function isProjectInitialized() {
|
|
105
|
-
return
|
|
182
|
+
return hasChuckyConfig();
|
|
106
183
|
}
|
|
107
184
|
//# sourceMappingURL=config.js.map
|
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
export interface GitInfo {
|
|
2
|
+
isRepo: boolean;
|
|
3
|
+
isRoot: boolean;
|
|
4
|
+
headCommit: string;
|
|
5
|
+
isDirty: boolean;
|
|
6
|
+
dirtyFiles: string[];
|
|
7
|
+
}
|
|
8
|
+
export interface BundleStats {
|
|
9
|
+
commits: number;
|
|
10
|
+
filesAdded: string[];
|
|
11
|
+
filesModified: string[];
|
|
12
|
+
filesDeleted: string[];
|
|
13
|
+
insertions: number;
|
|
14
|
+
deletions: number;
|
|
15
|
+
}
|
|
16
|
+
export interface CommitInfo {
|
|
17
|
+
hash: string;
|
|
18
|
+
message: string;
|
|
19
|
+
filesChanged: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Get git repository information for a folder
|
|
23
|
+
*/
|
|
24
|
+
export declare function getGitInfo(folder: string): GitInfo;
|
|
25
|
+
/**
|
|
26
|
+
* Auto-commit all changes
|
|
27
|
+
*/
|
|
28
|
+
export declare function autoCommit(folder: string, message: string): string;
|
|
29
|
+
/**
|
|
30
|
+
* Create a git bundle from a commit range
|
|
31
|
+
*/
|
|
32
|
+
export declare function createBundle(folder: string, fromCommit: string, outputPath: string): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Verify a git bundle
|
|
35
|
+
*/
|
|
36
|
+
export declare function verifyBundle(folder: string, bundlePath: string): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Fetch a bundle to a branch
|
|
39
|
+
*/
|
|
40
|
+
export declare function fetchBundle(folder: string, bundlePath: string, branchName: string): void;
|
|
41
|
+
/**
|
|
42
|
+
* Get stats for changes between HEAD and a branch
|
|
43
|
+
*/
|
|
44
|
+
export declare function getBundleStats(folder: string, branchName: string): BundleStats;
|
|
45
|
+
/**
|
|
46
|
+
* Get full diff between HEAD and a branch
|
|
47
|
+
*/
|
|
48
|
+
export declare function getFullDiff(folder: string, branchName: string): string;
|
|
49
|
+
/**
|
|
50
|
+
* Get commit log between HEAD and a branch
|
|
51
|
+
*/
|
|
52
|
+
export declare function getCommitLog(folder: string, branchName: string): CommitInfo[];
|
|
53
|
+
/**
|
|
54
|
+
* Apply a branch (fast-forward merge)
|
|
55
|
+
*/
|
|
56
|
+
export declare function applyBranch(folder: string, branchName: string, options?: {
|
|
57
|
+
force?: boolean;
|
|
58
|
+
}): {
|
|
59
|
+
commits: number;
|
|
60
|
+
files: number;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Discard a branch (delete without merging)
|
|
64
|
+
*/
|
|
65
|
+
export declare function discardBranch(folder: string, branchName: string): void;
|
|
66
|
+
/**
|
|
67
|
+
* Check if a branch exists
|
|
68
|
+
*/
|
|
69
|
+
export declare function branchExists(folder: string, branchName: string): boolean;
|
|
70
|
+
//# sourceMappingURL=git.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/lib/git.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAkCD;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAqClD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAOlE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAWT;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CASxE;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,IAAI,CAKN;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,CAqD9E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAGtE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,UAAU,EAAE,CAoC7E;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5B;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAmBpC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAKtE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAIxE"}
|
package/dist/lib/git.js
ADDED
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
import { join, resolve } from "node:path";
|
|
4
|
+
/**
|
|
5
|
+
* Execute a git command and return stdout
|
|
6
|
+
*/
|
|
7
|
+
function git(args, cwd) {
|
|
8
|
+
const result = spawnSync("git", args, {
|
|
9
|
+
cwd,
|
|
10
|
+
encoding: "utf-8",
|
|
11
|
+
maxBuffer: 10 * 1024 * 1024,
|
|
12
|
+
});
|
|
13
|
+
if (result.error) {
|
|
14
|
+
throw result.error;
|
|
15
|
+
}
|
|
16
|
+
if (result.status !== 0) {
|
|
17
|
+
throw new Error(result.stderr || `git ${args[0]} failed`);
|
|
18
|
+
}
|
|
19
|
+
return result.stdout.trim();
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Execute a git command, returning null on failure instead of throwing
|
|
23
|
+
*/
|
|
24
|
+
function gitSafe(args, cwd) {
|
|
25
|
+
try {
|
|
26
|
+
return git(args, cwd);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get git repository information for a folder
|
|
34
|
+
*/
|
|
35
|
+
export function getGitInfo(folder) {
|
|
36
|
+
const fullPath = resolve(folder);
|
|
37
|
+
// Check if .git exists in this folder (is root)
|
|
38
|
+
const isRoot = existsSync(join(fullPath, ".git"));
|
|
39
|
+
// Check if it's inside any git repo
|
|
40
|
+
const gitDir = gitSafe(["rev-parse", "--git-dir"], fullPath);
|
|
41
|
+
const isRepo = gitDir !== null;
|
|
42
|
+
if (!isRepo) {
|
|
43
|
+
return {
|
|
44
|
+
isRepo: false,
|
|
45
|
+
isRoot: false,
|
|
46
|
+
headCommit: "",
|
|
47
|
+
isDirty: false,
|
|
48
|
+
dirtyFiles: [],
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
// Get HEAD commit
|
|
52
|
+
const headCommit = gitSafe(["rev-parse", "HEAD"], fullPath) || "";
|
|
53
|
+
// Get dirty files
|
|
54
|
+
const status = gitSafe(["status", "--porcelain"], fullPath) || "";
|
|
55
|
+
const dirtyFiles = status
|
|
56
|
+
.split("\n")
|
|
57
|
+
.filter((line) => line.trim())
|
|
58
|
+
.map((line) => line.slice(3));
|
|
59
|
+
return {
|
|
60
|
+
isRepo,
|
|
61
|
+
isRoot,
|
|
62
|
+
headCommit,
|
|
63
|
+
isDirty: dirtyFiles.length > 0,
|
|
64
|
+
dirtyFiles,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Auto-commit all changes
|
|
69
|
+
*/
|
|
70
|
+
export function autoCommit(folder, message) {
|
|
71
|
+
const fullPath = resolve(folder);
|
|
72
|
+
git(["add", "-A"], fullPath);
|
|
73
|
+
git(["commit", "-m", message], fullPath);
|
|
74
|
+
return git(["rev-parse", "HEAD"], fullPath);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Create a git bundle from a commit range
|
|
78
|
+
*/
|
|
79
|
+
export function createBundle(folder, fromCommit, outputPath) {
|
|
80
|
+
const fullPath = resolve(folder);
|
|
81
|
+
// Check if there are any commits in the range
|
|
82
|
+
const revList = gitSafe(["rev-list", `${fromCommit}..HEAD`], fullPath);
|
|
83
|
+
if (!revList || revList.trim() === "") {
|
|
84
|
+
return false; // No changes
|
|
85
|
+
}
|
|
86
|
+
git(["bundle", "create", outputPath, `${fromCommit}..HEAD`], fullPath);
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Verify a git bundle
|
|
91
|
+
*/
|
|
92
|
+
export function verifyBundle(folder, bundlePath) {
|
|
93
|
+
const fullPath = resolve(folder);
|
|
94
|
+
try {
|
|
95
|
+
git(["bundle", "verify", bundlePath], fullPath);
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Fetch a bundle to a branch
|
|
104
|
+
*/
|
|
105
|
+
export function fetchBundle(folder, bundlePath, branchName) {
|
|
106
|
+
const fullPath = resolve(folder);
|
|
107
|
+
// Fetch from bundle to the specified branch
|
|
108
|
+
git(["fetch", bundlePath, `HEAD:${branchName}`], fullPath);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Get stats for changes between HEAD and a branch
|
|
112
|
+
*/
|
|
113
|
+
export function getBundleStats(folder, branchName) {
|
|
114
|
+
const fullPath = resolve(folder);
|
|
115
|
+
// Get commit count
|
|
116
|
+
const revList = gitSafe(["rev-list", `HEAD..${branchName}`], fullPath) || "";
|
|
117
|
+
const commits = revList ? revList.split("\n").filter((l) => l.trim()).length : 0;
|
|
118
|
+
// Get file stats
|
|
119
|
+
const diffStat = gitSafe(["diff", "--numstat", `HEAD..${branchName}`], fullPath) || "";
|
|
120
|
+
let insertions = 0;
|
|
121
|
+
let deletions = 0;
|
|
122
|
+
for (const line of diffStat.split("\n").filter((l) => l.trim())) {
|
|
123
|
+
const [added, removed] = line.split("\t");
|
|
124
|
+
if (added !== "-")
|
|
125
|
+
insertions += parseInt(added, 10) || 0;
|
|
126
|
+
if (removed !== "-")
|
|
127
|
+
deletions += parseInt(removed, 10) || 0;
|
|
128
|
+
}
|
|
129
|
+
// Get file change types
|
|
130
|
+
const diffFiles = gitSafe(["diff", "--name-status", `HEAD..${branchName}`], fullPath) || "";
|
|
131
|
+
const filesAdded = [];
|
|
132
|
+
const filesModified = [];
|
|
133
|
+
const filesDeleted = [];
|
|
134
|
+
for (const line of diffFiles.split("\n").filter((l) => l.trim())) {
|
|
135
|
+
const [status, ...fileParts] = line.split("\t");
|
|
136
|
+
const file = fileParts.join("\t");
|
|
137
|
+
if (status.startsWith("A")) {
|
|
138
|
+
filesAdded.push(file);
|
|
139
|
+
}
|
|
140
|
+
else if (status.startsWith("M")) {
|
|
141
|
+
filesModified.push(file);
|
|
142
|
+
}
|
|
143
|
+
else if (status.startsWith("D")) {
|
|
144
|
+
filesDeleted.push(file);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return {
|
|
148
|
+
commits,
|
|
149
|
+
filesAdded,
|
|
150
|
+
filesModified,
|
|
151
|
+
filesDeleted,
|
|
152
|
+
insertions,
|
|
153
|
+
deletions,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Get full diff between HEAD and a branch
|
|
158
|
+
*/
|
|
159
|
+
export function getFullDiff(folder, branchName) {
|
|
160
|
+
const fullPath = resolve(folder);
|
|
161
|
+
return git(["diff", `HEAD..${branchName}`], fullPath);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Get commit log between HEAD and a branch
|
|
165
|
+
*/
|
|
166
|
+
export function getCommitLog(folder, branchName) {
|
|
167
|
+
const fullPath = resolve(folder);
|
|
168
|
+
const log = gitSafe(["log", "--oneline", "--numstat", `HEAD..${branchName}`], fullPath) || "";
|
|
169
|
+
const commits = [];
|
|
170
|
+
let currentCommit = null;
|
|
171
|
+
for (const line of log.split("\n")) {
|
|
172
|
+
if (!line.trim())
|
|
173
|
+
continue;
|
|
174
|
+
// Commit line: "abc1234 Commit message here"
|
|
175
|
+
const commitMatch = line.match(/^([a-f0-9]+)\s+(.+)$/);
|
|
176
|
+
if (commitMatch && !line.includes("\t")) {
|
|
177
|
+
if (currentCommit) {
|
|
178
|
+
commits.push(currentCommit);
|
|
179
|
+
}
|
|
180
|
+
currentCommit = {
|
|
181
|
+
hash: commitMatch[1],
|
|
182
|
+
message: commitMatch[2],
|
|
183
|
+
filesChanged: 0,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
else if (currentCommit && line.includes("\t")) {
|
|
187
|
+
// File stat line
|
|
188
|
+
currentCommit.filesChanged++;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
if (currentCommit) {
|
|
192
|
+
commits.push(currentCommit);
|
|
193
|
+
}
|
|
194
|
+
return commits;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Apply a branch (fast-forward merge)
|
|
198
|
+
*/
|
|
199
|
+
export function applyBranch(folder, branchName, options) {
|
|
200
|
+
const fullPath = resolve(folder);
|
|
201
|
+
const stats = getBundleStats(fullPath, branchName);
|
|
202
|
+
if (options?.force) {
|
|
203
|
+
// Use --no-edit to avoid interactive editor, provide merge commit message
|
|
204
|
+
git(["merge", "--no-edit", "-m", `Merge ${branchName}`, branchName], fullPath);
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
git(["merge", "--ff-only", branchName], fullPath);
|
|
208
|
+
}
|
|
209
|
+
// Clean up the branch
|
|
210
|
+
git(["branch", "-d", branchName], fullPath);
|
|
211
|
+
return {
|
|
212
|
+
commits: stats.commits,
|
|
213
|
+
files: stats.filesAdded.length + stats.filesModified.length + stats.filesDeleted.length,
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Discard a branch (delete without merging)
|
|
218
|
+
*/
|
|
219
|
+
export function discardBranch(folder, branchName) {
|
|
220
|
+
const fullPath = resolve(folder);
|
|
221
|
+
// Use -D to force delete even if not merged
|
|
222
|
+
gitSafe(["branch", "-D", branchName], fullPath);
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Check if a branch exists
|
|
226
|
+
*/
|
|
227
|
+
export function branchExists(folder, branchName) {
|
|
228
|
+
const fullPath = resolve(folder);
|
|
229
|
+
const result = gitSafe(["rev-parse", "--verify", branchName], fullPath);
|
|
230
|
+
return result !== null;
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=git.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/lib/git.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Exit codes for CLI commands
|
|
3
|
+
*/
|
|
4
|
+
export declare const ExitCode: {
|
|
5
|
+
readonly SUCCESS: 0;
|
|
6
|
+
readonly CONFLICT: 1;
|
|
7
|
+
readonly NOT_FOUND: 2;
|
|
8
|
+
readonly NOT_GIT_REPO: 3;
|
|
9
|
+
readonly NETWORK_ERROR: 4;
|
|
10
|
+
readonly DIRTY_WORKSPACE: 5;
|
|
11
|
+
readonly TIMEOUT: 6;
|
|
12
|
+
readonly NO_CHANGES: 7;
|
|
13
|
+
};
|
|
14
|
+
export type ExitCodeType = (typeof ExitCode)[keyof typeof ExitCode];
|
|
15
|
+
/**
|
|
16
|
+
* Output options for commands
|
|
17
|
+
*/
|
|
18
|
+
export interface OutputOptions {
|
|
19
|
+
json?: boolean;
|
|
20
|
+
quiet?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Error response structure
|
|
24
|
+
*/
|
|
25
|
+
export interface ErrorResponse {
|
|
26
|
+
error: string;
|
|
27
|
+
message?: string;
|
|
28
|
+
[key: string]: unknown;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Output data to console based on options
|
|
32
|
+
*/
|
|
33
|
+
export declare function output(data: unknown, options: OutputOptions): void;
|
|
34
|
+
/**
|
|
35
|
+
* Exit with an error code and message
|
|
36
|
+
*/
|
|
37
|
+
export declare function exitWithError(code: ExitCodeType, error: ErrorResponse, options: OutputOptions): never;
|
|
38
|
+
/**
|
|
39
|
+
* Success exit
|
|
40
|
+
*/
|
|
41
|
+
export declare function exitSuccess(data: unknown, options: OutputOptions): never;
|
|
42
|
+
//# sourceMappingURL=output.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;CASX,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CASlE;AAsED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,aAAa,GACrB,KAAK,CAiBP;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,GAAG,KAAK,CAGxE"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
/**
|
|
3
|
+
* Exit codes for CLI commands
|
|
4
|
+
*/
|
|
5
|
+
export const ExitCode = {
|
|
6
|
+
SUCCESS: 0,
|
|
7
|
+
CONFLICT: 1,
|
|
8
|
+
NOT_FOUND: 2,
|
|
9
|
+
NOT_GIT_REPO: 3,
|
|
10
|
+
NETWORK_ERROR: 4,
|
|
11
|
+
DIRTY_WORKSPACE: 5,
|
|
12
|
+
TIMEOUT: 6,
|
|
13
|
+
NO_CHANGES: 7,
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Output data to console based on options
|
|
17
|
+
*/
|
|
18
|
+
export function output(data, options) {
|
|
19
|
+
if (options.quiet)
|
|
20
|
+
return;
|
|
21
|
+
if (options.json) {
|
|
22
|
+
console.log(JSON.stringify(data, null, 2));
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
// Pretty print for human consumption
|
|
26
|
+
prettyPrint(data);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Pretty print data for human consumption
|
|
31
|
+
*/
|
|
32
|
+
function prettyPrint(data) {
|
|
33
|
+
if (typeof data === "string") {
|
|
34
|
+
console.log(data);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (typeof data !== "object" || data === null) {
|
|
38
|
+
console.log(data);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const obj = data;
|
|
42
|
+
// Handle status messages
|
|
43
|
+
if ("status" in obj) {
|
|
44
|
+
const status = obj.status;
|
|
45
|
+
if (status === "deployed" || status === "applied" || status === "completed") {
|
|
46
|
+
console.log(chalk.green(`✓ ${status}`));
|
|
47
|
+
}
|
|
48
|
+
else if (status === "fetched") {
|
|
49
|
+
console.log(chalk.blue(`✓ ${status}`));
|
|
50
|
+
}
|
|
51
|
+
else if (status === "discarded") {
|
|
52
|
+
console.log(chalk.yellow(`✓ ${status}`));
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
console.log(chalk.dim(`Status: ${status}`));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// Print other fields
|
|
59
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
60
|
+
if (key === "status")
|
|
61
|
+
continue;
|
|
62
|
+
if (key === "error") {
|
|
63
|
+
console.log(chalk.red(`Error: ${value}`));
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
if (Array.isArray(value)) {
|
|
67
|
+
console.log(chalk.dim(`${formatKey(key)}: ${value.length} items`));
|
|
68
|
+
for (const item of value.slice(0, 10)) {
|
|
69
|
+
console.log(chalk.dim(` - ${typeof item === "object" ? JSON.stringify(item) : item}`));
|
|
70
|
+
}
|
|
71
|
+
if (value.length > 10) {
|
|
72
|
+
console.log(chalk.dim(` ... and ${value.length - 10} more`));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
else if (typeof value === "object" && value !== null) {
|
|
76
|
+
console.log(chalk.dim(`${formatKey(key)}:`));
|
|
77
|
+
for (const [subKey, subValue] of Object.entries(value)) {
|
|
78
|
+
console.log(chalk.dim(` ${formatKey(subKey)}: ${subValue}`));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
console.log(chalk.dim(`${formatKey(key)}: ${value}`));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Format a camelCase or snake_case key for display
|
|
88
|
+
*/
|
|
89
|
+
function formatKey(key) {
|
|
90
|
+
return key
|
|
91
|
+
.replace(/_/g, " ")
|
|
92
|
+
.replace(/([A-Z])/g, " $1")
|
|
93
|
+
.toLowerCase()
|
|
94
|
+
.replace(/^\w/, (c) => c.toUpperCase());
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Exit with an error code and message
|
|
98
|
+
*/
|
|
99
|
+
export function exitWithError(code, error, options) {
|
|
100
|
+
if (options.quiet) {
|
|
101
|
+
process.exit(code);
|
|
102
|
+
}
|
|
103
|
+
if (options.json) {
|
|
104
|
+
console.log(JSON.stringify(error, null, 2));
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
console.log(chalk.red(`\nError: ${error.message || error.error}`));
|
|
108
|
+
if (error.files && Array.isArray(error.files)) {
|
|
109
|
+
for (const file of error.files) {
|
|
110
|
+
console.log(chalk.dim(` - ${file}`));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
process.exit(code);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Success exit
|
|
118
|
+
*/
|
|
119
|
+
export function exitSuccess(data, options) {
|
|
120
|
+
output(data, options);
|
|
121
|
+
process.exit(ExitCode.SUCCESS);
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chucky.cloud/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "CLI for deploying AI agent workspaces to Chucky cloud - build and ship Claude-powered assistants",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"url": "https://github.com/Chucky-Cloud/chucky-cli/issues"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@chucky.cloud/sdk": "^0.
|
|
42
|
+
"@chucky.cloud/sdk": "^0.3.4",
|
|
43
43
|
"@inquirer/prompts": "^7.0.0",
|
|
44
44
|
"archiver": "^7.0.1",
|
|
45
45
|
"chalk": "^5.3.0",
|