-
Notifications
You must be signed in to change notification settings - Fork 31
/
index.ts
56 lines (45 loc) · 1.44 KB
/
index.ts
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
import { ConfluenceSettings } from "../Settings";
export * from "./AutoSettingsLoader";
export * from "./CommandLineArgumentSettingsLoader";
export * from "./ConfigFileSettingsLoader";
export * from "./DefaultSettingsLoader";
export * from "./EnvironmentVariableSettingsLoader";
export * from "./StaticSettingsLoader";
export abstract class SettingsLoader {
abstract loadPartial(): Partial<ConfluenceSettings>;
load(): ConfluenceSettings {
const initialSettings = this.loadPartial();
const settings = this.validateSettings(initialSettings);
return settings;
}
protected validateSettings(
settings: Partial<ConfluenceSettings>
): ConfluenceSettings {
if (!settings.confluenceBaseUrl) {
throw new Error("Confluence base URL is required");
}
if (!settings.confluenceParentId) {
throw new Error("Confluence parent ID is required");
}
if (!settings.atlassianUserName) {
throw new Error("Atlassian user name is required");
}
if (!settings.atlassianApiToken) {
throw new Error("Atlassian API token is required");
}
if (!settings.folderToPublish) {
throw new Error("Folder to publish is required");
}
if (!settings.contentRoot) {
throw new Error("Content root is required");
} else {
if (!settings.contentRoot.endsWith("/")) {
settings.contentRoot += "/";
}
}
if (!("firstHeadingPageTitle" in settings)) {
settings.firstHeadingPageTitle = false;
}
return settings as ConfluenceSettings;
}
}