workspace-manager-cli 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +339 -0
- package/dist/build.d.ts +19 -0
- package/dist/build.d.ts.map +1 -0
- package/dist/build.js +384 -0
- package/dist/build.js.map +1 -0
- package/dist/bundler/build-bundler.d.ts +9 -0
- package/dist/bundler/build-bundler.d.ts.map +1 -0
- package/dist/bundler/build-bundler.js +218 -0
- package/dist/bundler/build-bundler.js.map +1 -0
- package/dist/bundler/package-merger.d.ts +21 -0
- package/dist/bundler/package-merger.d.ts.map +1 -0
- package/dist/bundler/package-merger.js +192 -0
- package/dist/bundler/package-merger.js.map +1 -0
- package/dist/bundler/vite-generator.d.ts +14 -0
- package/dist/bundler/vite-generator.d.ts.map +1 -0
- package/dist/bundler/vite-generator.js +186 -0
- package/dist/bundler/vite-generator.js.map +1 -0
- package/dist/config.d.ts +250 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +268 -0
- package/dist/config.js.map +1 -0
- package/dist/copy.d.ts +9 -0
- package/dist/copy.d.ts.map +1 -0
- package/dist/copy.js +56 -0
- package/dist/copy.js.map +1 -0
- package/dist/git.d.ts +76 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +377 -0
- package/dist/git.js.map +1 -0
- package/dist/index-update-base.d.ts +2 -0
- package/dist/index-update-base.d.ts.map +1 -0
- package/dist/index-update-base.js +76 -0
- package/dist/index-update-base.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +626 -0
- package/dist/index.js.map +1 -0
- package/dist/lock.d.ts +39 -0
- package/dist/lock.d.ts.map +1 -0
- package/dist/lock.js +91 -0
- package/dist/lock.js.map +1 -0
- package/dist/logger.d.ts +42 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +90 -0
- package/dist/logger.js.map +1 -0
- package/dist/status.d.ts +23 -0
- package/dist/status.d.ts.map +1 -0
- package/dist/status.js +158 -0
- package/dist/status.js.map +1 -0
- package/package.json +47 -0
package/dist/git.d.ts
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { ResolvedConfig } from "./config.js";
|
|
2
|
+
import { Logger } from "./logger.js";
|
|
3
|
+
export interface GitInfo {
|
|
4
|
+
commit: string;
|
|
5
|
+
branch: string;
|
|
6
|
+
ref: string;
|
|
7
|
+
isClean: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Check if a directory is a git repository
|
|
11
|
+
*/
|
|
12
|
+
export declare function isGitRepo(dir: string): Promise<boolean>;
|
|
13
|
+
/**
|
|
14
|
+
* Clone a repository to the cache directory (legacy - for core-custom type)
|
|
15
|
+
*/
|
|
16
|
+
export declare function cloneToCache(config: ResolvedConfig, logger: Logger): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Fetch latest from remote
|
|
19
|
+
*/
|
|
20
|
+
export declare function fetchLatest(cachePath: string, logger: Logger): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Information about available updates
|
|
23
|
+
*/
|
|
24
|
+
export interface UpdateInfo {
|
|
25
|
+
hasUpdates: boolean;
|
|
26
|
+
currentCommit: string;
|
|
27
|
+
latestCommit: string;
|
|
28
|
+
behindCount: number;
|
|
29
|
+
latestMessage?: string;
|
|
30
|
+
latestDate?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Check if there are new commits available on remote
|
|
34
|
+
*/
|
|
35
|
+
export declare function checkForUpdates(cachePath: string, branch: string, logger: Logger): Promise<UpdateInfo>;
|
|
36
|
+
export interface RemoteRefs {
|
|
37
|
+
branches: string[];
|
|
38
|
+
tags: string[];
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* List remote branches and tags from the repository
|
|
42
|
+
*/
|
|
43
|
+
export declare function listRemoteRefs(cachePath: string, logger: Logger): Promise<RemoteRefs>;
|
|
44
|
+
/**
|
|
45
|
+
* List remote refs directly from URL (before cloning)
|
|
46
|
+
*/
|
|
47
|
+
export declare function listRemoteRefsFromUrl(url: string, logger: Logger): Promise<RemoteRefs>;
|
|
48
|
+
/**
|
|
49
|
+
* Checkout a specific ref (branch, tag, or commit)
|
|
50
|
+
*/
|
|
51
|
+
export declare function checkoutRef(cachePath: string, ref: string, logger: Logger): Promise<string>;
|
|
52
|
+
/**
|
|
53
|
+
* Get current git info from cache
|
|
54
|
+
*/
|
|
55
|
+
export declare function getGitInfo(cachePath: string): Promise<GitInfo | null>;
|
|
56
|
+
/**
|
|
57
|
+
* Get the source path for core files (cache or local)
|
|
58
|
+
*/
|
|
59
|
+
export declare function getCorePath(config: ResolvedConfig): string;
|
|
60
|
+
/**
|
|
61
|
+
* Get the source path for base files (cache)
|
|
62
|
+
*/
|
|
63
|
+
export declare function getBasePath(config: ResolvedConfig): string | undefined;
|
|
64
|
+
/**
|
|
65
|
+
* Clone base repository to cache
|
|
66
|
+
*/
|
|
67
|
+
export declare function cloneBaseToCache(config: ResolvedConfig, logger: Logger): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Clone core repository to cache (for remote core)
|
|
70
|
+
*/
|
|
71
|
+
export declare function cloneCoreToCache(config: ResolvedConfig, logger: Logger): Promise<void>;
|
|
72
|
+
/**
|
|
73
|
+
* Check if custom directory has uncommitted changes
|
|
74
|
+
*/
|
|
75
|
+
export declare function hasCustomChanges(config: ResolvedConfig): Promise<boolean>;
|
|
76
|
+
//# sourceMappingURL=git.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;CAClB;AAeD;;GAEG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAW7D;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CA4Bf;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CASf;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,CAAC,CAkFrB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,CAAC,CAkBrB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,CAAC,CA8BrB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CA2CjB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CA+B3E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAoB1D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAMtE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAyBf;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAyBf;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,OAAO,CAAC,CA2BlB"}
|
package/dist/git.js
ADDED
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
import { simpleGit } from "simple-git";
|
|
2
|
+
import fs from "fs-extra";
|
|
3
|
+
import path from "path";
|
|
4
|
+
/**
|
|
5
|
+
* Create a simple-git instance with proper options
|
|
6
|
+
*/
|
|
7
|
+
function createGit(baseDir) {
|
|
8
|
+
const options = {
|
|
9
|
+
baseDir: baseDir || process.cwd(),
|
|
10
|
+
binary: "git",
|
|
11
|
+
maxConcurrentProcesses: 6,
|
|
12
|
+
trimmed: true,
|
|
13
|
+
};
|
|
14
|
+
return simpleGit(options);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Check if a directory is a git repository
|
|
18
|
+
*/
|
|
19
|
+
export async function isGitRepo(dir) {
|
|
20
|
+
if (!(await fs.pathExists(dir))) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
const git = createGit(dir);
|
|
25
|
+
await git.revparse(["--git-dir"]);
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Clone a repository to the cache directory (legacy - for core-custom type)
|
|
34
|
+
*/
|
|
35
|
+
export async function cloneToCache(config, logger) {
|
|
36
|
+
const { cachePath } = config;
|
|
37
|
+
if (!config.core || !("url" in config.core)) {
|
|
38
|
+
throw new Error("No remote core repository configured");
|
|
39
|
+
}
|
|
40
|
+
const coreUrl = config.core.url;
|
|
41
|
+
const coreName = config.core.name;
|
|
42
|
+
// Ensure parent directory exists
|
|
43
|
+
await fs.ensureDir(path.dirname(cachePath));
|
|
44
|
+
if (await isGitRepo(cachePath)) {
|
|
45
|
+
logger.info(`Cache already exists at ${cachePath}`);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
// Remove cache dir if it exists but isn't a git repo
|
|
49
|
+
if (await fs.pathExists(cachePath)) {
|
|
50
|
+
logger.info(`Removing invalid cache at ${cachePath}`);
|
|
51
|
+
await fs.remove(cachePath);
|
|
52
|
+
}
|
|
53
|
+
logger.info(`Cloning ${coreUrl} to ${cachePath}...`);
|
|
54
|
+
const git = createGit();
|
|
55
|
+
await git.clone(coreUrl, cachePath, ["--no-checkout"]);
|
|
56
|
+
logger.success(`Cloned ${coreName} to cache`);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Fetch latest from remote
|
|
60
|
+
*/
|
|
61
|
+
export async function fetchLatest(cachePath, logger) {
|
|
62
|
+
if (!(await isGitRepo(cachePath))) {
|
|
63
|
+
throw new Error(`Cache path ${cachePath} is not a git repository`);
|
|
64
|
+
}
|
|
65
|
+
logger.info("Fetching latest from remote...");
|
|
66
|
+
const git = createGit(cachePath);
|
|
67
|
+
await git.fetch(["--all", "--prune", "--tags"]);
|
|
68
|
+
logger.success("Fetched latest changes");
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Check if there are new commits available on remote
|
|
72
|
+
*/
|
|
73
|
+
export async function checkForUpdates(cachePath, branch, logger) {
|
|
74
|
+
if (!(await isGitRepo(cachePath))) {
|
|
75
|
+
throw new Error(`Cache path ${cachePath} is not a git repository`);
|
|
76
|
+
}
|
|
77
|
+
const git = createGit(cachePath);
|
|
78
|
+
// Fetch latest without logging
|
|
79
|
+
try {
|
|
80
|
+
await git.fetch(["--all", "--prune"]);
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
// Ignore fetch errors, continue with local info
|
|
84
|
+
}
|
|
85
|
+
// Get current HEAD commit
|
|
86
|
+
const currentCommit = await git.revparse(["HEAD"]);
|
|
87
|
+
// Try to get remote branch commit
|
|
88
|
+
let latestCommit;
|
|
89
|
+
try {
|
|
90
|
+
latestCommit = await git.revparse([`origin/${branch}`]);
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
// Branch might not exist on remote, try as-is
|
|
94
|
+
try {
|
|
95
|
+
latestCommit = await git.revparse([branch]);
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
return {
|
|
99
|
+
hasUpdates: false,
|
|
100
|
+
currentCommit: currentCommit.substring(0, 7),
|
|
101
|
+
latestCommit: currentCommit.substring(0, 7),
|
|
102
|
+
behindCount: 0,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Check if same
|
|
107
|
+
if (currentCommit === latestCommit) {
|
|
108
|
+
return {
|
|
109
|
+
hasUpdates: false,
|
|
110
|
+
currentCommit: currentCommit.substring(0, 7),
|
|
111
|
+
latestCommit: latestCommit.substring(0, 7),
|
|
112
|
+
behindCount: 0,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
// Count commits behind
|
|
116
|
+
let behindCount = 0;
|
|
117
|
+
try {
|
|
118
|
+
const log = await git.log({
|
|
119
|
+
from: currentCommit,
|
|
120
|
+
to: latestCommit,
|
|
121
|
+
});
|
|
122
|
+
behindCount = log.total;
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
behindCount = 1; // At least 1 if different commits
|
|
126
|
+
}
|
|
127
|
+
// Get latest commit info
|
|
128
|
+
let latestMessage;
|
|
129
|
+
let latestDate;
|
|
130
|
+
try {
|
|
131
|
+
const log = await git.log({
|
|
132
|
+
from: latestCommit + "~1",
|
|
133
|
+
to: latestCommit,
|
|
134
|
+
maxCount: 1,
|
|
135
|
+
});
|
|
136
|
+
if (log.latest) {
|
|
137
|
+
latestMessage = log.latest.message.split("\n")[0]; // First line only
|
|
138
|
+
latestDate = log.latest.date;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
// Ignore errors getting commit details
|
|
143
|
+
}
|
|
144
|
+
return {
|
|
145
|
+
hasUpdates: true,
|
|
146
|
+
currentCommit: currentCommit.substring(0, 7),
|
|
147
|
+
latestCommit: latestCommit.substring(0, 7),
|
|
148
|
+
behindCount,
|
|
149
|
+
latestMessage,
|
|
150
|
+
latestDate,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* List remote branches and tags from the repository
|
|
155
|
+
*/
|
|
156
|
+
export async function listRemoteRefs(cachePath, logger) {
|
|
157
|
+
if (!(await isGitRepo(cachePath))) {
|
|
158
|
+
throw new Error(`Cache path ${cachePath} is not a git repository`);
|
|
159
|
+
}
|
|
160
|
+
const git = createGit(cachePath);
|
|
161
|
+
// Get remote branches
|
|
162
|
+
const branchResult = await git.branch(["-r"]);
|
|
163
|
+
const branches = branchResult.all
|
|
164
|
+
.map((b) => b.replace(/^origin\//, ""))
|
|
165
|
+
.filter((b) => b && !b.includes("HEAD") && !b.includes("->"));
|
|
166
|
+
// Get tags
|
|
167
|
+
const tagResult = await git.tags();
|
|
168
|
+
const tags = tagResult.all;
|
|
169
|
+
return { branches, tags };
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* List remote refs directly from URL (before cloning)
|
|
173
|
+
*/
|
|
174
|
+
export async function listRemoteRefsFromUrl(url, logger) {
|
|
175
|
+
const git = createGit();
|
|
176
|
+
logger.info(`Fetching refs from ${url}...`);
|
|
177
|
+
// Use ls-remote to get refs without cloning
|
|
178
|
+
const result = await git.listRemote(["--refs", url]);
|
|
179
|
+
const branches = [];
|
|
180
|
+
const tags = [];
|
|
181
|
+
const lines = result.split("\n").filter((line) => line.trim());
|
|
182
|
+
for (const line of lines) {
|
|
183
|
+
const parts = line.split("\t");
|
|
184
|
+
if (parts.length >= 2) {
|
|
185
|
+
const ref = parts[1];
|
|
186
|
+
if (ref.startsWith("refs/heads/")) {
|
|
187
|
+
branches.push(ref.replace("refs/heads/", ""));
|
|
188
|
+
}
|
|
189
|
+
else if (ref.startsWith("refs/tags/")) {
|
|
190
|
+
const tag = ref.replace("refs/tags/", "");
|
|
191
|
+
// Skip annotated tag references (^{})
|
|
192
|
+
if (!tag.includes("^{}")) {
|
|
193
|
+
tags.push(tag);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return { branches, tags };
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Checkout a specific ref (branch, tag, or commit)
|
|
202
|
+
*/
|
|
203
|
+
export async function checkoutRef(cachePath, ref, logger) {
|
|
204
|
+
if (!(await isGitRepo(cachePath))) {
|
|
205
|
+
throw new Error(`Cache path ${cachePath} is not a git repository`);
|
|
206
|
+
}
|
|
207
|
+
const git = createGit(cachePath);
|
|
208
|
+
logger.info(`Checking out ${ref}...`);
|
|
209
|
+
// Try to checkout the ref
|
|
210
|
+
const remoteMatch = ref.match(/^origin\/(.+)$/);
|
|
211
|
+
try {
|
|
212
|
+
if (remoteMatch && remoteMatch[1]) {
|
|
213
|
+
// If ref is origin/<branch>, create/update a local branch to avoid detached HEAD
|
|
214
|
+
await git.checkout(["-B", remoteMatch[1], ref]);
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
// First try to checkout as an existing local branch or tag
|
|
218
|
+
await git.checkout([ref]);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
try {
|
|
223
|
+
// If it's a remote branch, create/update a local branch tracking origin/<ref>
|
|
224
|
+
await git.checkout(["-B", ref, `origin/${ref}`]);
|
|
225
|
+
}
|
|
226
|
+
catch {
|
|
227
|
+
try {
|
|
228
|
+
// Fallback: direct ref (tag or commit) in detached mode
|
|
229
|
+
await git.checkout([ref, "--force"]);
|
|
230
|
+
}
|
|
231
|
+
catch (err) {
|
|
232
|
+
throw new Error(`Failed to checkout ref '${ref}': ${err instanceof Error ? err.message : err}`);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
// Get the resolved commit SHA
|
|
237
|
+
const commit = await git.revparse(["HEAD"]);
|
|
238
|
+
logger.success(`Checked out ${ref} (${commit.substring(0, 8)})`);
|
|
239
|
+
return commit;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Get current git info from cache
|
|
243
|
+
*/
|
|
244
|
+
export async function getGitInfo(cachePath) {
|
|
245
|
+
if (!(await isGitRepo(cachePath))) {
|
|
246
|
+
return null;
|
|
247
|
+
}
|
|
248
|
+
const git = createGit(cachePath);
|
|
249
|
+
try {
|
|
250
|
+
const commit = await git.revparse(["HEAD"]);
|
|
251
|
+
const status = await git.status();
|
|
252
|
+
let branch = "detached";
|
|
253
|
+
try {
|
|
254
|
+
branch = await git.revparse(["--abbrev-ref", "HEAD"]);
|
|
255
|
+
branch = branch.trim();
|
|
256
|
+
if (branch === "HEAD") {
|
|
257
|
+
branch = "detached";
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
catch {
|
|
261
|
+
// Ignore errors for detached HEAD
|
|
262
|
+
}
|
|
263
|
+
return {
|
|
264
|
+
commit: commit.trim(),
|
|
265
|
+
branch,
|
|
266
|
+
ref: branch !== "detached" ? branch : commit.substring(0, 8),
|
|
267
|
+
isClean: status.isClean(),
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
catch {
|
|
271
|
+
return null;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Get the source path for core files (cache or local)
|
|
276
|
+
*/
|
|
277
|
+
export function getCorePath(config) {
|
|
278
|
+
// console.log("getCorePath: ", config);
|
|
279
|
+
// If explicit core source path override is provided, use it
|
|
280
|
+
if (config.coreSrcPath) {
|
|
281
|
+
return config.coreSrcPath;
|
|
282
|
+
}
|
|
283
|
+
// For base-core type, core is local
|
|
284
|
+
if (config.projectType === "base-core" && config.coreLocalPath) {
|
|
285
|
+
return config.coreLocalPath;
|
|
286
|
+
}
|
|
287
|
+
// For core-custom and base-core-custom, core is remote (cached)
|
|
288
|
+
if (config.coreCachePath) {
|
|
289
|
+
return config.coreCachePath;
|
|
290
|
+
}
|
|
291
|
+
// Legacy fallback
|
|
292
|
+
return config.cachePath;
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Get the source path for base files (cache)
|
|
296
|
+
*/
|
|
297
|
+
export function getBasePath(config) {
|
|
298
|
+
if (!config.base || !config.baseCachePath) {
|
|
299
|
+
return undefined;
|
|
300
|
+
}
|
|
301
|
+
return config.baseCachePath;
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Clone base repository to cache
|
|
305
|
+
*/
|
|
306
|
+
export async function cloneBaseToCache(config, logger) {
|
|
307
|
+
if (!config.base || !config.baseCachePath) {
|
|
308
|
+
throw new Error("No base repository configured");
|
|
309
|
+
}
|
|
310
|
+
const cachePath = config.baseCachePath;
|
|
311
|
+
// Ensure parent directory exists
|
|
312
|
+
await fs.ensureDir(path.dirname(cachePath));
|
|
313
|
+
if (await isGitRepo(cachePath)) {
|
|
314
|
+
logger.info(`Base cache already exists at ${cachePath}`);
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
317
|
+
// Remove cache dir if it exists but isn't a git repo
|
|
318
|
+
if (await fs.pathExists(cachePath)) {
|
|
319
|
+
logger.info(`Removing invalid base cache at ${cachePath}`);
|
|
320
|
+
await fs.remove(cachePath);
|
|
321
|
+
}
|
|
322
|
+
logger.info(`Cloning ${config.base.url} to ${cachePath}...`);
|
|
323
|
+
const git = createGit();
|
|
324
|
+
await git.clone(config.base.url, cachePath, ["--no-checkout"]);
|
|
325
|
+
logger.success(`Cloned ${config.base.name} to cache`);
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Clone core repository to cache (for remote core)
|
|
329
|
+
*/
|
|
330
|
+
export async function cloneCoreToCache(config, logger) {
|
|
331
|
+
if (!config.core || !("url" in config.core) || !config.coreCachePath) {
|
|
332
|
+
throw new Error("No remote core repository configured");
|
|
333
|
+
}
|
|
334
|
+
const cachePath = config.coreCachePath;
|
|
335
|
+
// Ensure parent directory exists
|
|
336
|
+
await fs.ensureDir(path.dirname(cachePath));
|
|
337
|
+
if (await isGitRepo(cachePath)) {
|
|
338
|
+
logger.info(`Core cache already exists at ${cachePath}`);
|
|
339
|
+
return;
|
|
340
|
+
}
|
|
341
|
+
// Remove cache dir if it exists but isn't a git repo
|
|
342
|
+
if (await fs.pathExists(cachePath)) {
|
|
343
|
+
logger.info(`Removing invalid core cache at ${cachePath}`);
|
|
344
|
+
await fs.remove(cachePath);
|
|
345
|
+
}
|
|
346
|
+
logger.info(`Cloning ${config.core.url} to ${cachePath}...`);
|
|
347
|
+
const git = createGit();
|
|
348
|
+
await git.clone(config.core.url, cachePath, ["--no-checkout"]);
|
|
349
|
+
logger.success(`Cloned ${config.core.name} to cache`);
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Check if custom directory has uncommitted changes
|
|
353
|
+
*/
|
|
354
|
+
export async function hasCustomChanges(config) {
|
|
355
|
+
if (!config.customPath || !(await fs.pathExists(config.customPath))) {
|
|
356
|
+
return false;
|
|
357
|
+
}
|
|
358
|
+
try {
|
|
359
|
+
const git = createGit(config.projectRoot);
|
|
360
|
+
const status = await git.status();
|
|
361
|
+
// Check if any modified/staged files are in the custom path
|
|
362
|
+
const customRelative = path.relative(config.projectRoot, config.customPath);
|
|
363
|
+
const allFiles = [
|
|
364
|
+
...status.modified,
|
|
365
|
+
...status.created,
|
|
366
|
+
...status.deleted,
|
|
367
|
+
...status.staged,
|
|
368
|
+
...status.not_added,
|
|
369
|
+
];
|
|
370
|
+
return allFiles.some((file) => file.startsWith(customRelative) ||
|
|
371
|
+
file.startsWith(customRelative.replace(/\\/g, "/")));
|
|
372
|
+
}
|
|
373
|
+
catch {
|
|
374
|
+
return false;
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
//# sourceMappingURL=git.js.map
|
package/dist/git.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-update-base.d.ts","sourceRoot":"","sources":["../src/index-update-base.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// This is the update-base command to insert before update-core
|
|
2
|
+
// Copy and paste into index.ts at line 673 (before the update-core comment)
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// update-base command
|
|
5
|
+
// ============================================================================
|
|
6
|
+
program
|
|
7
|
+
.command("update-base")
|
|
8
|
+
.description("Fetch latest for base ref, update cache, then rebuild")
|
|
9
|
+
.option("--ref <ref>", "Override the ref to checkout")
|
|
10
|
+
.option("--latest", "Fetch and checkout the latest commit on the configured branch")
|
|
11
|
+
.option("--no-build", "Skip rebuilding after update")
|
|
12
|
+
.option("--no-install", "Skip running install command during build")
|
|
13
|
+
.action(async (cmdOptions) => {
|
|
14
|
+
const options = program.opts();
|
|
15
|
+
const { logger, config } = await setup(options);
|
|
16
|
+
try {
|
|
17
|
+
// Get base ref - only valid for projects with base
|
|
18
|
+
if (!config.base) {
|
|
19
|
+
throw new Error("update-base is only valid for projects with a base repository");
|
|
20
|
+
}
|
|
21
|
+
const ref = cmdOptions.ref || config.base.ref;
|
|
22
|
+
let commit;
|
|
23
|
+
// Fetch latest and checkout
|
|
24
|
+
await fetchLatest(config.baseCachePath, logger);
|
|
25
|
+
if (cmdOptions.latest) {
|
|
26
|
+
// --latest: checkout to origin/<ref> HEAD
|
|
27
|
+
logger.info(`Updating to latest on origin/${ref}...`);
|
|
28
|
+
commit = await checkoutRef(config.baseCachePath, `origin/${ref}`, logger);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
commit = await checkoutRef(config.baseCachePath, ref, logger);
|
|
32
|
+
}
|
|
33
|
+
config.base.hash = commit;
|
|
34
|
+
await persistHashesToWorkspaceConfig(config, { baseHash: commit }, logger);
|
|
35
|
+
// Rebuild unless --no-build
|
|
36
|
+
if (cmdOptions.build !== false) {
|
|
37
|
+
logger.info("Rebuilding workspace...");
|
|
38
|
+
const result = await buildWorkspace(config, logger, {
|
|
39
|
+
noInstall: !cmdOptions.install,
|
|
40
|
+
});
|
|
41
|
+
if (options.json) {
|
|
42
|
+
logger.outputJson({
|
|
43
|
+
command: "update-base",
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
if (!result.success) {
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
logger.success("Base updated (build skipped)");
|
|
52
|
+
if (options.json) {
|
|
53
|
+
logger.outputJson({
|
|
54
|
+
command: "update-base",
|
|
55
|
+
success: true,
|
|
56
|
+
ref,
|
|
57
|
+
commit,
|
|
58
|
+
buildSkipped: true,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
logger.error(err instanceof Error ? err.message : String(err));
|
|
65
|
+
if (options.json) {
|
|
66
|
+
logger.outputJson({
|
|
67
|
+
command: "update-base",
|
|
68
|
+
success: false,
|
|
69
|
+
error: String(err),
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
process.exit(1);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
export {};
|
|
76
|
+
//# sourceMappingURL=index-update-base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-update-base.js","sourceRoot":"","sources":["../src/index-update-base.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|