Skip to content

Commit

Permalink
fix: Circular imports
Browse files Browse the repository at this point in the history
  • Loading branch information
andymac4182 committed May 4, 2023
1 parent a3043b0 commit 4f49798
Show file tree
Hide file tree
Showing 8 changed files with 56 additions and 56 deletions.
2 changes: 1 addition & 1 deletion packages/lib/src/SettingsLoader/AutoSettingsLoader.ts
Expand Up @@ -3,7 +3,7 @@ import { DefaultSettingsLoader } from "./DefaultSettingsLoader";
import { EnvironmentVariableSettingsLoader } from "./EnvironmentVariableSettingsLoader";
import { ConfigFileSettingsLoader } from "./ConfigFileSettingsLoader";
import { CommandLineArgumentSettingsLoader } from "./CommandLineArgumentSettingsLoader";
import { SettingsLoader } from ".";
import { SettingsLoader } from "./SettingsLoader";

export class AutoSettingsLoader extends SettingsLoader {
constructor(private loaders: SettingsLoader[] = []) {
Expand Down
@@ -1,6 +1,6 @@
import path from "path";
import { ConfluenceSettings } from "../Settings";
import { SettingsLoader } from ".";
import { SettingsLoader } from "./SettingsLoader";
import yargs from "yargs";

export class CommandLineArgumentSettingsLoader extends SettingsLoader {
Expand Down
@@ -1,6 +1,6 @@
import path from "path";
import { ConfluenceSettings, DEFAULT_SETTINGS } from "../Settings";
import { SettingsLoader } from ".";
import { SettingsLoader } from "./SettingsLoader";
import fs from "fs";
import yargs from "yargs";

Expand Down
2 changes: 1 addition & 1 deletion packages/lib/src/SettingsLoader/DefaultSettingsLoader.ts
@@ -1,5 +1,5 @@
import { ConfluenceSettings, DEFAULT_SETTINGS } from "../Settings";
import { SettingsLoader } from ".";
import { SettingsLoader } from "./SettingsLoader";

export class DefaultSettingsLoader extends SettingsLoader {
loadPartial(): Partial<ConfluenceSettings> {
Expand Down
@@ -1,5 +1,5 @@
import { ConfluenceSettings } from "../Settings";
import { SettingsLoader } from ".";
import { SettingsLoader } from "./SettingsLoader";

export class EnvironmentVariableSettingsLoader extends SettingsLoader {
getValue<T extends keyof ConfluenceSettings>(
Expand Down
49 changes: 49 additions & 0 deletions packages/lib/src/SettingsLoader/SettingsLoader.ts
@@ -0,0 +1,49 @@
import { ConfluenceSettings } from "../Settings";

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;
}
}
2 changes: 1 addition & 1 deletion packages/lib/src/SettingsLoader/StaticSettingsLoader.ts
@@ -1,5 +1,5 @@
import { ConfluenceSettings } from "../Settings";
import { SettingsLoader } from ".";
import { SettingsLoader } from "./SettingsLoader";

export class StaticSettingsLoader extends SettingsLoader {
constructor(private settings: Partial<ConfluenceSettings>) {
Expand Down
51 changes: 1 addition & 50 deletions packages/lib/src/SettingsLoader/index.ts
@@ -1,56 +1,7 @@
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;
}
}
export * from "./SettingsLoader";

0 comments on commit 4f49798

Please sign in to comment.