Repository navigation
Expand file tree
/
Copy pathdata-dir.ts
More file actions
63 lines (53 loc) · 2.19 KB
/
Copy pathdata-dir.ts
File metadata and controls
63 lines (53 loc) · 2.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import { getPrimaryDataDirPath, getProfile } from '@mavis/config';
import { resolveMcodeDataEnvironment, type McodeDataEnvironment } from '../auth/environment.js';
import { configureTuiRuntimeEnvironment } from '../cli/environment.js';
export type TuiDefaultDataDirResolver = () => string;
export interface TuiDataDirEnvironment {
MINIMAX_DATA_DIR?: string;
MAVIS_DATA_DIR?: string;
}
export interface PrepareTuiDataDirOptions {
environment?: TuiDataDirEnvironment;
getBuildEnv?: () => McodeDataEnvironment;
getDefaultDataDir?: TuiDefaultDataDirResolver;
configureRuntimeEnvironment?: typeof configureTuiRuntimeEnvironment;
}
export function resolveDefaultTuiDataDir(
_buildEnv: McodeDataEnvironment,
getPrimaryDataDir: typeof getPrimaryDataDirPath = getPrimaryDataDirPath,
getCurrentProfile: typeof getProfile = getProfile,
): string {
return getPrimaryDataDir(undefined, getCurrentProfile());
}
function getDefaultTuiDataDir(): string {
return resolveDefaultTuiDataDir(resolveMcodeDataEnvironment());
}
function readDataDirOverride(environment: TuiDataDirEnvironment): string | undefined {
const minimaxDataDir = environment.MINIMAX_DATA_DIR?.trim();
if (minimaxDataDir) return minimaxDataDir;
const mavisDataDir = environment.MAVIS_DATA_DIR?.trim();
return mavisDataDir || undefined;
}
export function getTuiDataDirPath(
environment: TuiDataDirEnvironment = process.env,
getDefaultDataDir: () => string = getDefaultTuiDataDir,
): string {
return readDataDirOverride(environment) ?? getDefaultDataDir();
}
export function resolveTuiDataDir(
getDefaultDataDir: TuiDefaultDataDirResolver = getDefaultTuiDataDir,
environment: TuiDataDirEnvironment = process.env,
): string {
return getTuiDataDirPath(environment, getDefaultDataDir);
}
export function prepareTuiDataDir(options: PrepareTuiDataDirOptions = {}): Promise<string> {
const buildEnv = (options.getBuildEnv ?? resolveMcodeDataEnvironment)();
const dataDir = resolveTuiDataDir(
options.getDefaultDataDir ?? (() => resolveDefaultTuiDataDir(buildEnv)),
options.environment ?? process.env,
);
(options.configureRuntimeEnvironment ?? configureTuiRuntimeEnvironment)({
dataDir,
});
return Promise.resolve(dataDir);
}