lingotags
Version:
[](https://opensource.org/licenses/MIT) [](https://www.npmjs.com/package/lingotags)
46 lines • 2.05 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateConfig = exports.loadConfig = exports.ConfigSchema = void 0;
exports.initConfig = initConfig;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const zod_1 = require("zod");
exports.ConfigSchema = zod_1.z.object({
searchDirectory: zod_1.z
.string()
.min(3, "Search directory is required, and must be at least 3 characters"),
outputFile: zod_1.z
.string()
.min(3, "Output file path is required and must be at least 3 characters"),
manifest: zod_1.z.string().optional().describe("Path to manifest file for reverts"),
defaultLanguage: zod_1.z.string().length(2).default("en"),
filePattern: zod_1.z.string().optional().default("**/*.{html,tsx,jsx}"),
verbose: zod_1.z.boolean().optional().default(false),
});
const loadConfig = (configPath = "./config.json") => {
const resolvedPath = path_1.default.resolve(configPath);
if (!fs_1.default.existsSync(resolvedPath)) {
throw new Error(`Configuration file not found: ${resolvedPath}`);
}
const rawConfig = JSON.parse(fs_1.default.readFileSync(resolvedPath, "utf-8"));
return exports.ConfigSchema.parse(rawConfig);
};
exports.loadConfig = loadConfig;
const validateConfig = (config) => exports.ConfigSchema.parse(config);
exports.validateConfig = validateConfig;
async function initConfig() {
const configPath = "./config.json";
const defaultConfig = {
searchDirectory: "./",
outputFile: "translations.json",
filePattern: "**/*.{html,tsx,jsx}",
verbose: false,
manifest: "lingotags-manifest.json",
};
fs_1.default.writeFileSync(configPath, JSON.stringify(defaultConfig, null, 2), "utf-8");
console.log("✅ Config file created:", configPath);
}
//# sourceMappingURL=configUtils.js.map