it compiled

This commit is contained in:
2022-06-08 09:07:09 -05:00
parent 1884c2b8e9
commit ffe6969889
12 changed files with 996 additions and 1130 deletions

View File

@@ -6,13 +6,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
const esbuild_1 = require("esbuild"); const esbuild_1 = require("esbuild");
const fs_1 = require("fs"); const fs_1 = require("fs");
const paths_1 = require("./paths"); const paths_1 = require("./paths");
const readmefile_1 = require("./readmefile");
const readmeta_1 = __importDefault(require("./readmeta")); const readmeta_1 = __importDefault(require("./readmeta"));
async function compileProject(name) { async function compileProject(name) {
//read meta file //read meta file
let [metaJson, metaString] = readmeta_1.default(name); let [metaJson, metaString] = (0, readmeta_1.default)(name);
let outPath = paths_1.DistPath(name); let outPath = (0, paths_1.DistPath)(name);
await esbuild_1.build({ let error = null;
entryPoints: [paths_1.ScriptPath(name).main], try {
await (0, esbuild_1.build)({
entryPoints: [(0, paths_1.ScriptPath)(name).main],
outfile: outPath, outfile: outPath,
target: 'esnext', target: 'esnext',
platform: 'node', platform: 'node',
@@ -28,23 +31,39 @@ async function compileProject(name) {
UserScriptHomepageURL: `'${metaJson.homepageURL}'`, UserScriptHomepageURL: `'${metaJson.homepageURL}'`,
}, },
}); });
//add UserScript header
let content = fs_1.readFileSync(outPath).toString();
fs_1.writeFileSync(outPath, metaString + content);
} }
if (!fs_1.lstatSync('package.json').isFile()) { catch (e) {
error = e.message;
}
//add UserScript header
let content = (0, fs_1.readFileSync)(outPath).toString();
(0, fs_1.writeFileSync)(outPath, metaString + content);
return [metaJson, error];
}
if (!(0, fs_1.lstatSync)('package.json').isFile()) {
console.error('package.json not found, unwilling to run'); console.error('package.json not found, unwilling to run');
process.exit(1); process.exit(1);
} }
//delete compiled scripts //delete compiled scripts
fs_1.readdirSync(paths_1.DistBase).forEach(file => fs_1.unlinkSync(`${paths_1.DistBase}/${file}`)); (0, fs_1.readdirSync)(paths_1.DistBase).forEach(file => (0, fs_1.unlinkSync)(`${paths_1.DistBase}/${file}`));
//compile scripts (async () => {
fs_1.readdirSync(paths_1.ScriptBase).forEach(name => { let scripts = (0, fs_1.readdirSync)(paths_1.ScriptBase);
let path = paths_1.ScriptPath(name); // let scriptMeta: {
// [name: string]: [UserScriptMetaFull, string | null]
// } = {}
let scriptMeta = [];
for (let name of scripts) {
let path = (0, paths_1.ScriptPath)(name);
if (!name.endsWith('_') && if (!name.endsWith('_') &&
fs_1.lstatSync(path.dir).isDirectory() && (0, fs_1.lstatSync)(path.dir).isDirectory() &&
fs_1.lstatSync(path.main).isFile()) { (0, fs_1.lstatSync)(path.main).isFile()) {
compileProject(name); let [meta, error] = await compileProject(name);
} scriptMeta.push({
meta,
error,
}); });
}
}
(0, readmefile_1.updateReadmeFile)(scriptMeta);
})();
//# sourceMappingURL=main.js.map //# sourceMappingURL=main.js.map

View File

