mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-08 11:21:23 +00:00
refactor: share install flows across hooks and plugins
This commit is contained in:
42
src/infra/install-mode-options.ts
Normal file
42
src/infra/install-mode-options.ts
Normal file
@@ -0,0 +1,42 @@
|
||||
export type InstallMode = "install" | "update";
|
||||
|
||||
export type InstallModeOptions<TLogger> = {
|
||||
logger?: TLogger;
|
||||
mode?: InstallMode;
|
||||
dryRun?: boolean;
|
||||
};
|
||||
|
||||
export type TimedInstallModeOptions<TLogger> = InstallModeOptions<TLogger> & {
|
||||
timeoutMs?: number;
|
||||
};
|
||||
|
||||
export function resolveInstallModeOptions<TLogger>(
|
||||
params: InstallModeOptions<TLogger>,
|
||||
defaultLogger: TLogger,
|
||||
): {
|
||||
logger: TLogger;
|
||||
mode: InstallMode;
|
||||
dryRun: boolean;
|
||||
} {
|
||||
return {
|
||||
logger: params.logger ?? defaultLogger,
|
||||
mode: params.mode ?? "install",
|
||||
dryRun: params.dryRun ?? false,
|
||||
};
|
||||
}
|
||||
|
||||
export function resolveTimedInstallModeOptions<TLogger>(
|
||||
params: TimedInstallModeOptions<TLogger>,
|
||||
defaultLogger: TLogger,
|
||||
defaultTimeoutMs = 120_000,
|
||||
): {
|
||||
logger: TLogger;
|
||||
timeoutMs: number;
|
||||
mode: InstallMode;
|
||||
dryRun: boolean;
|
||||
} {
|
||||
return {
|
||||
...resolveInstallModeOptions(params, defaultLogger),
|
||||
timeoutMs: params.timeoutMs ?? defaultTimeoutMs,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user