@re-shell/cli
Version:
Full-stack development platform uniting microservices and microfrontends. Build complete applications with .NET (ASP.NET Core Web API, Minimal API), Java (Spring Boot, Quarkus, Micronaut, Vert.x), Rust (Actix-Web, Warp, Rocket, Axum), Python (FastAPI, Dja
202 lines (201 loc) • 6.13 kB
TypeScript
export interface GlobalConfig {
version: string;
packageManager: 'npm' | 'yarn' | 'pnpm' | 'bun';
defaultFramework: string;
defaultTemplate: string;
presets: Record<string, ProjectPreset>;
user: {
name?: string;
email?: string;
organization?: string;
};
cli: {
autoUpdate: boolean;
telemetry: boolean;
verbose: boolean;
theme: 'auto' | 'light' | 'dark';
};
paths: {
templates: string;
cache: string;
plugins: string;
};
plugins: {
enabled: string[];
marketplace: {
registry: string;
autoUpdate: boolean;
};
};
}
export interface ProjectConfig {
name: string;
version: string;
type: 'monorepo' | 'standalone';
packageManager: 'npm' | 'yarn' | 'pnpm' | 'bun';
framework: string;
template: string;
environments: Record<string, EnvironmentConfig>;
workspaces: {
root: string;
patterns: string[];
types: string[];
};
git: {
submodules: boolean;
hooks: boolean;
conventionalCommits: boolean;
};
build: {
target: string;
optimize: boolean;
analyze: boolean;
minify?: boolean;
};
dev: {
port: number;
host: string;
open: boolean;
hmr: boolean;
};
quality: {
linting: boolean;
testing: boolean;
coverage: {
enabled: boolean;
threshold: number;
};
security: {
enabled: boolean;
autoFix: boolean;
};
};
}
export interface EnvironmentConfig {
name: string;
variables: Record<string, string>;
build: {
mode: 'development' | 'staging' | 'production';
optimization: boolean;
sourcemaps: boolean;
minify?: boolean;
analyze?: boolean;
target?: string;
externals?: string[];
};
deployment: {
provider?: 'vercel' | 'netlify' | 'aws' | 'azure' | 'gcp' | 'docker' | 'custom';
target?: string;
region?: string;
domain?: string;
config?: Record<string, any>;
secrets?: string[];
hooks?: {
preDeploy?: string[];
postDeploy?: string[];
};
};
}
export interface WorkspaceConfig {
name: string;
type: 'app' | 'package' | 'lib' | 'tool';
framework?: string;
packageManager?: 'npm' | 'yarn' | 'pnpm' | 'bun';
template?: string;
dependencies?: string[];
devDependencies?: string[];
build?: {
target?: string;
optimize?: boolean;
analyze?: boolean;
minify?: boolean;
outDir?: string;
sourcemap?: boolean;
};
dev?: {
port?: number;
host?: string;
open?: boolean;
hmr?: boolean;
proxy?: Record<string, string>;
};
quality?: {
linting?: boolean;
testing?: boolean;
coverage?: {
enabled?: boolean;
threshold?: number;
};
security?: {
enabled?: boolean;
autoFix?: boolean;
};
};
deployment?: {
provider?: string;
config?: Record<string, any>;
};
environment?: Record<string, any>;
}
export interface ProjectPreset {
name: string;
description: string;
config: Partial<ProjectConfig>;
tags: string[];
createdAt: string;
updatedAt: string;
}
export declare const DEFAULT_GLOBAL_CONFIG: GlobalConfig;
export declare const DEFAULT_PROJECT_CONFIG: Partial<ProjectConfig>;
export declare const CONFIG_PATHS: {
GLOBAL_DIR: string;
GLOBAL_CONFIG: string;
PROJECT_CONFIG: string;
WORKSPACE_CONFIG: string;
WORKSPACE_DIR_CONFIG: string;
};
export declare class ConfigManager {
private globalConfig;
private projectConfig;
loadGlobalConfig(): Promise<GlobalConfig>;
saveGlobalConfig(config: GlobalConfig): Promise<void>;
updateGlobalConfig(updates: Partial<GlobalConfig>): Promise<GlobalConfig>;
loadProjectConfig(projectPath?: string): Promise<ProjectConfig | null>;
saveProjectConfig(config: ProjectConfig, projectPath?: string): Promise<void>;
createProjectConfig(name: string, options?: Partial<ProjectConfig>, projectPath?: string): Promise<ProjectConfig>;
loadWorkspaceConfig(workspacePath: string): Promise<WorkspaceConfig | null>;
saveWorkspaceConfig(config: WorkspaceConfig, workspacePath: string): Promise<void>;
createWorkspaceConfig(name: string, type: 'app' | 'package' | 'lib' | 'tool', options: Partial<WorkspaceConfig>, workspacePath: string): Promise<WorkspaceConfig>;
getMergedConfig(projectPath?: string): Promise<{
global: GlobalConfig;
project: ProjectConfig | null;
merged: Partial<ProjectConfig>;
}>;
getMergedWorkspaceConfig(workspacePath: string, projectPath?: string): Promise<{
global: GlobalConfig;
project: ProjectConfig | null;
workspace: WorkspaceConfig | null;
merged: any;
}>;
savePreset(name: string, config: Partial<ProjectConfig>): Promise<void>;
loadPreset(name: string): Promise<ProjectPreset | null>;
listPresets(): Promise<ProjectPreset[]>;
deletePreset(name: string): Promise<void>;
migrateConfig(fromVersion: string, toVersion: string): Promise<void>;
private validateGlobalConfig;
private validateProjectConfig;
private validateWorkspaceConfig;
private validateSchema;
private mergeConfig;
backupConfig(): Promise<string>;
restoreConfig(backupPath: string): Promise<void>;
}
export declare const configManager: ConfigManager;
export declare function getGlobalConfig(): Promise<GlobalConfig>;
export declare function getProjectConfig(projectPath?: string): Promise<ProjectConfig | null>;
export declare function getMergedConfig(projectPath?: string): Promise<{
global: GlobalConfig;
project: ProjectConfig | null;
merged: Partial<ProjectConfig>;
}>;
export declare function initializeGlobalConfig(): Promise<GlobalConfig>;