@dappnode/dappnodesdk
Version:
dappnodesdk is a tool to make the creation of new dappnode packages as simple as possible. It helps to initialize and publish in ethereum blockchain
55 lines • 2.48 kB
JavaScript
import chalk from "chalk";
import { getAllVariantsInPath } from "../../files/variants/getAllPackageVariants.js";
import { generatePackagesProps } from "../../tasks/buildAndUpload/generatePackagesProps.js";
export function getPackagesToBuildProps({ allVariants, commaSeparatedVariants, rootDir, variantsDirPath, composeFileName }) {
const buildVariantMapArgs = { rootDir, variantsDirPath, composeFileName };
if (!allVariants && !commaSeparatedVariants)
return generatePackagesProps({ ...buildVariantMapArgs, variants: null });
const validVariantNames = getValidVariantNames({
variantsDirPath,
variants: commaSeparatedVariants
});
if (validVariantNames.length === 0)
throw new Error(`No valid variants specified. They must be included in: ${variantsDirPath}`);
console.log(`${chalk.dim(`Building package from template for variant(s) ${commaSeparatedVariants}...`)}`);
return generatePackagesProps({
...buildVariantMapArgs,
variants: validVariantNames
});
}
/**
* Main function to retrieve the valid variant names based on the specified variants and available directories.
*/
export function getValidVariantNames({ variantsDirPath, variants }) {
const allVariantNames = getAllVariantsInPath(variantsDirPath);
if (!variants) {
console.log(chalk.dim(`Building all available variants: ${allVariantNames.join(", ")}`));
return allVariantNames;
}
const specifiedVariantNames = parseVariants(variants);
const { validVariants, invalidVariants } = validateVariants(specifiedVariantNames, allVariantNames);
if (invalidVariants.length > 0)
console.error(chalk.red(`Warning: Some specified variants are not valid and will be ignored. Allowed variants: ${allVariantNames.join(", ")}`));
return validVariants;
}
/**
* Parses and trims the comma-separated variant names from the input.
*/
function parseVariants(variants) {
return variants.split(",").map(name => name.trim());
}
/**
* Validates the specified variants against the available variants.
*/
function validateVariants(specifiedVariantNames, allVariantNames) {
return specifiedVariantNames.reduce((acc, name) => {
if (allVariantNames.includes(name)) {
acc.validVariants.push(name);
}
else {
acc.invalidVariants.push(name);
}
return acc;
}, { validVariants: [], invalidVariants: [] });
}
//# sourceMappingURL=variants.js.map