plist2
Version:
Converts between .tmLanguage(.plist), .json, .cson and .yaml formats
96 lines (94 loc) • 2.74 kB
JavaScript
/* eslint-disable */
/*
dester builds:
cli.ts
*/
import fs from 'fs';
import path from 'path';
import { js2yaml, yaml2js, yaml2plist, yaml2json, yaml2cson, js2plist, plist2js, plist2yaml, plist2json, plist2cson, js2json, json2js, json2yaml, json2plist, json2cson, js2cson, cson2js, cson2yaml, cson2plist, cson2json } from '..';
/* filename: cli.ts
timestamp: 2024-12-13T15:18:03.721Z */
var regex = /^\.((?:j|c)son|ya?ml).*/i;
var getExt = v => {
var ext = path.extname(v) || '.' + path.basename(v);
var file = (ext.match(regex) || ['', 'plist'])[1].toLowerCase();
// console.log('ext: ' + ext, file)
return file === 'yml' ? 'yaml' : file;
};
var input = process.argv[2] || '';
var output = process.argv[3] || '';
if (!input) console.error('ERROR: Need to specify the "input" file');else if (!output) console.error('ERROR: Need to specify the "output" file or ext');else {
input = path.resolve(input);
output = path.resolve(output);
var bn = path.basename(output);
if (!path.extname(output) || !bn) output = input + (bn[0] === '.' ? '' : '.') + bn;
// console.log(input)
// console.log(output)
var inputExt = getExt(input);
var outputExt = getExt(output);
// console.log(inputExt)
// console.log(outputExt)
var parser;
switch (inputExt + '2' + outputExt) {
case 'cson2json':
parser = cson2json;
break;
case 'cson2plist':
parser = cson2plist;
break;
case 'cson2yaml':
parser = cson2yaml;
break;
case 'cson2cson':
parser = source => js2cson(cson2js(source));
break;
case 'json2cson':
parser = json2cson;
break;
case 'json2plist':
parser = json2plist;
break;
case 'json2yaml':
parser = json2yaml;
break;
case 'json2json':
parser = source => js2json(json2js(source));
break;
case 'plist2cson':
parser = plist2cson;
break;
case 'plist2json':
parser = plist2json;
break;
case 'plist2yaml':
parser = plist2yaml;
break;
case 'plist2plist':
parser = source => js2plist(plist2js(source));
break;
case 'yaml2cson':
parser = yaml2cson;
break;
case 'yaml2json':
parser = yaml2json;
break;
case 'yaml2plist':
parser = yaml2plist;
break;
case 'yaml2yaml':
parser = source => js2yaml(yaml2js(source));
break;
default:
throw new Error();
}
if (!parser) console.error('ERROR: "' + inputExt + '" and "' + outputExt + '" - not work');else {
try {
fs.mkdirSync(path.dirname(output), {
recursive: true
});
fs.writeFileSync(output, parser(fs.readFileSync(input, 'utf8')));
} catch (e) {
console.error(e);
}
}
}