48 lines
1.2 KiB
TypeScript
48 lines
1.2 KiB
TypeScript
/**
|
|
* Runtime context shared across modules.
|
|
*
|
|
* Holds process-wide state (quiet mode, etc.) that would otherwise
|
|
* create circular dependencies if exported from cli.ts.
|
|
*
|
|
* AppContext is a singleton — use AppContext.getInstance() or
|
|
* the module-level convenience functions isQuietMode / setQuietMode.
|
|
*/
|
|
|
|
export class AppContext {
|
|
private static instance: AppContext | null = null;
|
|
|
|
private quietMode = false;
|
|
|
|
private constructor() {}
|
|
|
|
static getInstance(): AppContext {
|
|
if (!AppContext.instance) {
|
|
AppContext.instance = new AppContext();
|
|
}
|
|
return AppContext.instance;
|
|
}
|
|
|
|
/** Reset singleton for testing */
|
|
static resetInstance(): void {
|
|
AppContext.instance = null;
|
|
}
|
|
|
|
getQuietMode(): boolean {
|
|
return this.quietMode;
|
|
}
|
|
|
|
setQuietMode(value: boolean): void {
|
|
this.quietMode = value;
|
|
}
|
|
}
|
|
|
|
/** Get whether quiet mode is active (CLI flag or config, resolved in preAction) */
|
|
export function isQuietMode(): boolean {
|
|
return AppContext.getInstance().getQuietMode();
|
|
}
|
|
|
|
/** Set quiet mode state. Called from CLI preAction hook. */
|
|
export function setQuietMode(value: boolean): void {
|
|
AppContext.getInstance().setQuietMode(value);
|
|
}
|