it compiled
This commit is contained in:
81
lib/main.js
81
lib/main.js
@@ -6,45 +6,64 @@ 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 {
|
||||||
outfile: outPath,
|
await (0, esbuild_1.build)({
|
||||||
target: 'esnext',
|
entryPoints: [(0, paths_1.ScriptPath)(name).main],
|
||||||
platform: 'node',
|
outfile: outPath,
|
||||||
format: 'esm',
|
target: 'esnext',
|
||||||
bundle: true,
|
platform: 'node',
|
||||||
minify: false,
|
format: 'esm',
|
||||||
define: {
|
bundle: true,
|
||||||
UserScriptName: `'${metaJson.name}'`,
|
minify: false,
|
||||||
UserScriptNamespace: `'${metaJson.namespace}'`,
|
define: {
|
||||||
UserScriptVersion: `'${metaJson.version}'`,
|
UserScriptName: `'${metaJson.name}'`,
|
||||||
UserScriptDownloadURL: `'${metaJson.downloadURL}'`,
|
UserScriptNamespace: `'${metaJson.namespace}'`,
|
||||||
UserScriptSupportURL: `'${metaJson.supportURL}'`,
|
UserScriptVersion: `'${metaJson.version}'`,
|
||||||
UserScriptHomepageURL: `'${metaJson.homepageURL}'`,
|
UserScriptDownloadURL: `'${metaJson.downloadURL}'`,
|
||||||
},
|
UserScriptSupportURL: `'${metaJson.supportURL}'`,
|
||||||
});
|
UserScriptHomepageURL: `'${metaJson.homepageURL}'`,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
error = e.message;
|
||||||
|
}
|
||||||
//add UserScript header
|
//add UserScript header
|
||||||
let content = fs_1.readFileSync(outPath).toString();
|
let content = (0, fs_1.readFileSync)(outPath).toString();
|
||||||
fs_1.writeFileSync(outPath, metaString + content);
|
(0, fs_1.writeFileSync)(outPath, metaString + content);
|
||||||
|
return [metaJson, error];
|
||||||
}
|
}
|
||||||
if (!fs_1.lstatSync('package.json').isFile()) {
|
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: {
|
||||||
if (!name.endsWith('_') &&
|
// [name: string]: [UserScriptMetaFull, string | null]
|
||||||
fs_1.lstatSync(path.dir).isDirectory() &&
|
// } = {}
|
||||||
fs_1.lstatSync(path.main).isFile()) {
|
let scriptMeta = [];
|
||||||
compileProject(name);
|
for (let name of scripts) {
|
||||||
|
let path = (0, paths_1.ScriptPath)(name);
|
||||||
|
if (!name.endsWith('_') &&
|
||||||
|
(0, fs_1.lstatSync)(path.dir).isDirectory() &&
|
||||||
|
(0, fs_1.lstatSync)(path.main).isFile()) {
|
||||||
|
let [meta, error] = await compileProject(name);
|
||||||
|
scriptMeta.push({
|
||||||
|
meta,
|
||||||
|
error,
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
(0, readmefile_1.updateReadmeFile)(scriptMeta);
|
||||||
|
})();
|
||||||
//# sourceMappingURL=main.js.map
|
//# sourceMappingURL=main.js.map
|
||||||
@@ -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
50
lib/readmefile.js
Normal 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
1
lib/readmefile.js.map
Normal 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"}
|
||||||
@@ -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];
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"readmeta.js","sourceRoot":"","sources":["../src/readmeta.ts"],"names":[],"mappings":"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"}
|
{"version":3,"file":"readmeta.js","sourceRoot":"","sources":["../src/readmeta.ts"],"names":[],"mappings":"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"}
|
||||||
@@ -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",
|
||||||
|
|||||||
1811
pnpm-lock.yaml
generated
1811
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
83
src/main.ts
83
src/main.ts
@@ -1,4 +1,4 @@
|
|||||||
import { build } from 'esbuild'
|
import { build, BuildFailure } from 'esbuild'
|
||||||
import {
|
import {
|
||||||
lstatSync,
|
lstatSync,
|
||||||
readdirSync,
|
readdirSync,
|
||||||
@@ -7,39 +7,51 @@ 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)
|
||||||
|
|
||||||
await build({
|
let error: null | string = null
|
||||||
entryPoints: [ScriptPath(name).main],
|
|
||||||
outfile: outPath,
|
|
||||||
|
|
||||||
target: 'esnext',
|
try {
|
||||||
platform: 'node',
|
await build({
|
||||||
format: 'esm',
|
entryPoints: [ScriptPath(name).main],
|
||||||
|
outfile: outPath,
|
||||||
|
|
||||||
bundle: true,
|
target: 'esnext',
|
||||||
minify: false,
|
platform: 'node',
|
||||||
|
format: 'esm',
|
||||||
|
|
||||||
define: {
|
bundle: true,
|
||||||
UserScriptName: `'${metaJson.name}'`,
|
minify: false,
|
||||||
UserScriptNamespace: `'${metaJson.namespace}'`,
|
|
||||||
UserScriptVersion: `'${metaJson.version}'`,
|
|
||||||
|
|
||||||
UserScriptDownloadURL: `'${metaJson.downloadURL}'`,
|
define: {
|
||||||
UserScriptSupportURL: `'${metaJson.supportURL}'`,
|
UserScriptName: `'${metaJson.name}'`,
|
||||||
UserScriptHomepageURL: `'${metaJson.homepageURL}'`,
|
UserScriptNamespace: `'${metaJson.namespace}'`,
|
||||||
},
|
UserScriptVersion: `'${metaJson.version}'`,
|
||||||
})
|
|
||||||
|
UserScriptDownloadURL: `'${metaJson.downloadURL}'`,
|
||||||
|
UserScriptSupportURL: `'${metaJson.supportURL}'`,
|
||||||
|
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,14 +63,29 @@ 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 path = ScriptPath(name)
|
let scripts = readdirSync(ScriptBase)
|
||||||
|
// let scriptMeta: {
|
||||||
|
// [name: string]: [UserScriptMetaFull, string | null]
|
||||||
|
// } = {}
|
||||||
|
|
||||||
if (
|
let scriptMeta: readmeData[] = []
|
||||||
!name.endsWith('_') &&
|
|
||||||
lstatSync(path.dir).isDirectory() &&
|
for (let name of scripts) {
|
||||||
lstatSync(path.main).isFile()
|
let path = ScriptPath(name)
|
||||||
) {
|
|
||||||
compileProject(name)
|
if (
|
||||||
|
!name.endsWith('_') &&
|
||||||
|
lstatSync(path.dir).isDirectory() &&
|
||||||
|
lstatSync(path.main).isFile()
|
||||||
|
) {
|
||||||
|
let [meta, error] = await compileProject(name)
|
||||||
|
scriptMeta.push({
|
||||||
|
meta,
|
||||||
|
error,
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
|
||||||
|
updateReadmeFile(scriptMeta)
|
||||||
|
})()
|
||||||
|
|||||||
61
src/readmefile.ts
Normal file
61
src/readmefile.ts
Normal 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)]
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user