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.
Files changed (50) hide show
  1. package/README.md +339 -0
  2. package/dist/build.d.ts +19 -0
  3. package/dist/build.d.ts.map +1 -0
  4. package/dist/build.js +384 -0
  5. package/dist/build.js.map +1 -0
  6. package/dist/bundler/build-bundler.d.ts +9 -0
  7. package/dist/bundler/build-bundler.d.ts.map +1 -0
  8. package/dist/bundler/build-bundler.js +218 -0
  9. package/dist/bundler/build-bundler.js.map +1 -0
  10. package/dist/bundler/package-merger.d.ts +21 -0
  11. package/dist/bundler/package-merger.d.ts.map +1 -0
  12. package/dist/bundler/package-merger.js +192 -0
  13. package/dist/bundler/package-merger.js.map +1 -0
  14. package/dist/bundler/vite-generator.d.ts +14 -0
  15. package/dist/bundler/vite-generator.d.ts.map +1 -0
  16. package/dist/bundler/vite-generator.js +186 -0
  17. package/dist/bundler/vite-generator.js.map +1 -0
  18. package/dist/config.d.ts +250 -0
  19. package/dist/config.d.ts.map +1 -0
  20. package/dist/config.js +268 -0
  21. package/dist/config.js.map +1 -0
  22. package/dist/copy.d.ts +9 -0
  23. package/dist/copy.d.ts.map +1 -0
  24. package/dist/copy.js +56 -0
  25. package/dist/copy.js.map +1 -0
  26. package/dist/git.d.ts +76 -0
  27. package/dist/git.d.ts.map +1 -0
  28. package/dist/git.js +377 -0
  29. package/dist/git.js.map +1 -0
  30. package/dist/index-update-base.d.ts +2 -0
  31. package/dist/index-update-base.d.ts.map +1 -0
  32. package/dist/index-update-base.js +76 -0
  33. package/dist/index-update-base.js.map +1 -0
  34. package/dist/index.d.ts +3 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +626 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/lock.d.ts +39 -0
  39. package/dist/lock.d.ts.map +1 -0
  40. package/dist/lock.js +91 -0
  41. package/dist/lock.js.map +1 -0
  42. package/dist/logger.d.ts +42 -0
  43. package/dist/logger.d.ts.map +1 -0
  44. package/dist/logger.js +90 -0
  45. package/dist/logger.js.map +1 -0
  46. package/dist/status.d.ts +23 -0
  47. package/dist/status.d.ts.map +1 -0
  48. package/dist/status.js +158 -0
  49. package/dist/status.js.map +1 -0
  50. 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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index-update-base.d.ts.map
@@ -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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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}