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/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
|
package/dist/lock.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lock.js","sourceRoot":"","sources":["../src/lock.ts"],"names":[],"mappings":"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"}
|
package/dist/logger.d.ts
ADDED
|
@@ -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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"}
|
package/dist/status.d.ts
ADDED
|
@@ -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
|
+
}
|