-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathBedrockCli.ts
More file actions
24 lines (20 loc) · 945 Bytes
/
BedrockCli.ts
File metadata and controls
24 lines (20 loc) · 945 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import { CliError } from './bedrock/cli/Cli';
import { Attempt } from './bedrock/core/Attempt';
import * as Clis from './bedrock/cli/Clis';
import { BedrockSettings } from './bedrock/core/Settings';
// set NodeJS console logging of objects to be actually useful
import * as Util from 'util';
Util.inspect.defaultOptions.depth = null;
type Program = {
go: <T extends BedrockSettings>(settings: T, directories: { current: string; bin: string }) => Promise<void>;
mode: 'forAuto' | 'forManual';
}
export const run = async (program: Program, directories: { current: string; bin: string }): Promise<void> => {
if (Clis[program.mode] === undefined) {
throw new Error('Bedrock mode not known: ' + program.mode);
}
const maybeSettings: Attempt<CliError, BedrockSettings> = Clis[program.mode](directories);
await Attempt.cata(maybeSettings, Clis.logAndExit, async (settings) => {
await program.go(settings, directories);
});
};