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/lock.d.ts ADDED
@@ -0,0 +1,39 @@
1
+ import type { ResolvedConfig } from "./config.js";
2
+ import { Logger } from "./logger.js";
3
+ export interface LockFile {
4
+ core?: {
5
+ name: string;
6
+ url?: string;
7
+ ref?: string;
8
+ commit: string;
9
+ };
10
+ base?: {
11
+ name: string;
12
+ url: string;
13
+ ref: string;
14
+ commit: string;
15
+ };
16
+ lockedAt: string;
17
+ version: string;
18
+ }
19
+ /**
20
+ * Read the lock file if it exists
21
+ */
22
+ export declare function readLockFile(config: ResolvedConfig): Promise<LockFile | null>;
23
+ /**
24
+ * Write the lock file with the current commit(s)
25
+ */
26
+ export declare function writeLockFile(config: ResolvedConfig, commit: string, logger: Logger, baseCommit?: string): Promise<void>;
27
+ /**
28
+ * Get the locked commit SHA if available
29
+ */
30
+ export declare function getLockedCommit(config: ResolvedConfig): Promise<string | null>;
31
+ /**
32
+ * Get the locked base commit SHA if available
33
+ */
34
+ export declare function getLockedBaseCommit(config: ResolvedConfig): Promise<string | null>;
35
+ /**
36
+ * Check if the lock file matches the current config
37
+ */
38
+ export declare function isLockFileValid(config: ResolvedConfig): Promise<boolean>;
39
+ //# sourceMappingURL=lock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../src/lock.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,WAAW,QAAQ;IACvB,IAAI,CAAC,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,IAAI,CAAC,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAID;;GAEG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAY1B;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAiCf;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,OAAO,CAAC,CA2BlB"}
package/dist/lock.js ADDED
@@ -0,0 +1,91 @@
1
+ import fs from "fs-extra";
2
+ import { getCoreInfo, getBaseInfo } from "./config.js";
3
+ const LOCK_VERSION = "1.0";
4
+ /**
5
+ * Read the lock file if it exists
6
+ */
7
+ export async function readLockFile(config) {
8
+ if (!(await fs.pathExists(config.lockFilePath))) {
9
+ return null;
10
+ }
11
+ try {
12
+ const content = await fs.readFile(config.lockFilePath, "utf-8");
13
+ const data = JSON.parse(content);
14
+ return data;
15
+ }
16
+ catch {
17
+ return null;
18
+ }
19
+ }
20
+ /**
21
+ * Write the lock file with the current commit(s)
22
+ */
23
+ export async function writeLockFile(config, commit, logger, baseCommit) {
24
+ const lockData = {
25
+ lockedAt: new Date().toISOString(),
26
+ version: LOCK_VERSION,
27
+ };
28
+ const coreInfo = getCoreInfo(config);
29
+ if (coreInfo) {
30
+ lockData.core = {
31
+ name: coreInfo.name,
32
+ commit,
33
+ };
34
+ if (coreInfo.url)
35
+ lockData.core.url = coreInfo.url;
36
+ if (coreInfo.ref)
37
+ lockData.core.ref = coreInfo.ref;
38
+ }
39
+ const baseInfo = getBaseInfo(config);
40
+ if (baseInfo && baseCommit) {
41
+ lockData.base = {
42
+ name: baseInfo.name,
43
+ url: baseInfo.url,
44
+ ref: baseInfo.ref,
45
+ commit: baseCommit,
46
+ };
47
+ }
48
+ await fs.writeFile(config.lockFilePath, JSON.stringify(lockData, null, 2) + "\n", "utf-8");
49
+ logger.success(`Wrote lock file: ${config.lockFilePath}`);
50
+ }
51
+ /**
52
+ * Get the locked commit SHA if available
53
+ */
54
+ export async function getLockedCommit(config) {
55
+ const lockFile = await readLockFile(config);
56
+ return lockFile?.core?.commit ?? null;
57
+ }
58
+ /**
59
+ * Get the locked base commit SHA if available
60
+ */
61
+ export async function getLockedBaseCommit(config) {
62
+ const lockFile = await readLockFile(config);
63
+ return lockFile?.base?.commit ?? null;
64
+ }
65
+ /**
66
+ * Check if the lock file matches the current config
67
+ */
68
+ export async function isLockFileValid(config) {
69
+ const lockFile = await readLockFile(config);
70
+ if (!lockFile) {
71
+ return false;
72
+ }
73
+ const coreInfo = getCoreInfo(config);
74
+ if (coreInfo && lockFile.core) {
75
+ const coreMatches = lockFile.core.name === coreInfo.name &&
76
+ lockFile.core.url === coreInfo.url &&
77
+ lockFile.core.ref === coreInfo.ref;
78
+ if (!coreMatches)
79
+ return false;
80
+ }
81
+ const baseInfo = getBaseInfo(config);
82
+ if (baseInfo && lockFile.base) {
83
+ const baseMatches = lockFile.base.name === baseInfo.name &&
84
+ lockFile.base.url === baseInfo.url &&
85
+ lockFile.base.ref === baseInfo.ref;
86
+ if (!baseMatches)
87
+ return false;
88
+ }
89
+ return true;
90
+ }
91
+ //# sourceMappingURL=lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock.js","sourceRoot":"","sources":["../src/lock.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ export interface LoggerOptions {
2
+ json?: boolean;
3
+ verbose?: boolean;
4
+ }
5
+ export interface LogEntry {
6
+ level: "info" | "warn" | "error" | "success" | "debug";
7
+ message: string;
8
+ timestamp: string;
9
+ data?: unknown;
10
+ }
11
+ /**
12
+ * Logger class for consistent CLI output
13
+ */
14
+ export declare class Logger {
15
+ private entries;
16
+ private jsonMode;
17
+ private verboseMode;
18
+ constructor(options?: LoggerOptions);
19
+ private log;
20
+ info(message: string, data?: unknown): void;
21
+ warn(message: string, data?: unknown): void;
22
+ error(message: string, data?: unknown): void;
23
+ success(message: string, data?: unknown): void;
24
+ debug(message: string, data?: unknown): void;
25
+ /**
26
+ * Output final JSON summary (for automation)
27
+ */
28
+ outputJson(summary: Record<string, unknown>): void;
29
+ /**
30
+ * Get all log entries
31
+ */
32
+ getEntries(): LogEntry[];
33
+ /**
34
+ * Check if any errors were logged
35
+ */
36
+ hasErrors(): boolean;
37
+ }
38
+ /**
39
+ * Create a logger instance
40
+ */
41
+ export declare function createLogger(options?: LoggerOptions): Logger;
42
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,WAAW,CAAU;gBAEjB,OAAO,GAAE,aAAkB;IAKvC,OAAO,CAAC,GAAG;IAmCX,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI3C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5C,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI9C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5C;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAelD;;OAEG;IACH,UAAU,IAAI,QAAQ,EAAE;IAIxB;;OAEG;IACH,SAAS,IAAI,OAAO;CAGrB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,aAAkB,GAAG,MAAM,CAEhE"}
package/dist/logger.js ADDED
@@ -0,0 +1,90 @@
1
+ import chalk from "chalk";
2
+ /**
3
+ * Logger class for consistent CLI output
4
+ */
5
+ export class Logger {
6
+ entries = [];
7
+ jsonMode;
8
+ verboseMode;
9
+ constructor(options = {}) {
10
+ this.jsonMode = options.json ?? false;
11
+ this.verboseMode = options.verbose ?? false;
12
+ }
13
+ log(level, message, data) {
14
+ const entry = {
15
+ level,
16
+ message,
17
+ timestamp: new Date().toISOString(),
18
+ data,
19
+ };
20
+ this.entries.push(entry);
21
+ if (this.jsonMode) {
22
+ // In JSON mode, collect entries and output at end
23
+ return;
24
+ }
25
+ switch (level) {
26
+ case "info":
27
+ console.log(chalk.blue("ℹ"), message);
28
+ break;
29
+ case "warn":
30
+ console.log(chalk.yellow("⚠"), message);
31
+ break;
32
+ case "error":
33
+ console.log(chalk.red("✖"), message);
34
+ break;
35
+ case "success":
36
+ console.log(chalk.green("✔"), message);
37
+ break;
38
+ case "debug":
39
+ if (this.verboseMode) {
40
+ console.log(chalk.gray("⋯"), message);
41
+ }
42
+ break;
43
+ }
44
+ }
45
+ info(message, data) {
46
+ this.log("info", message, data);
47
+ }
48
+ warn(message, data) {
49
+ this.log("warn", message, data);
50
+ }
51
+ error(message, data) {
52
+ this.log("error", message, data);
53
+ }
54
+ success(message, data) {
55
+ this.log("success", message, data);
56
+ }
57
+ debug(message, data) {
58
+ this.log("debug", message, data);
59
+ }
60
+ /**
61
+ * Output final JSON summary (for automation)
62
+ */
63
+ outputJson(summary) {
64
+ if (this.jsonMode) {
65
+ console.log(JSON.stringify({
66
+ ...summary,
67
+ logs: this.entries,
68
+ }, null, 2));
69
+ }
70
+ }
71
+ /**
72
+ * Get all log entries
73
+ */
74
+ getEntries() {
75
+ return [...this.entries];
76
+ }
77
+ /**
78
+ * Check if any errors were logged
79
+ */
80
+ hasErrors() {
81
+ return this.entries.some((e) => e.level === "error");
82
+ }
83
+ }
84
+ /**
85
+ * Create a logger instance
86
+ */
87
+ export function createLogger(options = {}) {
88
+ return new Logger(options);
89
+ }
90
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { ResolvedConfig } from "./config.js";
2
+ import { type UpdateInfo } from "./git.js";
3
+ import { Logger } from "./logger.js";
4
+ export interface StatusInfo {
5
+ coreInitialized: boolean;
6
+ coreCommit: string | null;
7
+ coreIsClean: boolean;
8
+ coreUpdates: UpdateInfo | null;
9
+ baseInitialized: boolean;
10
+ baseCommit: string | null;
11
+ baseIsClean: boolean;
12
+ baseUpdates: UpdateInfo | null;
13
+ customHasChanges: boolean;
14
+ }
15
+ /**
16
+ * Get the current status of the workspace
17
+ */
18
+ export declare function getStatus(config: ResolvedConfig, logger: Logger): Promise<StatusInfo>;
19
+ /**
20
+ * Print status to console
21
+ */
22
+ export declare function printStatus(config: ResolvedConfig, status: StatusInfo, logger: Logger, jsonMode: boolean): void;
23
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAOlD,OAAO,EAOL,KAAK,UAAU,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,CAAC,CAoErB;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,OAAO,GAChB,IAAI,CAuHN"}
package/dist/status.js ADDED
@@ -0,0 +1,158 @@
1
+ import chalk from "chalk";
2
+ import { getCoreInfo, getBaseInfo, getCustomInfo, getProjectTypeDescription, } from "./config.js";
3
+ import { getCorePath, getBasePath, getGitInfo, hasCustomChanges, isGitRepo, checkForUpdates, } from "./git.js";
4
+ /**
5
+ * Get the current status of the workspace
6
+ */
7
+ export async function getStatus(config, logger) {
8
+ const corePath = getCorePath(config);
9
+ const basePath = getBasePath(config);
10
+ const status = {
11
+ coreInitialized: false,
12
+ coreCommit: null,
13
+ coreIsClean: true,
14
+ coreUpdates: null,
15
+ baseInitialized: false,
16
+ baseCommit: null,
17
+ baseIsClean: true,
18
+ baseUpdates: null,
19
+ customHasChanges: false,
20
+ };
21
+ // Check core status
22
+ if (await isGitRepo(corePath)) {
23
+ status.coreInitialized = true;
24
+ const gitInfo = await getGitInfo(corePath);
25
+ if (gitInfo) {
26
+ status.coreCommit = gitInfo.commit;
27
+ status.coreIsClean = gitInfo.isClean;
28
+ }
29
+ // Check for updates if remote core is configured
30
+ const coreInfo = getCoreInfo(config);
31
+ if (coreInfo && coreInfo.url && config.coreCachePath && coreInfo.ref) {
32
+ try {
33
+ status.coreUpdates = await checkForUpdates(config.coreCachePath, coreInfo.ref, logger);
34
+ }
35
+ catch {
36
+ // Ignore update check errors
37
+ }
38
+ }
39
+ }
40
+ // Check base status (if applicable)
41
+ if (basePath && (await isGitRepo(basePath))) {
42
+ status.baseInitialized = true;
43
+ const gitInfo = await getGitInfo(basePath);
44
+ if (gitInfo) {
45
+ status.baseCommit = gitInfo.commit;
46
+ status.baseIsClean = gitInfo.isClean;
47
+ }
48
+ // Check for updates if remote base is configured
49
+ const baseInfo = getBaseInfo(config);
50
+ if (baseInfo && config.baseCachePath) {
51
+ try {
52
+ status.baseUpdates = await checkForUpdates(config.baseCachePath, baseInfo.ref, logger);
53
+ }
54
+ catch {
55
+ // Ignore update check errors
56
+ }
57
+ }
58
+ }
59
+ // Check custom changes
60
+ status.customHasChanges = await hasCustomChanges(config);
61
+ return status;
62
+ }
63
+ /**
64
+ * Print status to console
65
+ */
66
+ export function printStatus(config, status, logger, jsonMode) {
67
+ if (jsonMode) {
68
+ logger.outputJson({
69
+ command: "status",
70
+ config: {
71
+ projectType: config.projectType,
72
+ core: getCoreInfo(config),
73
+ base: getBaseInfo(config),
74
+ custom: getCustomInfo(config),
75
+ },
76
+ status,
77
+ });
78
+ return;
79
+ }
80
+ console.log("");
81
+ console.log(chalk.bold.underline("Workspace Status"));
82
+ console.log("");
83
+ console.log(chalk.bold("Project Type:"), getProjectTypeDescription(config.projectType));
84
+ console.log("");
85
+ // Base status (if applicable)
86
+ const baseInfo = getBaseInfo(config);
87
+ if (baseInfo) {
88
+ console.log(chalk.bold("Base (Remote - Cache):"));
89
+ console.log(` Name: ${baseInfo.name}`);
90
+ console.log(` URL: ${baseInfo.url}`);
91
+ console.log(` Ref: ${baseInfo.ref}`);
92
+ if (status.baseInitialized) {
93
+ console.log(` Status: ${chalk.green("Initialized")}`);
94
+ console.log(` Commit: ${status.baseCommit?.substring(0, 8) ?? "unknown"}`);
95
+ // Show update notification for base
96
+ if (status.baseUpdates?.hasUpdates) {
97
+ console.log(chalk.yellow(` ⚠ ${status.baseUpdates.behindCount} new commit(s) available!`));
98
+ if (status.baseUpdates.latestMessage) {
99
+ console.log(chalk.gray(` Latest: ${status.baseUpdates.latestMessage}`));
100
+ }
101
+ console.log(chalk.cyan(` Run: wmc init --base-latest`));
102
+ }
103
+ }
104
+ else {
105
+ console.log(` Status: ${chalk.red("Not initialized")} (run 'init' first)`);
106
+ }
107
+ console.log("");
108
+ }
109
+ // Core status
110
+ const coreInfo = getCoreInfo(config);
111
+ const isCoreRemote = coreInfo && coreInfo.url;
112
+ if (isCoreRemote) {
113
+ console.log(chalk.bold("Core (Remote - Cache):"));
114
+ console.log(` Name: ${coreInfo.name}`);
115
+ console.log(` URL: ${coreInfo.url}`);
116
+ console.log(` Ref: ${coreInfo.ref}`);
117
+ if (coreInfo.source) {
118
+ console.log(` Source: ${coreInfo.source}`);
119
+ }
120
+ }
121
+ else if (config.coreLocalPath) {
122
+ console.log(chalk.bold("Core (Local):"));
123
+ console.log(` Path: ${config.coreDir || config.coreLocalPath}`);
124
+ }
125
+ if (isCoreRemote) {
126
+ if (status.coreInitialized) {
127
+ console.log(` Status: ${chalk.green("Initialized")}`);
128
+ console.log(` Commit: ${status.coreCommit?.substring(0, 8) ?? "unknown"}`);
129
+ }
130
+ else {
131
+ console.log(` Status: ${chalk.red("Not initialized")} (run 'init' first)`);
132
+ }
133
+ // Show update notification for core (only for remote)
134
+ if (status.coreUpdates?.hasUpdates) {
135
+ console.log(chalk.yellow(` ⚠ ${status.coreUpdates.behindCount} new commit(s) available!`));
136
+ if (status.coreUpdates.latestMessage) {
137
+ console.log(chalk.gray(` Latest: ${status.coreUpdates.latestMessage}`));
138
+ }
139
+ console.log(chalk.cyan(` Run: wmc init --core-latest`));
140
+ }
141
+ }
142
+ console.log("");
143
+ // Custom directory status
144
+ const customInfo = getCustomInfo(config);
145
+ if (customInfo) {
146
+ console.log(chalk.bold("Custom Directory:"));
147
+ console.log(` Path: ${customInfo.path}`);
148
+ console.log(` Mount: ${customInfo.mount}`);
149
+ if (status.customHasChanges) {
150
+ console.log(` Changes: ${chalk.yellow("Uncommitted changes detected")}`);
151
+ }
152
+ else {
153
+ console.log(` Changes: ${chalk.green("Clean")}`);
154
+ }
155
+ console.log("");
156
+ }
157
+ }
158
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "workspace-manager-cli",
3
+ "version": "1.0.0",
4
+ "description": "Cross-platform CLI to assemble project workspaces from shared core boilerplate plus custom folders",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "bin": {
8
+ "workspace-manager-cli": "./dist/index.js",
9
+ "wmc": "./dist/index.js"
10
+ },
11
+ "scripts": {
12
+ "build": "tsc",
13
+ "dev": "tsc --watch",
14
+ "start": "node dist/index.js",
15
+ "test": "npm run build && node test/test-excludes.js && node test/test-excludes-patterns.js && node test/test-default-excludes.js && node test/test-excludes-format.js && node test/test-build-dryrun.js && node test/test-action-ordering.js && node test/test-core-src-fallback.js && node test/test-core-override.js && node test/test-config-hashes.js",
16
+ "prepublishOnly": "npm run build"
17
+ },
18
+ "keywords": [
19
+ "cli",
20
+ "workspace",
21
+ "boilerplate",
22
+ "monorepo",
23
+ "scaffold"
24
+ ],
25
+ "author": "",
26
+ "license": "MIT",
27
+ "dependencies": {
28
+ "@inquirer/prompts": "^7.10.1",
29
+ "chalk": "^5.3.0",
30
+ "commander": "^12.1.0",
31
+ "fs-extra": "^11.2.0",
32
+ "globby": "^14.0.2",
33
+ "simple-git": "^3.27.0",
34
+ "zod": "^3.23.8"
35
+ },
36
+ "devDependencies": {
37
+ "@types/fs-extra": "^11.0.4",
38
+ "@types/node": "^20.17.10",
39
+ "typescript": "^5.7.2"
40
+ },
41
+ "engines": {
42
+ "node": ">=18.0.0"
43
+ },
44
+ "files": [
45
+ "dist"
46
+ ]
47
+ }