Skip to content

Commit

Permalink
more config WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
camden11 committed Feb 3, 2025
1 parent 4595dc5 commit 29d26ba
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 12 deletions.
83 changes: 73 additions & 10 deletions config/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ import {
parseConfig,
buildConfigFromEnvironment,
writeConfigFile,
getLocalConfigFileDefaultPath,
getConfigAccountByIdentifier,
} from './configUtils';

export function getDefaultConfigFilePath(): string {
Expand Down Expand Up @@ -99,22 +101,27 @@ export function isConfigValid(
}

export function createEmptyConfigFile(
configFilePath: string,
useEnv: boolean
configFilePath: string | null,
useEnv: boolean,
useGlobalConfig = false
): void {
if (configFilePath && useEnv) {
throw new Error('@TODO');
} else if (useEnv) {
return;
}

const pathToWrite = configFilePath || getDefaultConfigFilePath();
const defaultPath = useGlobalConfig
? getGlobalConfigFilePath()
: getLocalConfigFileDefaultPath();

const pathToWrite = configFilePath || defaultPath;

writeConfigFile({ accounts: [] }, pathToWrite);
}

export function deleteConfigFile(
configFilePath: string,
configFilePath: string | null,
useEnv: boolean
): void {
if (configFilePath && useEnv) {
Expand All @@ -127,17 +134,73 @@ export function deleteConfigFile(
fs.unlinkSync(pathToDelete);
}

function getConfigAccountById(accountId: number): HubSpotConfigAccount {}
export function getConfigAccountById(
configFilePath: string | null,
useEnv: boolean,
accountId: number
): HubSpotConfigAccount {
const { accounts } = getConfig(configFilePath, useEnv);

const account = getConfigAccountByIdentifier(
accounts,
'accountId',
accountId
);

if (!account) {
throw new Error('@TODO account not found');
}

function getConfigAccountByName(accountName: string): HubSpotConfigAccount {}
return account;
}

function getConfigDefaultAccount(): HubSpotConfigAccount {}
export function getConfigAccountByName(
configFilePath: string | null,
useEnv: boolean,
accountName: string
): HubSpotConfigAccount {
const { accounts } = getConfig(configFilePath, useEnv);

const account = getConfigAccountByIdentifier(accounts, 'name', accountName);

function getAllConfigAccounts(): HubSpotConfigAccount[];
if (!account) {
throw new Error('@TODO account not found');
}

function getAccountEnvironmentById(accountId: number): Environment {}
return account;
}

function getDefaultAccountEnvironment(): Environment {}
export function getConfigDefaultAccount(
configFilePath: string | null,
useEnv: boolean
): HubSpotConfigAccount {
const { accounts, defaultAccount } = getConfig(configFilePath, useEnv);

if (!defaultAccount) {
throw new Error('@TODO no default account');
}

const account = getConfigAccountByIdentifier(
accounts,
'name',
defaultAccount
);

if (!account) {
throw new Error('@TODO no default account');
}

return account;
}

export function getAllConfigAccounts(
configFilePath: string | null,
useEnv: boolean
): HubSpotConfigAccount[] {
const { accounts } = getConfig(configFilePath, useEnv);

return accounts;
}

function updateConfigAccount(
accoundId: number,
Expand Down
14 changes: 14 additions & 0 deletions config/configUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {
HUBSPOT_CONFIGURATION_FOLDER,
HUBSPOT_CONFIGURATION_FILE,
HUBSPOT_ACCOUNT_TYPES,
DEFAULT_HUBSPOT_CONFIG_YAML_FILE_NAME,
} from '../constants/config';
import { ENVIRONMENT_VARIABLES } from '../constants/environments';
import {
Expand All @@ -20,6 +21,7 @@ import { FileSystemError } from '../models/FileSystemError';
import { logger } from '../lib/logger';
import { HubSpotConfigAccount, AccountType } from '../types/Accounts';
import { getValidEnv } from '../lib/environment';
import { getCwd } from '../lib/path';

export function getGlobalConfigFilePath(): string {
return path.join(
Expand All @@ -29,6 +31,10 @@ export function getGlobalConfigFilePath(): string {
);
}

export function getLocalConfigFileDefaultPath(): string {
return `${getCwd()}/${DEFAULT_HUBSPOT_CONFIG_YAML_FILE_NAME}`;
}

export function readConfigFile(configPath: string): string {
let source = '';

Expand Down Expand Up @@ -210,3 +216,11 @@ export function buildConfigFromEnvironment(): HubSpotConfig {

return { accounts: [account] };
}

export function getConfigAccountByIdentifier(
accounts: Array<HubSpotConfigAccount>,
identifierFieldName: 'name' | 'accountId',
identifier: string | number
): HubSpotConfigAccount | undefined {
return accounts.find(account => account[identifierFieldName] === identifier);
}
4 changes: 2 additions & 2 deletions types/Config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import { ValueOf } from './Utils';
export interface HubSpotConfig {
accounts: Array<HubSpotConfigAccount>;
allowUsageTracking?: boolean;
defaultAccount?: string | number;
defaultAccount?: string;
defaultCmsPublishMode?: CmsPublishMode;
httpTimeout?: number;
env?: Environment;
Expand All @@ -19,7 +19,7 @@ export interface HubSpotConfig {

export type DeprecatedHubSpotConfigFields = {
portals?: Array<HubSpotConfigAccount & DeprecatedHubSpotConfigAccountFields>;
defaultPortal?: number;
defaultPortal?: string;
defaultMode?: CmsPublishMode;
};

Expand Down

0 comments on commit 29d26ba

Please sign in to comment.