gitversionjs
Version:
Auto-generates SemVer versions from Git tags and branches, GitFlow-style.
39 lines (38 loc) • 1.19 kB
JavaScript
// src/config.ts
import fs from "fs/promises";
import path from "path";
import { pathToFileURL } from "url";
const defaultConfig = {
tagPrefix: "v",
branchPrefixes: {
main: "main",
develop: "develop",
feature: "feature/",
release: "release/",
hotfix: "hotfix/",
},
};
export async function loadConfig(configFilePath) {
const configPath = configFilePath ?? path.resolve(process.cwd(), ".gitversion.config.js");
try {
await fs.access(configPath);
const configModule = await import(pathToFileURL(configPath).href);
const rawConfig = configModule.default;
const validatedConfig = {};
if (typeof rawConfig.tagPrefix === "string") {
validatedConfig.tagPrefix = rawConfig.tagPrefix;
}
if (typeof rawConfig.branchPrefixes === "object" &&
rawConfig.branchPrefixes !== null &&
!Array.isArray(rawConfig.branchPrefixes)) {
validatedConfig.branchPrefixes = rawConfig.branchPrefixes;
}
return {
...defaultConfig,
...validatedConfig,
};
}
catch {
return defaultConfig;
}
}