blob: e1fa699e45bff4d85d3f37599efb693034a0cffc [file] [log] [blame]
gioa71316d2025-05-24 09:41:36 +04001import { FileSystem } from "./fs";
2
3export interface ServiceAnalyzer {
4 detect: (fs: FileSystem, root: string) => boolean;
5 analyze: (fs: FileSystem, root: string) => Promise<ServiceInfo>;
6}
7
8export interface ConfigVar {
9 name: string;
10 category: ConfigVarCategory;
11 type?: ConfigVarType;
12 semanticType?: ConfigVarSemanticType;
13 // eslint-disable-next-line @typescript-eslint/no-explicit-any
14 defaultValue?: any;
15 description?: string;
16 required?: boolean;
17 sensitive?: boolean;
18}
19
20export enum ConfigVarCategory {
21 CommandLineFlag = "CommandLineFlag",
22 EnvironmentVariable = "EnvironmentVariable",
23}
24
25export enum ConfigVarType {
26 String = "String",
27 Number = "Number",
28 Boolean = "Boolean",
29}
30
31export enum ConfigVarSemanticType {
32 EXPANDED_ENV_VAR = "EXPANDED_ENV_VAR",
33 PORT = "PORT",
34 FILESYSTEM_PATH = "FILESYSTEM_PATH",
35 DATABASE_URL = "DATABASE_URL",
36 SQLITE_PATH = "SQLITE_PATH",
37 POSTGRES_URL = "POSTGRES_URL",
38 POSTGRES_PASSWORD = "POSTGRES_PASSWORD",
39 POSTGRES_USER = "POSTGRES_USER",
40 POSTGRES_DB = "POSTGRES_DB",
41 POSTGRES_PORT = "POSTGRES_PORT",
42 POSTGRES_HOST = "POSTGRES_HOST",
43 POSTGRES_SSL = "POSTGRES_SSL",
44 MONGO_URL = "MONGO_URL",
45 MONGO_PASSWORD = "MONGO_PASSWORD",
46 MONGO_USER = "MONGO_USER",
47 MONGO_DB = "MONGO_DB",
48 MONGO_PORT = "MONGO_PORT",
49 MONGO_HOST = "MONGO_HOST",
50 MONGO_SSL = "MONGO_SSL",
51}
52
53export interface ServiceInfo {
54 name: string;
55 location: string;
56 configVars: Array<ConfigVar>;
57 commands: Array<string>;
58}