@storm-software/config-tools
Version:
A package containing various utilities to support custom workspace configurations and environment management for Storm Software projects, including configuration file handling, environment variable management, and logging utilities.
234 lines (220 loc) • 12.1 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
var _chunkBDATZ3UBcjs = require('./chunk-BDATZ3UB.cjs');
var _chunkJWLDCEBZcjs = require('./chunk-JWLDCEBZ.cjs');
// src/env/get-env.ts
var _config = require('@storm-software/config');
var getExtensionEnv = (extensionName) => {
const prefix = `STORM_EXTENSION_${extensionName.toUpperCase()}_`;
return Object.keys(process.env).filter((key) => key.startsWith(prefix)).reduce((ret, key) => {
const name = key.replace(prefix, "").split("_").map(
(i) => i.length > 0 ? i.trim().charAt(0).toUpperCase() + i.trim().slice(1) : ""
).join("");
if (name) {
ret[name] = process.env[key];
}
return ret;
}, {});
};
var getConfigEnv = () => {
const prefix = "STORM_";
let config = {
extends: process.env[`${prefix}EXTENDS`] || void 0,
name: process.env[`${prefix}NAME`] || void 0,
variant: process.env[`${prefix}VARIANT`] || void 0,
namespace: process.env[`${prefix}NAMESPACE`] || void 0,
owner: process.env[`${prefix}OWNER`] || void 0,
bot: {
name: process.env[`${prefix}BOT_NAME`] || void 0,
email: process.env[`${prefix}BOT_EMAIL`] || void 0
},
release: {
banner: {
url: process.env[`${prefix}RELEASE_BANNER_URL`] || void 0,
alt: process.env[`${prefix}RELEASE_BANNER_ALT`] || void 0
},
header: process.env[`${prefix}RELEASE_HEADER`] || void 0,
footer: process.env[`${prefix}RELEASE_FOOTER`] || void 0
},
error: {
codesFile: process.env[`${prefix}ERROR_CODES_FILE`] || void 0,
url: process.env[`${prefix}ERROR_URL`] || void 0
},
socials: {
twitter: process.env[`${prefix}SOCIAL_TWITTER`] || void 0,
discord: process.env[`${prefix}SOCIAL_DISCORD`] || void 0,
telegram: process.env[`${prefix}SOCIAL_TELEGRAM`] || void 0,
slack: process.env[`${prefix}SOCIAL_SLACK`] || void 0,
medium: process.env[`${prefix}SOCIAL_MEDIUM`] || void 0,
github: process.env[`${prefix}SOCIAL_GITHUB`] || void 0
},
organization: process.env[`${prefix}ORG`] || process.env[`${prefix}ORGANIZATION`] || process.env[`${prefix}ORG_NAME`] || process.env[`${prefix}ORGANIZATION_NAME`] ? process.env[`${prefix}ORG_DESCRIPTION`] || process.env[`${prefix}ORGANIZATION_DESCRIPTION`] || process.env[`${prefix}ORG_URL`] || process.env[`${prefix}ORGANIZATION_URL`] || process.env[`${prefix}ORG_LOGO`] || process.env[`${prefix}ORGANIZATION_LOGO`] ? {
name: process.env[`${prefix}ORG`] || process.env[`${prefix}ORGANIZATION`] || process.env[`${prefix}ORG_NAME`] || process.env[`${prefix}ORGANIZATION_NAME`],
description: process.env[`${prefix}ORG_DESCRIPTION`] || process.env[`${prefix}ORGANIZATION_DESCRIPTION`] || void 0,
url: process.env[`${prefix}ORG_URL`] || process.env[`${prefix}ORGANIZATION_URL`] || void 0,
logo: process.env[`${prefix}ORG_LOGO`] || process.env[`${prefix}ORGANIZATION_LOGO`] || void 0,
icon: process.env[`${prefix}ORG_ICON`] || process.env[`${prefix}ORGANIZATION_ICON`] || void 0
} : process.env[`${prefix}ORG`] || process.env[`${prefix}ORGANIZATION`] || process.env[`${prefix}ORG_NAME`] || process.env[`${prefix}ORGANIZATION_NAME`] : void 0,
packageManager: process.env[`${prefix}PACKAGE_MANAGER`] || void 0,
license: process.env[`${prefix}LICENSE`] || void 0,
homepage: process.env[`${prefix}HOMEPAGE`] || void 0,
docs: process.env[`${prefix}DOCS`] || void 0,
portal: process.env[`${prefix}PORTAL`] || void 0,
licensing: process.env[`${prefix}LICENSING`] || void 0,
contact: process.env[`${prefix}CONTACT`] || void 0,
support: process.env[`${prefix}SUPPORT`] || void 0,
timezone: process.env[`${prefix}TIMEZONE`] || process.env.TZ || void 0,
locale: process.env[`${prefix}LOCALE`] || process.env.LOCALE || void 0,
configFile: process.env[`${prefix}WORKSPACE_CONFIG_FILE`] ? _chunkBDATZ3UBcjs.correctPaths.call(void 0, process.env[`${prefix}WORKSPACE_CONFIG_FILE`]) : void 0,
workspaceRoot: process.env[`${prefix}WORKSPACE_ROOT`] ? _chunkBDATZ3UBcjs.correctPaths.call(void 0, process.env[`${prefix}WORKSPACE_ROOT`]) : void 0,
directories: {
cache: process.env[`${prefix}CACHE_DIR`] ? _chunkBDATZ3UBcjs.correctPaths.call(void 0, process.env[`${prefix}CACHE_DIR`]) : process.env[`${prefix}CACHE_DIRECTORY`] ? _chunkBDATZ3UBcjs.correctPaths.call(void 0, process.env[`${prefix}CACHE_DIRECTORY`]) : void 0,
data: process.env[`${prefix}DATA_DIR`] ? _chunkBDATZ3UBcjs.correctPaths.call(void 0, process.env[`${prefix}DATA_DIR`]) : process.env[`${prefix}DATA_DIRECTORY`] ? _chunkBDATZ3UBcjs.correctPaths.call(void 0, process.env[`${prefix}DATA_DIRECTORY`]) : void 0,
config: process.env[`${prefix}CONFIG_DIR`] ? _chunkBDATZ3UBcjs.correctPaths.call(void 0, process.env[`${prefix}CONFIG_DIR`]) : process.env[`${prefix}CONFIG_DIRECTORY`] ? _chunkBDATZ3UBcjs.correctPaths.call(void 0, process.env[`${prefix}CONFIG_DIRECTORY`]) : void 0,
temp: process.env[`${prefix}TEMP_DIR`] ? _chunkBDATZ3UBcjs.correctPaths.call(void 0, process.env[`${prefix}TEMP_DIR`]) : process.env[`${prefix}TEMP_DIRECTORY`] ? _chunkBDATZ3UBcjs.correctPaths.call(void 0, process.env[`${prefix}TEMP_DIRECTORY`]) : void 0,
log: process.env[`${prefix}LOG_DIR`] ? _chunkBDATZ3UBcjs.correctPaths.call(void 0, process.env[`${prefix}LOG_DIR`]) : process.env[`${prefix}LOG_DIRECTORY`] ? _chunkBDATZ3UBcjs.correctPaths.call(void 0, process.env[`${prefix}LOG_DIRECTORY`]) : void 0,
build: process.env[`${prefix}BUILD_DIR`] ? _chunkBDATZ3UBcjs.correctPaths.call(void 0, process.env[`${prefix}BUILD_DIR`]) : process.env[`${prefix}BUILD_DIRECTORY`] ? _chunkBDATZ3UBcjs.correctPaths.call(void 0, process.env[`${prefix}BUILD_DIRECTORY`]) : void 0
},
skipCache: process.env[`${prefix}SKIP_CACHE`] !== void 0 ? Boolean(process.env[`${prefix}SKIP_CACHE`]) : void 0,
mode: (_nullishCoalesce(_nullishCoalesce(process.env[`${prefix}MODE`], () => ( process.env.NODE_ENV)), () => ( process.env.ENVIRONMENT))) || void 0,
// ci:
// process.env[`${prefix}CI`] !== undefined
// ? Boolean(
// process.env[`${prefix}CI`] ??
// process.env.CI ??
// process.env.CONTINUOUS_INTEGRATION
// )
// : undefined,
repository: process.env[`${prefix}REPOSITORY`] || void 0,
branch: process.env[`${prefix}BRANCH`] || void 0,
preid: process.env[`${prefix}PRE_ID`] || void 0,
registry: {
github: process.env[`${prefix}REGISTRY_GITHUB`] || void 0,
npm: process.env[`${prefix}REGISTRY_NPM`] || void 0,
cargo: process.env[`${prefix}REGISTRY_CARGO`] || void 0,
cyclone: process.env[`${prefix}REGISTRY_CYCLONE`] || void 0,
container: process.env[`${prefix}REGISTRY_CONTAINER`] || void 0
},
logLevel: process.env[`${prefix}LOG_LEVEL`] !== null && process.env[`${prefix}LOG_LEVEL`] !== void 0 ? process.env[`${prefix}LOG_LEVEL`] && Number.isSafeInteger(
Number.parseInt(process.env[`${prefix}LOG_LEVEL`])
) ? _chunkJWLDCEBZcjs.getLogLevelLabel.call(void 0,
Number.parseInt(process.env[`${prefix}LOG_LEVEL`])
) : process.env[`${prefix}LOG_LEVEL`] : void 0,
skipConfigLogging: process.env[`${prefix}SKIP_CONFIG_LOGGING`] !== void 0 ? Boolean(process.env[`${prefix}SKIP_CONFIG_LOGGING`]) : void 0
};
const themeNames = Object.keys(process.env).filter(
(envKey) => envKey.startsWith(`${prefix}COLOR_`) && _config.COLOR_KEYS.every(
(colorKey) => !envKey.startsWith(`${prefix}COLOR_LIGHT_${colorKey}`) && !envKey.startsWith(`${prefix}COLOR_DARK_${colorKey}`)
)
);
config.colors = themeNames.length > 0 ? themeNames.reduce(
(ret, themeName) => {
ret[themeName] = getThemeColorsEnv(prefix, themeName);
return ret;
},
{}
) : getThemeColorsEnv(prefix);
if (config.docs === _config.STORM_DEFAULT_DOCS) {
if (config.homepage === _config.STORM_DEFAULT_HOMEPAGE) {
config.docs = `${_config.STORM_DEFAULT_HOMEPAGE}/projects/${config.name}/docs`;
} else {
config.docs = `${config.homepage}/docs`;
}
}
if (config.licensing === _config.STORM_DEFAULT_LICENSING) {
if (config.homepage === _config.STORM_DEFAULT_HOMEPAGE) {
config.licensing = `${_config.STORM_DEFAULT_HOMEPAGE}/projects/${config.name}/licensing`;
} else {
config.licensing = `${config.homepage}/docs`;
}
}
const serializedConfig = process.env[`${prefix}WORKSPACE_CONFIG`];
if (serializedConfig) {
const parsed = JSON.parse(serializedConfig);
config = {
...config,
...parsed,
colors: { ...config.colors, ...parsed.colors },
extensions: { ...config.extensions, ...parsed.extensions }
};
}
return config;
};
var getThemeColorsEnv = (prefix, theme) => {
const themeName = `COLOR_${theme && theme !== "base" ? `${theme}_` : ""}`.toUpperCase();
return process.env[`${prefix}${themeName}LIGHT_BRAND`] || process.env[`${prefix}${themeName}DARK_BRAND`] ? getMultiThemeColorsEnv(prefix + themeName) : getSingleThemeColorsEnv(prefix + themeName);
};
var getSingleThemeColorsEnv = (prefix) => {
const gradient = [];
if (process.env[`${prefix}GRADIENT_START`] && process.env[`${prefix}GRADIENT_END`]) {
gradient.push(
process.env[`${prefix}GRADIENT_START`],
process.env[`${prefix}GRADIENT_END`]
);
} else if (process.env[`${prefix}GRADIENT_0`] || process.env[`${prefix}GRADIENT_1`]) {
let index = process.env[`${prefix}GRADIENT_0`] ? 0 : 1;
while (process.env[`${prefix}GRADIENT_${index}`]) {
gradient.push(process.env[`${prefix}GRADIENT_${index}`]);
index++;
}
}
return {
dark: process.env[`${prefix}DARK`],
light: process.env[`${prefix}LIGHT`],
brand: process.env[`${prefix}BRAND`],
alternate: process.env[`${prefix}ALTERNATE`],
accent: process.env[`${prefix}ACCENT`],
link: process.env[`${prefix}LINK`],
help: process.env[`${prefix}HELP`],
success: process.env[`${prefix}SUCCESS`],
info: process.env[`${prefix}INFO`],
debug: process.env[`${prefix}DEBUG`],
warning: process.env[`${prefix}WARNING`],
danger: process.env[`${prefix}DANGER`],
fatal: process.env[`${prefix}FATAL`],
performance: process.env[`${prefix}PERFORMANCE`],
positive: process.env[`${prefix}POSITIVE`],
negative: process.env[`${prefix}NEGATIVE`],
gradient
};
};
var getMultiThemeColorsEnv = (prefix) => {
return {
light: getBaseThemeColorsEnv(`${prefix}_LIGHT_`),
dark: getBaseThemeColorsEnv(`${prefix}_DARK_`)
};
};
var getBaseThemeColorsEnv = (prefix) => {
const gradient = [];
if (process.env[`${prefix}GRADIENT_START`] && process.env[`${prefix}GRADIENT_END`]) {
gradient.push(
process.env[`${prefix}GRADIENT_START`],
process.env[`${prefix}GRADIENT_END`]
);
} else if (process.env[`${prefix}GRADIENT_0`] || process.env[`${prefix}GRADIENT_1`]) {
let index = process.env[`${prefix}GRADIENT_0`] ? 0 : 1;
while (process.env[`${prefix}GRADIENT_${index}`]) {
gradient.push(process.env[`${prefix}GRADIENT_${index}`]);
index++;
}
}
return {
foreground: process.env[`${prefix}FOREGROUND`],
background: process.env[`${prefix}BACKGROUND`],
brand: process.env[`${prefix}BRAND`],
alternate: process.env[`${prefix}ALTERNATE`],
accent: process.env[`${prefix}ACCENT`],
link: process.env[`${prefix}LINK`],
help: process.env[`${prefix}HELP`],
success: process.env[`${prefix}SUCCESS`],
info: process.env[`${prefix}INFO`],
debug: process.env[`${prefix}DEBUG`],
warning: process.env[`${prefix}WARNING`],
danger: process.env[`${prefix}DANGER`],
fatal: process.env[`${prefix}FATAL`],
performance: process.env[`${prefix}PERFORMANCE`],
positive: process.env[`${prefix}POSITIVE`],
negative: process.env[`${prefix}NEGATIVE`],
gradient
};
};
exports.getExtensionEnv = getExtensionEnv; exports.getConfigEnv = getConfigEnv;