UNPKG

plist2

Version:

Converts between .tmLanguage(.plist), .json, .cson and .yaml formats

96 lines (94 loc) 2.74 kB
/* 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); } } }