@@ -1 +1 @@
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;;;;AAAA,qCAA+B;AAC/B,2BAMW;AACX,mCAAoE;AACpE,0DAAiC;AAEjC,KAAK,UAAU,cAAc,CAAC,IAAY;IACtC,gBAAgB;IAChB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,kBAAQ,CAAC,IAAI,CAAC,CAAA;IAC3C,IAAI,OAAO,GAAG,gBAAQ,CAAC,IAAI,CAAC,CAAA;IAE5B,MAAM,eAAK,CAAC;QACR,WAAW,EAAE,CAAC,kBAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QACpC,OAAO,EAAE,OAAO;QAEhB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,KAAK;QAEb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QAEb,MAAM,EAAE;YACJ,cAAc,EAAE,IAAI,QAAQ,CAAC,IAAI,GAAG;YACpC,mBAAmB,EAAE,IAAI,QAAQ,CAAC,SAAS,GAAG;YAC9C,iBAAiB,EAAE,IAAI,QAAQ,CAAC,OAAO,GAAG;YAE1C,qBAAqB,EAAE,IAAI,QAAQ,CAAC,WAAW,GAAG;YAClD,oBAAoB,EAAE,IAAI,QAAQ,CAAC,UAAU,GAAG;YAChD,qBAAqB,EAAE,IAAI,QAAQ,CAAC,WAAW,GAAG;SACrD;KACJ,CAAC,CAAA;IAEF,uBAAuB;IACvB,IAAI,OAAO,GAAG,iBAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAA;IAE9C,kBAAa,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,CAAA;AAChD,CAAC;AAED,IAAI,CAAC,cAAS,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE,EAAE;IACrC,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAA;IACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;CAClB;AAED,yBAAyB;AACzB,gBAAW,CAAC,gBAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,eAAU,CAAC,GAAG,gBAAQ,IAAI,IAAI,EAAE,CAAC,CAAC,CAAA;AAExE,iBAAiB;AACjB,gBAAW,CAAC,kBAAU,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;IACnC,IAAI,IAAI,GAAG,kBAAU,CAAC,IAAI,CAAC,CAAA;IAE3B,IACI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QACnB,cAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;QACjC,cAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAC/B;QACE,cAAc,CAAC,IAAI,CAAC,CAAA;KACvB;AACL,CAAC,CAAC,CAAA"} {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;;;;AAAA,qCAA6C;AAC7C,2BAMW;AACX,mCAAoE;AACpE,6CAA2D;AAC3D,0DAAiC;AAGjC,KAAK,UAAU,cAAc,CACzB,IAAY;IAEZ,gBAAgB;IAChB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,IAAA,kBAAQ,EAAC,IAAI,CAAC,CAAA;IAC3C,IAAI,OAAO,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAA;IAE5B,IAAI,KAAK,GAAkB,IAAI,CAAA;IAE/B,IAAI;QACA,MAAM,IAAA,eAAK,EAAC;YACR,WAAW,EAAE,CAAC,IAAA,kBAAU,EAAC,IAAI,CAAC,CAAC,IAAI,CAAC;YACpC,OAAO,EAAE,OAAO;YAEhB,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,MAAM;YAChB,MAAM,EAAE,KAAK;YAEb,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,KAAK;YAEb,MAAM,EAAE;gBACJ,cAAc,EAAE,IAAI,QAAQ,CAAC,IAAI,GAAG;gBACpC,mBAAmB,EAAE,IAAI,QAAQ,CAAC,SAAS,GAAG;gBAC9C,iBAAiB,EAAE,IAAI,QAAQ,CAAC,OAAO,GAAG;gBAE1C,qBAAqB,EAAE,IAAI,QAAQ,CAAC,WAAW,GAAG;gBAClD,oBAAoB,EAAE,IAAI,QAAQ,CAAC,UAAU,GAAG;gBAChD,qBAAqB,EAAE,IAAI,QAAQ,CAAC,WAAW,GAAG;aACrD;SACJ,CAAC,CAAA;KACL;IAAC,OAAO,CAAC,EAAE;QACR,KAAK,GAAI,CAAkB,CAAC,OAAO,CAAA;KACtC;IAED,uBAAuB;IACvB,IAAI,OAAO,GAAG,IAAA,iBAAY,EAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAA;IAE9C,IAAA,kBAAa,EAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,CAAA;IAE5C,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;AAC5B,CAAC;AAED,IAAI,CAAC,IAAA,cAAS,EAAC,cAAc,CAAC,CAAC,MAAM,EAAE,EAAE;IACrC,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAA;IACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;CAClB;AAED,yBAAyB;AACzB,IAAA,gBAAW,EAAC,gBAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAA,eAAU,EAAC,GAAG,gBAAQ,IAAI,IAAI,EAAE,CAAC,CAAC,CAGvE;AAAA,CAAC,KAAK,IAAI,EAAE;IACT,IAAI,OAAO,GAAG,IAAA,gBAAW,EAAC,kBAAU,CAAC,CAAA;IACrC,oBAAoB;IACpB,0DAA0D;IAC1D,SAAS;IAET,IAAI,UAAU,GAAiB,EAAE,CAAA;IAEjC,KAAK,IAAI,IAAI,IAAI,OAAO,EAAE;QACtB,IAAI,IAAI,GAAG,IAAA,kBAAU,EAAC,IAAI,CAAC,CAAA;QAE3B,IACI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YACnB,IAAA,cAAS,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;YACjC,IAAA,cAAS,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAC/B;YACE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAA;YAC9C,UAAU,CAAC,IAAI,CAAC;gBACZ,IAAI;gBACJ,KAAK;aACR,CAAC,CAAA;SACL;KACJ;IAED,IAAA,6BAAgB,EAAC,UAAU,CAAC,CAAA;AAChC,CAAC,CAAC,EAAE,CAAA"}

