@storm-software/workspace-tools
Version:
Tools for managing a Storm workspace, including various Nx generators and executors for common development tasks.
63 lines (60 loc) • 1.71 kB
JavaScript
import {
findWorkspaceRoot
} from "./chunk-3J2CP54B.mjs";
// src/utils/apply-workspace-tokens.ts
var applyWorkspaceExecutorTokens = async (option, tokenizerOptions) => {
let result = option;
if (!result) {
return result;
}
let projectName;
let projectRoot;
let sourceRoot;
if (tokenizerOptions?.projectName) {
const context = tokenizerOptions;
projectName = context.projectName;
projectRoot = context.root;
sourceRoot = context.sourceRoot;
} else {
const projectConfig = tokenizerOptions;
projectRoot = projectConfig.root;
if (projectConfig.name) {
projectName = projectConfig.name;
}
if (projectConfig.sourceRoot) {
sourceRoot = projectConfig.sourceRoot;
}
}
if (tokenizerOptions.config) {
const configKeys = Object.keys(tokenizerOptions.config);
if (configKeys.some((configKey) => result.includes(`{${configKey}}`))) {
for (const configKey of configKeys) {
if (result.includes(`{${configKey}}`)) {
result = result.replaceAll(
`{${configKey}}`,
tokenizerOptions.config[configKey]
);
}
}
}
}
if (result.includes("{projectName}")) {
result = result.replaceAll("{projectName}", projectName);
}
if (result.includes("{projectRoot}")) {
result = result.replaceAll("{projectRoot}", projectRoot);
}
if (result.includes("{sourceRoot}")) {
result = result.replaceAll("{sourceRoot}", sourceRoot);
}
if (result.includes("{workspaceRoot}")) {
result = result.replaceAll(
"{workspaceRoot}",
tokenizerOptions.workspaceRoot ?? findWorkspaceRoot()
);
}
return result;
};
export {
applyWorkspaceExecutorTokens
};