@storm-software/workspace-tools
Version:
Tools for managing a Storm workspace, including various Nx generators and executors for common development tasks.
729 lines (721 loc) • 27.9 kB
JavaScript
import {
COLOR_KEYS,
LogLevel,
STORM_DEFAULT_DOCS,
STORM_DEFAULT_HOMEPAGE,
STORM_DEFAULT_LICENSING,
applyDefaultConfig,
formatLogMessage,
getLogLevel,
getLogLevelLabel,
getPackageJsonConfig,
stormWorkspaceConfigSchema,
writeTrace,
writeWarning
} from "./chunk-5AXTWPT3.mjs";
import {
findWorkspaceRoot
} from "./chunk-LSF4BHCI.mjs";
import {
correctPaths,
joinPaths
} from "./chunk-U7JFVMCK.mjs";
// ../config-tools/src/create-storm-config.ts
import defu2 from "defu";
// ../config-tools/src/config-file/get-config-file.ts
import { loadConfig } from "c12";
import defu from "defu";
var getConfigFileByName = async (fileName, filePath, options = {}) => {
const workspacePath = filePath || findWorkspaceRoot(filePath);
const configs = await Promise.all([
loadConfig({
cwd: workspacePath,
packageJson: true,
name: fileName,
envName: fileName?.toUpperCase(),
jitiOptions: {
debug: false,
fsCache: process.env.STORM_SKIP_CACHE === "true" ? false : joinPaths(
process.env.STORM_CACHE_DIR || "node_modules/.cache/storm",
"jiti"
)
},
...options
}),
loadConfig({
cwd: workspacePath,
packageJson: true,
name: fileName,
envName: fileName?.toUpperCase(),
jitiOptions: {
debug: false,
fsCache: process.env.STORM_SKIP_CACHE === "true" ? false : joinPaths(
process.env.STORM_CACHE_DIR || "node_modules/.cache/storm",
"jiti"
)
},
configFile: fileName,
...options
})
]);
return defu(configs[0] ?? {}, configs[1] ?? {});
};
var getConfigFile = async (filePath, additionalFileNames = []) => {
const workspacePath = filePath ? filePath : findWorkspaceRoot(filePath);
const result = await getConfigFileByName("storm-workspace", workspacePath);
let config = result.config;
const configFile = result.configFile;
if (config && configFile && Object.keys(config).length > 0 && !config.skipConfigLogging) {
writeTrace(
`Found Storm configuration file "${configFile.includes(`${workspacePath}/`) ? configFile.replace(`${workspacePath}/`, "") : configFile}" at "${workspacePath}"`,
{
logLevel: "all"
}
);
}
if (additionalFileNames && additionalFileNames.length > 0) {
const results = await Promise.all(
additionalFileNames.map(
(fileName) => getConfigFileByName(fileName, workspacePath)
)
);
for (const result2 of results) {
if (result2?.config && result2?.configFile && Object.keys(result2.config).length > 0) {
if (!config.skipConfigLogging && !result2.config.skipConfigLogging) {
writeTrace(
`Found alternative configuration file "${result2.configFile.includes(`${workspacePath}/`) ? result2.configFile.replace(`${workspacePath}/`, "") : result2.configFile}" at "${workspacePath}"`,
{
logLevel: "all"
}
);
}
config = defu(result2.config ?? {}, config ?? {});
}
}
}
if (!config || Object.keys(config).length === 0) {
return void 0;
}
config.configFile = configFile;
return config;
};
// ../config-tools/src/env/get-env.ts
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,
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: process.env[`${prefix}RELEASE_BANNER`] || 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
},
account: {
twitter: process.env[`${prefix}ACCOUNT_TWITTER`] || void 0,
discord: process.env[`${prefix}ACCOUNT_DISCORD`] || void 0,
telegram: process.env[`${prefix}ACCOUNT_TELEGRAM`] || void 0,
slack: process.env[`${prefix}ACCOUNT_SLACK`] || void 0,
medium: process.env[`${prefix}ACCOUNT_MEDIUM`] || void 0,
github: process.env[`${prefix}ACCOUNT_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}CONFIG_FILE`] ? correctPaths(process.env[`${prefix}CONFIG_FILE`]) : void 0,
workspaceRoot: process.env[`${prefix}WORKSPACE_ROOT`] ? correctPaths(process.env[`${prefix}WORKSPACE_ROOT`]) : void 0,
directories: {
cache: process.env[`${prefix}CACHE_DIR`] ? correctPaths(process.env[`${prefix}CACHE_DIR`]) : process.env[`${prefix}CACHE_DIRECTORY`] ? correctPaths(process.env[`${prefix}CACHE_DIRECTORY`]) : void 0,
data: process.env[`${prefix}DATA_DIR`] ? correctPaths(process.env[`${prefix}DATA_DIR`]) : process.env[`${prefix}DATA_DIRECTORY`] ? correctPaths(process.env[`${prefix}DATA_DIRECTORY`]) : void 0,
config: process.env[`${prefix}CONFIG_DIR`] ? correctPaths(process.env[`${prefix}CONFIG_DIR`]) : process.env[`${prefix}CONFIG_DIRECTORY`] ? correctPaths(process.env[`${prefix}CONFIG_DIRECTORY`]) : void 0,
temp: process.env[`${prefix}TEMP_DIR`] ? correctPaths(process.env[`${prefix}TEMP_DIR`]) : process.env[`${prefix}TEMP_DIRECTORY`] ? correctPaths(process.env[`${prefix}TEMP_DIRECTORY`]) : void 0,
log: process.env[`${prefix}LOG_DIR`] ? correctPaths(process.env[`${prefix}LOG_DIR`]) : process.env[`${prefix}LOG_DIRECTORY`] ? correctPaths(process.env[`${prefix}LOG_DIRECTORY`]) : void 0,
build: process.env[`${prefix}BUILD_DIR`] ? correctPaths(process.env[`${prefix}BUILD_DIR`]) : process.env[`${prefix}BUILD_DIRECTORY`] ? correctPaths(process.env[`${prefix}BUILD_DIRECTORY`]) : void 0
},
skipCache: process.env[`${prefix}SKIP_CACHE`] !== void 0 ? Boolean(process.env[`${prefix}SKIP_CACHE`]) : void 0,
mode: (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,
externalPackagePatterns: process.env[`${prefix}EXTERNAL_PACKAGE_PATTERNS`] ? JSON.parse(process.env[`${prefix}EXTERNAL_PACKAGE_PATTERNS`]) : [],
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`])
) ? getLogLevelLabel(
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_`) && 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] = getThemeColorConfigEnv(prefix, themeName);
return ret;
},
{}
) : getThemeColorConfigEnv(prefix);
if (config.docs === STORM_DEFAULT_DOCS) {
if (config.homepage === STORM_DEFAULT_HOMEPAGE) {
config.docs = `${STORM_DEFAULT_HOMEPAGE}/projects/${config.name}/docs`;
} else {
config.docs = `${config.homepage}/docs`;
}
}
if (config.licensing === STORM_DEFAULT_LICENSING) {
if (config.homepage === STORM_DEFAULT_HOMEPAGE) {
config.licensing = `${STORM_DEFAULT_HOMEPAGE}/projects/${config.name}/licensing`;
} else {
config.licensing = `${config.homepage}/docs`;
}
}
const serializedConfig = process.env[`${prefix}CONFIG`];
if (serializedConfig) {
const parsed = JSON.parse(serializedConfig);
config = {
...config,
...parsed,
colors: { ...config.colors, ...parsed.colors },
extensions: { ...config.extensions, ...parsed.extensions }
};
}
return config;
};
var getThemeColorConfigEnv = (prefix, theme) => {
const themeName = `COLOR_${theme && theme !== "base" ? `${theme}_` : ""}`.toUpperCase();
return process.env[`${prefix}${themeName}LIGHT_BRAND`] || process.env[`${prefix}${themeName}DARK_BRAND`] ? getMultiThemeColorConfigEnv(prefix + themeName) : getSingleThemeColorConfigEnv(prefix + themeName);
};
var getSingleThemeColorConfigEnv = (prefix) => {
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`],
warning: process.env[`${prefix}WARNING`],
danger: process.env[`${prefix}DANGER`],
fatal: process.env[`${prefix}FATAL`],
positive: process.env[`${prefix}POSITIVE`],
negative: process.env[`${prefix}NEGATIVE`]
};
};
var getMultiThemeColorConfigEnv = (prefix) => {
return {
light: getBaseThemeColorConfigEnv(
`${prefix}_LIGHT_`
),
dark: getBaseThemeColorConfigEnv(`${prefix}_DARK_`)
};
};
var getBaseThemeColorConfigEnv = (prefix) => {
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`],
warning: process.env[`${prefix}WARNING`],
danger: process.env[`${prefix}DANGER`],
fatal: process.env[`${prefix}FATAL`],
positive: process.env[`${prefix}POSITIVE`],
negative: process.env[`${prefix}NEGATIVE`]
};
};
// ../config-tools/src/env/set-env.ts
var setExtensionEnv = (extensionName, extension) => {
for (const key of Object.keys(extension ?? {})) {
if (extension[key]) {
const result = key?.replace(
/([A-Z])+/g,
(input) => input ? input[0]?.toUpperCase() + input.slice(1) : ""
).split(/(?=[A-Z])|[.\-\s_]/).map((x) => x.toLowerCase()) ?? [];
let extensionKey;
if (result.length === 0) {
return;
}
if (result.length === 1) {
extensionKey = result[0]?.toUpperCase() ?? "";
} else {
extensionKey = result.reduce((ret, part) => {
return `${ret}_${part.toLowerCase()}`;
});
}
process.env[`STORM_EXTENSION_${extensionName.toUpperCase()}_${extensionKey.toUpperCase()}`] = extension[key];
}
}
};
var setConfigEnv = (config) => {
const prefix = "STORM_";
if (config.extends) {
process.env[`${prefix}EXTENDS`] = Array.isArray(config.extends) ? JSON.stringify(config.extends) : config.extends;
}
if (config.name) {
process.env[`${prefix}NAME`] = config.name;
}
if (config.namespace) {
process.env[`${prefix}NAMESPACE`] = config.namespace;
}
if (config.owner) {
process.env[`${prefix}OWNER`] = config.owner;
}
if (config.bot) {
process.env[`${prefix}BOT_NAME`] = config.bot.name;
process.env[`${prefix}BOT_EMAIL`] = config.bot.email;
}
if (config.error) {
process.env[`${prefix}ERROR_CODES_FILE`] = config.error.codesFile;
process.env[`${prefix}ERROR_URL`] = config.error.url;
}
if (config.release) {
process.env[`${prefix}RELEASE_BANNER`] = config.release.banner;
process.env[`${prefix}RELEASE_HEADER`] = config.release.header;
process.env[`${prefix}RELEASE_FOOTER`] = config.release.footer;
}
if (config.account) {
if (config.account.twitter) {
process.env[`${prefix}ACCOUNT_TWITTER`] = config.account.twitter;
}
if (config.account.discord) {
process.env[`${prefix}ACCOUNT_DISCORD`] = config.account.discord;
}
if (config.account.telegram) {
process.env[`${prefix}ACCOUNT_TELEGRAM`] = config.account.telegram;
}
if (config.account.slack) {
process.env[`${prefix}ACCOUNT_SLACK`] = config.account.slack;
}
if (config.account.medium) {
process.env[`${prefix}ACCOUNT_MEDIUM`] = config.account.medium;
}
if (config.account.github) {
process.env[`${prefix}ACCOUNT_GITHUB`] = config.account.github;
}
}
if (config.organization) {
if (typeof config.organization === "string") {
process.env[`${prefix}ORG`] = config.organization;
process.env[`${prefix}ORG_NAME`] = config.organization;
process.env[`${prefix}ORGANIZATION`] = config.organization;
process.env[`${prefix}ORGANIZATION_NAME`] = config.organization;
} else {
process.env[`${prefix}ORG`] = config.organization.name;
process.env[`${prefix}ORG_NAME`] = config.organization.name;
process.env[`${prefix}ORGANIZATION`] = config.organization.name;
process.env[`${prefix}ORGANIZATION_NAME`] = config.organization.name;
if (config.organization.url) {
process.env[`${prefix}ORG_URL`] = config.organization.url;
process.env[`${prefix}ORGANIZATION_URL`] = config.organization.url;
}
if (config.organization.description) {
process.env[`${prefix}ORG_DESCRIPTION`] = config.organization.description;
process.env[`${prefix}ORGANIZATION_DESCRIPTION`] = config.organization.description;
}
if (config.organization.logo) {
process.env[`${prefix}ORG_LOGO`] = config.organization.logo;
process.env[`${prefix}ORGANIZATION_LOGO`] = config.organization.logo;
}
if (config.organization.icon) {
process.env[`${prefix}ORG_ICON`] = config.organization.icon;
process.env[`${prefix}ORGANIZATION_ICON`] = config.organization.icon;
}
}
}
if (config.packageManager) {
process.env[`${prefix}PACKAGE_MANAGER`] = config.packageManager;
}
if (config.license) {
process.env[`${prefix}LICENSE`] = config.license;
}
if (config.homepage) {
process.env[`${prefix}HOMEPAGE`] = config.homepage;
}
if (config.docs) {
process.env[`${prefix}DOCS`] = config.docs;
}
if (config.portal) {
process.env[`${prefix}PORTAL`] = config.portal;
}
if (config.licensing) {
process.env[`${prefix}LICENSING`] = config.licensing;
}
if (config.contact) {
process.env[`${prefix}CONTACT`] = config.contact;
}
if (config.support) {
process.env[`${prefix}SUPPORT`] = config.support;
}
if (config.timezone) {
process.env[`${prefix}TIMEZONE`] = config.timezone;
process.env.TZ = config.timezone;
process.env.DEFAULT_TIMEZONE = config.timezone;
}
if (config.locale) {
process.env[`${prefix}LOCALE`] = config.locale;
process.env.LOCALE = config.locale;
process.env.DEFAULT_LOCALE = config.locale;
process.env.LANG = config.locale ? `${config.locale.replaceAll("-", "_")}.UTF-8` : "en_US.UTF-8";
}
if (config.configFile) {
process.env[`${prefix}CONFIG_FILE`] = correctPaths(config.configFile);
}
if (config.workspaceRoot) {
process.env[`${prefix}WORKSPACE_ROOT`] = correctPaths(config.workspaceRoot);
process.env.NX_WORKSPACE_ROOT = correctPaths(config.workspaceRoot);
process.env.NX_WORKSPACE_ROOT_PATH = correctPaths(config.workspaceRoot);
}
if (config.directories) {
if (!config.skipCache && config.directories.cache) {
process.env[`${prefix}CACHE_DIR`] = correctPaths(
config.directories.cache
);
process.env[`${prefix}CACHE_DIRECTORY`] = process.env[`${prefix}CACHE_DIR`];
}
if (config.directories.data) {
process.env[`${prefix}DATA_DIR`] = correctPaths(config.directories.data);
process.env[`${prefix}DATA_DIRECTORY`] = process.env[`${prefix}DATA_DIR`];
}
if (config.directories.config) {
process.env[`${prefix}CONFIG_DIR`] = correctPaths(
config.directories.config
);
process.env[`${prefix}CONFIG_DIRECTORY`] = process.env[`${prefix}CONFIG_DIR`];
}
if (config.directories.temp) {
process.env[`${prefix}TEMP_DIR`] = correctPaths(config.directories.temp);
process.env[`${prefix}TEMP_DIRECTORY`] = process.env[`${prefix}TEMP_DIR`];
}
if (config.directories.log) {
process.env[`${prefix}LOG_DIR`] = correctPaths(config.directories.log);
process.env[`${prefix}LOG_DIRECTORY`] = process.env[`${prefix}LOG_DIR`];
}
if (config.directories.build) {
process.env[`${prefix}BUILD_DIR`] = correctPaths(
config.directories.build
);
process.env[`${prefix}BUILD_DIRECTORY`] = process.env[`${prefix}BUILD_DIR`];
}
}
if (config.skipCache !== void 0) {
process.env[`${prefix}SKIP_CACHE`] = String(config.skipCache);
if (config.skipCache) {
process.env.NX_SKIP_NX_CACHE ??= String(config.skipCache);
process.env.NX_CACHE_PROJECT_GRAPH ??= String(config.skipCache);
}
}
if (config.mode) {
process.env[`${prefix}MODE`] = config.mode;
process.env.NODE_ENV = config.mode;
process.env.ENVIRONMENT = config.mode;
}
if (config.colors?.base?.light || config.colors?.base?.dark) {
for (const key of Object.keys(config.colors)) {
setThemeColorConfigEnv(`${prefix}COLOR_${key}_`, config.colors[key]);
}
} else {
setThemeColorConfigEnv(
`${prefix}COLOR_`,
config.colors
);
}
if (config.repository) {
process.env[`${prefix}REPOSITORY`] = config.repository;
}
if (config.branch) {
process.env[`${prefix}BRANCH`] = config.branch;
}
if (config.preid) {
process.env[`${prefix}PRE_ID`] = String(config.preid);
}
if (config.externalPackagePatterns) {
process.env[`${prefix}EXTERNAL_PACKAGE_PATTERNS`] = JSON.stringify(
config.externalPackagePatterns
);
}
if (config.registry) {
if (config.registry.github) {
process.env[`${prefix}REGISTRY_GITHUB`] = String(config.registry.github);
}
if (config.registry.npm) {
process.env[`${prefix}REGISTRY_NPM`] = String(config.registry.npm);
}
if (config.registry.cargo) {
process.env[`${prefix}REGISTRY_CARGO`] = String(config.registry.cargo);
}
if (config.registry.cyclone) {
process.env[`${prefix}REGISTRY_CYCLONE`] = String(
config.registry.cyclone
);
}
if (config.registry.container) {
process.env[`${prefix}REGISTRY_CONTAINER`] = String(
config.registry.container
);
}
}
if (config.logLevel) {
process.env[`${prefix}LOG_LEVEL`] = String(config.logLevel);
process.env.LOG_LEVEL = String(config.logLevel);
process.env.NX_VERBOSE_LOGGING = String(
getLogLevel(config.logLevel) >= LogLevel.DEBUG ? true : false
);
process.env.RUST_BACKTRACE = getLogLevel(config.logLevel) >= LogLevel.DEBUG ? "full" : "none";
}
if (config.skipConfigLogging !== void 0) {
process.env[`${prefix}SKIP_CONFIG_LOGGING`] = String(
config.skipConfigLogging
);
}
process.env[`${prefix}CONFIG`] = JSON.stringify(config);
for (const key of Object.keys(config.extensions ?? {})) {
if (config.extensions[key] && Object.keys(config.extensions[key])) {
setExtensionEnv(key, config.extensions[key]);
}
}
};
var setThemeColorConfigEnv = (prefix, config) => {
return config?.light?.brand || config?.dark?.brand ? setMultiThemeColorConfigEnv(prefix, config) : setSingleThemeColorConfigEnv(prefix, config);
};
var setSingleThemeColorConfigEnv = (prefix, config) => {
if (config.dark) {
process.env[`${prefix}DARK`] = config.dark;
}
if (config.light) {
process.env[`${prefix}LIGHT`] = config.light;
}
if (config.brand) {
process.env[`${prefix}BRAND`] = config.brand;
}
if (config.alternate) {
process.env[`${prefix}ALTERNATE`] = config.alternate;
}
if (config.accent) {
process.env[`${prefix}ACCENT`] = config.accent;
}
if (config.link) {
process.env[`${prefix}LINK`] = config.link;
}
if (config.help) {
process.env[`${prefix}HELP`] = config.help;
}
if (config.success) {
process.env[`${prefix}SUCCESS`] = config.success;
}
if (config.info) {
process.env[`${prefix}INFO`] = config.info;
}
if (config.warning) {
process.env[`${prefix}WARNING`] = config.warning;
}
if (config.danger) {
process.env[`${prefix}DANGER`] = config.danger;
}
if (config.fatal) {
process.env[`${prefix}FATAL`] = config.fatal;
}
if (config.positive) {
process.env[`${prefix}POSITIVE`] = config.positive;
}
if (config.negative) {
process.env[`${prefix}NEGATIVE`] = config.negative;
}
};
var setMultiThemeColorConfigEnv = (prefix, config) => {
return {
light: setBaseThemeColorConfigEnv(`${prefix}LIGHT_`, config.light),
dark: setBaseThemeColorConfigEnv(`${prefix}DARK_`, config.dark)
};
};
var setBaseThemeColorConfigEnv = (prefix, config) => {
if (config.foreground) {
process.env[`${prefix}FOREGROUND`] = config.foreground;
}
if (config.background) {
process.env[`${prefix}BACKGROUND`] = config.background;
}
if (config.brand) {
process.env[`${prefix}BRAND`] = config.brand;
}
if (config.alternate) {
process.env[`${prefix}ALTERNATE`] = config.alternate;
}
if (config.accent) {
process.env[`${prefix}ACCENT`] = config.accent;
}
if (config.link) {
process.env[`${prefix}LINK`] = config.link;
}
if (config.help) {
process.env[`${prefix}HELP`] = config.help;
}
if (config.success) {
process.env[`${prefix}SUCCESS`] = config.success;
}
if (config.info) {
process.env[`${prefix}INFO`] = config.info;
}
if (config.warning) {
process.env[`${prefix}WARNING`] = config.warning;
}
if (config.danger) {
process.env[`${prefix}DANGER`] = config.danger;
}
if (config.fatal) {
process.env[`${prefix}FATAL`] = config.fatal;
}
if (config.positive) {
process.env[`${prefix}POSITIVE`] = config.positive;
}
if (config.negative) {
process.env[`${prefix}NEGATIVE`] = config.negative;
}
};
// ../config-tools/src/create-storm-config.ts
var _extension_cache = /* @__PURE__ */ new WeakMap();
var _static_cache = void 0;
var createStormWorkspaceConfig = async (extensionName, schema, workspaceRoot, skipLogs = false, useDefault = true) => {
let result;
if (!_static_cache?.data || !_static_cache?.timestamp || _static_cache.timestamp < Date.now() - 8e3) {
let _workspaceRoot = workspaceRoot;
if (!_workspaceRoot) {
_workspaceRoot = findWorkspaceRoot();
}
const configEnv = getConfigEnv();
const configFile = await getConfigFile(_workspaceRoot);
if (!configFile) {
if (!skipLogs) {
writeWarning(
"No Storm Workspace configuration file found in the current repository. Please ensure this is the expected behavior - you can add a `storm-workspace.json` file to the root of your workspace if it is not.\n",
{ logLevel: "all" }
);
}
if (useDefault === false) {
return void 0;
}
}
const defaultConfig = await getPackageJsonConfig(_workspaceRoot);
result = applyDefaultConfig(
await stormWorkspaceConfigSchema.parseAsync(
defu2(configEnv, configFile, defaultConfig)
)
);
result.workspaceRoot ??= _workspaceRoot;
} else {
result = _static_cache.data;
}
if (schema && extensionName) {
result.extensions = {
...result.extensions,
[extensionName]: createConfigExtension(extensionName, schema)
};
}
_static_cache = {
timestamp: Date.now(),
data: result
};
return result;
};
var createConfigExtension = (extensionName, schema) => {
const extension_cache_key = { extensionName };
if (_extension_cache.has(extension_cache_key)) {
return _extension_cache.get(extension_cache_key);
}
let extension = getExtensionEnv(extensionName);
if (schema) {
extension = schema.parse(extension);
}
_extension_cache.set(extension_cache_key, extension);
return extension;
};
var loadStormWorkspaceConfig = async (workspaceRoot, skipLogs = false) => {
const config = await createStormWorkspaceConfig(
void 0,
void 0,
workspaceRoot,
skipLogs,
true
);
setConfigEnv(config);
if (!skipLogs && !config.skipConfigLogging) {
writeTrace(
`\u2699\uFE0F Using Storm Workspace configuration:
${formatLogMessage(config)}`,
config
);
}
return config;
};
// ../config-tools/src/get-config.ts
var getConfig = (workspaceRoot, skipLogs = false) => {
return loadStormWorkspaceConfig(workspaceRoot, skipLogs);
};
var getWorkspaceConfig = (skipLogs = true, options = {}) => {
let workspaceRoot = options.workspaceRoot;
if (!workspaceRoot) {
workspaceRoot = findWorkspaceRoot(options.cwd);
}
return getConfig(workspaceRoot, skipLogs);
};
export {
getConfig,
getWorkspaceConfig
};