Files
browser-scripts-builder/lib/readmeta.js
2022-06-11 00:05:32 -05:00

107 lines
3.1 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const fs_1 = require("fs");
const main_1 = require("./main");
function readMeta(name) {
let paths = main_1.AllPaths.script(name);
let urls = main_1.AllPaths.url;
var meta = {
name: name,
namespace: 'zomo.dev',
match: '',
excludematch: '',
version: '0.0.0',
description: '',
icon: '',
require: '',
resource: '',
runat: '',
noframes: false,
grant: '',
injectinto: '',
downloadURL: paths.url,
supportURL: urls.support,
homepageURL: urls.base,
unwrap: false,
};
let metaPath = paths.meta;
if ((0, fs_1.existsSync)(metaPath) && (0, fs_1.lstatSync)(metaPath).isFile()) {
try {
let args = JSON.parse((0, fs_1.readFileSync)(metaPath).toString());
let key;
for (key in meta) {
let val = args[key];
//cases where the value is empty
if (val === undefined)
continue;
if (val === false)
continue;
if (val === '')
continue;
meta[key] = val;
}
}
catch (e) {
console.log(e);
}
}
else {
console.log(`${metaPath} not found, using default metadata`);
}
const keyConversion = {
injectinto: 'inject-into',
excludematch: 'exclude-match',
};
return {
meta,
metaString: `// ==UserScript==
${Object.keys(meta)
.filter(key => {
let val = meta[key];
if (val === undefined)
return false;
if (val === false)
return false;
if (val === '')
return false;
return true;
})
.map(key => {
let val = meta[key];
let key_str = key in keyConversion
? keyConversion[key]
: key;
key_str = key_str.padEnd(12, ' ');
if (typeof val === 'boolean') {
//bool
if (val)
return `// @${key_str}`;
}
else if (typeof val === 'string') {
//string
return `// @${key_str} ${val}`;
}
else if (Array.isArray(val)) {
//multiple
return val.map(v => `// @${key_str} ${v}`).join('\n');
}
else if (typeof val === 'object') {
//multilingual
let langs = val;
return Object.keys(langs)
.map(lang => {
let langStr = lang === 'default' ? '' : `:${lang}`;
return `// @${key_str}${langStr} ${langs[lang]}`;
})
.join('\n');
}
return '';
})
.filter(l => l.length)
.join('\n')}
// ==/UserScript==
`,
};
}
exports.default = readMeta;
//# sourceMappingURL=readmeta.js.map