50
lib/readmefile.js Normal file
View File

@@ -0,0 +1,50 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.updateReadmeFile = void 0;
const fs_1 = require("fs");
function updateReadmeFile(fileList) {
let readmeFile = getReadmeFileName();
if (readmeFile !== null) {
let [readmeStart, readmeEnd] = readReadmeFile(readmeFile);
let installLinks = fileList.map(readmeDataToString).join('\n');
let installLinksAll = `
<!-- START INSTALL LINKS -->
## Installs
${installLinks}
<!-- END INSTALL LINKS -->
`;
let content = [readmeStart, installLinksAll, readmeEnd].join('\n');
(0, fs_1.writeFileSync)(readmeFile, content);
}
}
exports.updateReadmeFile = updateReadmeFile;
function readmeDataToString(readmeData) {
let { meta, error } = readmeData;
let errStr = error !== null ? '~~' : '';
let errMsg = error !== null ? `\n - ${error}` : '';
return `- ${errStr}[${meta.name}](${meta.downloadURL})})${errStr}${errMsg}`;
}
function getReadmeFileName() {
let files = (0, fs_1.readdirSync)('.');
for (let name of files) {
if (/^readme\.md$/i.test(name)) {
return name;
}
}
return null;
}
function readReadmeFile(readmeFile) {
let content = (0, fs_1.readFileSync)(readmeFile).toString();
const regex = /<!-- START INSTALL LINKS -->(?:.|\n)*?<!-- END INSTALL LINKS -->/;
const index = regex.exec(content)?.index;
if (index === undefined) {
if (!content.endsWith('\n')) {
content += '\n';
}
return [content, ''];
}
content = content.replace(regex, '');
return [content.slice(0, index), content.slice(index)];
}
//# sourceMappingURL=readmefile.js.map

1
lib/readmefile.js.map Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"readmefile.js","sourceRoot":"","sources":["../src/readmefile.ts"],"names":[],"mappings":";;;AAAA,2BAA6D;AAQ7D,SAAgB,gBAAgB,CAAC,QAAsB;IACnD,IAAI,UAAU,GAAG,iBAAiB,EAAE,CAAA;IACpC,IAAI,UAAU,KAAK,IAAI,EAAE;QACrB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC,CAAA;QAEzD,IAAI,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE9D,IAAI,eAAe,GAAG;;;;EAI5B,YAAY;;CAEb,CAAA;QAEO,IAAI,OAAO,GAAG,CAAC,WAAW,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClE,IAAA,kBAAa,EAAC,UAAU,EAAE,OAAO,CAAC,CAAA;KACrC;AACL,CAAC;AAlBD,4CAkBC;AAED,SAAS,kBAAkB,CAAC,UAAsB;IAC9C,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,UAAU,CAAA;IAChC,IAAI,MAAM,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;IACvC,IAAI,MAAM,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IACnD,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,MAAM,MAAM,GAAG,MAAM,EAAE,CAAA;AAC/E,CAAC;AAED,SAAS,iBAAiB;IACtB,IAAI,KAAK,GAAG,IAAA,gBAAW,EAAC,GAAG,CAAC,CAAA;IAC5B,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;QACpB,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC5B,OAAO,IAAI,CAAA;SACd;KACJ;IACD,OAAO,IAAI,CAAA;AACf,CAAC;AAED,SAAS,cAAc,CAAC,UAAkB;IACtC,IAAI,OAAO,GAAG,IAAA,iBAAY,EAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAA;IACjD,MAAM,KAAK,GACP,kEAAkE,CAAA;IACtE,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,CAAA;IAExC,IAAI,KAAK,KAAK,SAAS,EAAE;QACrB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACzB,OAAO,IAAI,IAAI,CAAA;SAClB;QACD,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;KACvB;IAED,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IACpC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;AAC1D,CAAC"}

