yini-cli
Version:
CLI for parsing and validating YINI config files: type-safe values, nested sections, comments, minimal syntax noise, and optional strict mode.
33 lines (32 loc) • 1.07 kB
JavaScript
import fs from 'node:fs';
import { exit } from 'node:process';
import YINI from 'yini-parser';
import { printObject } from '../utils/print.js';
export const validateFile = (file, options = {}) => {
try {
const content = fs.readFileSync(file, 'utf-8');
const isMeta = true;
const parsed = YINI.parse(content, options.strict ?? false, 'auto', isMeta);
if (!options.silent) {
console.log(`✔ File is valid${options.strict ? ' (strict mode)' : ''}.`);
if (options.details) {
//@todo format parsed.meta to details as
/*
* Details:
* - YINI version: 1.0.0-beta.6
* - Mode: strict
* - Keys: 42
* - Sections: 6
* - Nesting depth: 3
* - Has @yini: true
*/
printObject(parsed.meta);
}
}
exit(0);
}
catch (err) {
console.error(`✖ Validation failed: ${err.message}`);
exit(1);
}
};