Files
cunningham/packages/tokens/src/bin/ConfigLoader.ts

51 lines
1.2 KiB
TypeScript
Raw Normal View History

import path from "path";
import * as fs from "fs";
import deepmerge from "deepmerge";
import { ConfigShape } from "TokensGenerator";
import { workPath } from "Paths";
import { register } from "ts-node";
import Config from "./Config";
const getLocalConfig = async () => {
const filename = Config.configurationFilenames
.map((filename_) => path.join(workPath(), filename_))
.find((filename_) => fs.existsSync(filename_));
if (!filename) {
console.log("No local config found, using default config.");
return {};
}
console.log("Found local config file: " + filename);
const ext = path.extname(filename);
if (ext === ".ts") {
registerTypescriptLoader();
}
const config = await import(filename);
return config.default;
};
const registerTypescriptLoader = () => {
register({
moduleTypes: {
"**/*.ts": "cjs",
},
compilerOptions: {
module: "commonjs",
},
});
};
const getDistConfig = async () => {
const config = await import("./cunningham.dist.js");
return config.default;
};
export const getConfig = async () => {
const localConfig = await getLocalConfig();
const distConfig = await getDistConfig();
const config: ConfigShape = deepmerge(distConfig, localConfig);
return config;
};