View File

@@ -17,15 +17,15 @@ function default_1(name) {
noframes: false, noframes: false,
grant: '', grant: '',
injectinto: '', injectinto: '',
downloadURL: paths_1.FileUrl(name), downloadURL: (0, paths_1.FileUrl)(name),
supportURL: paths_1.SupportUrl, supportURL: paths_1.SupportUrl,
homepageURL: paths_1.BaseUrl, homepageURL: paths_1.BaseUrl,
unwrap: false, unwrap: false,
}; };
let metaPath = paths_1.ScriptPath(name).meta; let metaPath = (0, paths_1.ScriptPath)(name).meta;
if (fs_1.lstatSync(metaPath).isFile()) { if ((0, fs_1.lstatSync)(metaPath).isFile()) {
try { try {
let args = JSON.parse(fs_1.readFileSync(metaPath).toString()); let args = JSON.parse((0, fs_1.readFileSync)(metaPath).toString());
let key; let key;
for (key in meta) { for (key in meta) {
let val = args[key]; let val = args[key];

View File

@@ -1 +1 @@
{"version":3,"file":"readmeta.js","sourceRoot":"","sources":["../src/readmeta.ts"],"names":[],"mappings":";;AAAA,2BAA4C;AAC5C,mCAAkE;AAGlE,mBAAyB,IAAY;IACjC,IAAI,IAAI,GAAqB;QACzB,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,UAAU;QACrB,KAAK,EAAE,EAAE;QACT,YAAY,EAAE,EAAE;QAChB,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,EAAE;QACf,IAAI,EAAE,EAAE;QACR,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,EAAE;QACT,UAAU,EAAE,EAAE;QACd,WAAW,EAAE,eAAO,CAAC,IAAI,CAAC;QAC1B,UAAU,EAAE,kBAAU;QACtB,WAAW,EAAE,eAAO;QACpB,MAAM,EAAE,KAAK;KAChB,CAAA;IAED,IAAI,QAAQ,GAAG,kBAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAA;IAEpC,IAAI,cAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE;QAC9B,IAAI;YACA,IAAI,IAAI,GAAwB,IAAI,CAAC,KAAK,CACtC,iBAAY,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CACpC,CAAA;YAED,IAAI,GAAuB,CAAA;YAC3B,KAAK,GAAG,IAAI,IAAI,EAAE;gBACd,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;gBAEnB,gCAAgC;gBAChC,IAAI,GAAG,KAAK,SAAS;oBAAE,SAAQ;gBAC/B,IAAI,GAAG,KAAK,KAAK;oBAAE,SAAQ;gBAC3B,IAAI,GAAG,KAAK,EAAE;oBACV,SAGH;gBAAC,IAAI,CAAC,GAAG,CAAS,GAAG,GAAG,CAAA;aAC5B;SACJ;QAAC,OAAO,CAAC,EAAE;YACR,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;SACjB;KACJ;SAAM;QACH,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,oCAAoC,CAAC,CAAA;KAC/D;IAED,MAAM,aAAa,GAAG;QAClB,UAAU,EAAE,aAAa;QACzB,YAAY,EAAE,eAAe;KAChC,CAAA;IAED,OAAO;QACH,IAAI;QACJ;EACL,MAAM,CAAC,IAAI,CAAC,IAAI,CAAmC;aACjD,MAAM,CAAC,GAAG,CAAC,EAAE;YACV,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;YACnB,IAAI,GAAG,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAA;YACnC,IAAI,GAAG,KAAK,KAAK;gBAAE,OAAO,KAAK,CAAA;YAC/B,IAAI,GAAG,KAAK,EAAE;gBAAE,OAAO,KAAK,CAAA;YAC5B,OAAO,IAAI,CAAA;QACf,CAAC,CAAC;aACD,GAAG,CAAC,GAAG,CAAC,EAAE;YACP,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;YACnB,IAAI,OAAO,GACP,GAAG,IAAI,aAAa;gBAChB,CAAC,CAAC,aAAa,CAAC,GAAiC,CAAC;gBAClD,CAAC,CAAC,GAAG,CAAA;YACb,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;YAEjC,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE;gBAC1B,IAAI,GAAG;oBAAE,OAAO,OAAO,OAAO,EAAE,CAAA;aACnC;iBAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;gBAChC,OAAO,OAAO,OAAO,IAAI,GAAG,EAAE,CAAA;aACjC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBAC3B,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;aACxD;YAED,OAAO,EAAE,CAAA;QACb,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;aACrB,IAAI,CAAC,IAAI,CAAC;;CAEd;KACI,CAAA;AACL,CAAC;AAxFD,4BAwFC"} {"version":3,"file":"readmeta.js","sourceRoot":"","sources":["../src/readmeta.ts"],"names":[],"mappings":"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"}

View File

@@ -19,7 +19,8 @@
"author": "", "author": "",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"esbuild": "^0.14.42" "esbuild": "^0.14.42",
"typescript": "^4.7.3"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^17.0.40", "@types/node": "^17.0.40",

523
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
import { build } from 'esbuild' import { build, BuildFailure } from 'esbuild'
import { import {
lstatSync, lstatSync,
readdirSync, readdirSync,
@@ -7,13 +7,20 @@ import {
writeFileSync, writeFileSync,
} from 'fs' } from 'fs'
import { DistBase, DistPath, ScriptBase, ScriptPath } from './paths' import { DistBase, DistPath, ScriptBase, ScriptPath } from './paths'
import { readmeData, updateReadmeFile } from './readmefile'
import readMeta from './readmeta' import readMeta from './readmeta'
import { UserScriptMetaFull } from './types'
async function compileProject(name: string) { async function compileProject(
name: string
): Promise<[UserScriptMetaFull, null | string]> {
//read meta file //read meta file
let [metaJson, metaString] = readMeta(name) let [metaJson, metaString] = readMeta(name)
let outPath = DistPath(name) let outPath = DistPath(name)
let error: null | string = null
try {
await build({ await build({
entryPoints: [ScriptPath(name).main], entryPoints: [ScriptPath(name).main],
outfile: outPath, outfile: outPath,
@@ -35,11 +42,16 @@ async function compileProject(name: string) {
UserScriptHomepageURL: `'${metaJson.homepageURL}'`, UserScriptHomepageURL: `'${metaJson.homepageURL}'`,
}, },
}) })
} catch (e) {
error = (e as BuildFailure).message
}
//add UserScript header //add UserScript header
let content = readFileSync(outPath).toString() let content = readFileSync(outPath).toString()
writeFileSync(outPath, metaString + content) writeFileSync(outPath, metaString + content)
return [metaJson, error]
} }
if (!lstatSync('package.json').isFile()) { if (!lstatSync('package.json').isFile()) {
@@ -51,7 +63,15 @@ if (!lstatSync('package.json').isFile()) {
readdirSync(DistBase).forEach(file => unlinkSync(`${DistBase}/${file}`)) readdirSync(DistBase).forEach(file => unlinkSync(`${DistBase}/${file}`))
//compile scripts //compile scripts
readdirSync(ScriptBase).forEach(name => { ;(async () => {
let scripts = readdirSync(ScriptBase)
// let scriptMeta: {
// [name: string]: [UserScriptMetaFull, string | null]
// } = {}
let scriptMeta: readmeData[] = []
for (let name of scripts) {
let path = ScriptPath(name) let path = ScriptPath(name)
if ( if (
@@ -59,6 +79,13 @@ readdirSync(ScriptBase).forEach(name => {
lstatSync(path.dir).isDirectory() && lstatSync(path.dir).isDirectory() &&
lstatSync(path.main).isFile() lstatSync(path.main).isFile()
) { ) {
compileProject(name) let [meta, error] = await compileProject(name)
} scriptMeta.push({
meta,
error,
}) })
}
}
updateReadmeFile(scriptMeta)
})()

61
src/readmefile.ts Normal file
View File

@@ -0,0 +1,61 @@
import { readdirSync, readFileSync, writeFileSync } from 'fs'
import { UserScriptMetaFull } from './types'
export interface readmeData {
meta: UserScriptMetaFull
error: string | null
}
export function updateReadmeFile(fileList: readmeData[]) {
let readmeFile = getReadmeFileName()
if (readmeFile !== null) {
let [readmeStart, readmeEnd] = readReadmeFile(readmeFile)
let installLinks = fileList.map(readmeDataToString).join('\n')
let installLinksAll = `
<!-- START INSTALL LINKS -->
## Installs
${installLinks}
<!-- END INSTALL LINKS -->
`
let content = [readmeStart, installLinksAll, readmeEnd].join('\n')
writeFileSync(readmeFile, content)
}
}
function readmeDataToString(readmeData: readmeData): string {
let { meta, error } = readmeData
let errStr = error !== null ? '~~' : ''
let errMsg = error !== null ? `\n - ${error}` : ''
return `- ${errStr}[${meta.name}](${meta.downloadURL})})${errStr}${errMsg}`
}
function getReadmeFileName(): string | null {
let files = readdirSync('.')
for (let name of files) {
if (/^readme\.md$/i.test(name)) {
return name
}
}
return null
}
function readReadmeFile(readmeFile: string): [string, string] {
let content = readFileSync(readmeFile).toString()
const regex =
/<!-- START INSTALL LINKS -->(?:.|\n)*?<!-- END INSTALL LINKS -->/
const index = regex.exec(content)?.index
if (index === undefined) {
if (!content.endsWith('\n')) {
content += '\n'
}
return [content, '']
}
content = content.replace(regex, '')
return [content.slice(0, index), content.slice(index)]
}

View File

@@ -1,9 +1,13 @@
import { lstatSync, readFileSync } from 'fs' import { lstatSync, readFileSync } from 'fs'
import { BaseUrl, FileUrl, ScriptPath, SupportUrl } from './paths' import { BaseUrl, FileUrl, ScriptPath, SupportUrl } from './paths'
import { UserDataMeta, UserDataMetaFull, UserDataMetaPartial } from './types' import {
UserScriptMeta,
UserScriptMetaFull,
UserScriptMetaPartial,
} from './types'
export default function (name: string): [UserDataMetaFull, string] { export default function (name: string): [UserScriptMetaFull, string] {
var meta: UserDataMetaFull = { var meta: UserScriptMetaFull = {
name: name, name: name,
namespace: 'zomo.dev', namespace: 'zomo.dev',
match: '', match: '',
@@ -27,11 +31,11 @@ export default function (name: string): [UserDataMetaFull, string] {
if (lstatSync(metaPath).isFile()) { if (lstatSync(metaPath).isFile()) {
try { try {
let args: UserDataMetaPartial = JSON.parse( let args: UserScriptMetaPartial = JSON.parse(
readFileSync(metaPath).toString() readFileSync(metaPath).toString()
) )
let key: keyof UserDataMeta let key: keyof UserScriptMeta
for (key in meta) { for (key in meta) {
let val = args[key] let val = args[key]
@@ -59,7 +63,7 @@ export default function (name: string): [UserDataMetaFull, string] {
return [ return [
meta, meta,
`// ==UserScript== `// ==UserScript==
${(Object.keys(meta) as Array<keyof UserDataMetaFull>) ${(Object.keys(meta) as Array<keyof UserScriptMetaFull>)
.filter(key => { .filter(key => {
let val = meta[key] let val = meta[key]
if (val === undefined) return false if (val === undefined) return false
@@ -69,7 +73,7 @@ ${(Object.keys(meta) as Array<keyof UserDataMetaFull>)
}) })
.map(key => { .map(key => {
let val = meta[key] let val = meta[key]
let key_str = let key_str: string =
key in keyConversion key in keyConversion
? keyConversion[key as keyof typeof keyConversion] ? keyConversion[key as keyof typeof keyConversion]
: key : key

View File

@@ -1,4 +1,4 @@
export interface UserDataMetaPartial { export interface UserScriptMetaPartial {
name?: string name?: string
namespace?: string namespace?: string
match?: string | string[] match?: string | string[]
@@ -18,7 +18,7 @@ export interface UserDataMetaPartial {
unwrap?: boolean unwrap?: boolean
} }
export interface UserDataMeta extends UserDataMetaPartial { export interface UserScriptMeta extends UserScriptMetaPartial {
name: string name: string
namespace: string namespace: string
version: string version: string
@@ -27,7 +27,7 @@ export interface UserDataMeta extends UserDataMetaPartial {
homepageURL: string homepageURL: string
} }
export interface UserDataMetaFull extends UserDataMeta { export interface UserScriptMetaFull extends UserScriptMeta {
match: string | string[] match: string | string[]
excludematch: string | string[] excludematch: string | string[]
description: string description: string