New build infra: Build for Clash (#11)

This commit is contained in:
Sukka
2023-09-11 00:51:35 +08:00
committed by GitHub
parent fa7e2f775c
commit df4a10e180
45 changed files with 661 additions and 237 deletions

View File

@@ -3,10 +3,9 @@ const path = require('path');
const { compareAndWriteFile } = require('./lib/string-array-compare');
const { withBannerArray } = require('./lib/with-banner');
const { minifyRules } = require('./lib/minify-rules');
const { domainDeduper } = require('./lib/domain-deduper');
const { processLine } = require('./lib/process-line');
const { fetchRemoteTextAndCreateReadlineInterface, readFileByLine } = require('./lib/fetch-remote-text-by-line');
const Trie = require('./lib/trie');
const { surgeRulesetToClashClassicalTextRuleset } = require('./lib/clash');
(async () => {
console.time('Total Time - build-cdn-conf');
@@ -40,51 +39,33 @@ const Trie = require('./lib/trie');
}
}
/**
* Dedupe cdn.conf
*/
/** @type {Set<string>} */
const cdnDomains = new Set();
for await (const line of readFileByLine(
path.resolve(__dirname, '../Source/domainset/cdn.conf')
)) {
const l = processLine(line);
if (l) {
cdnDomains.add(l);
}
}
const description = [
'License: AGPL 3.0',
'Homepage: https://ruleset.skk.moe',
'GitHub: https://github.com/SukkaW/Surge',
'',
'This file contains object storage and static assets CDN domains.'
];
const ruleset = minifyRules(cdnDomainsList);
await Promise.all([
compareAndWriteFile(
withBannerArray(
'Sukka\'s Surge Rules - CDN Domains',
[
'License: AGPL 3.0',
'Homepage: https://ruleset.skk.moe',
'GitHub: https://github.com/SukkaW/Surge',
'',
'This file contains object storage and static assets CDN domains.'
],
'Sukka\'s Ruleset - CDN Domains',
description,
new Date(),
minifyRules(cdnDomainsList)
ruleset
),
path.resolve(__dirname, '../List/non_ip/cdn.conf')
),
compareAndWriteFile(
withBannerArray(
'Sukka\'s Surge Rules - CDN Domains',
[
'License: AGPL 3.0',
'Homepage: https://ruleset.skk.moe',
'GitHub: https://github.com/SukkaW/Surge',
'',
'This file contains object storage and static assets CDN domains.'
],
'Sukka\'s Ruleset - CDN Domains',
description,
new Date(),
minifyRules(domainDeduper(Array.from(cdnDomains)))
surgeRulesetToClashClassicalTextRuleset(ruleset)
),
path.resolve(__dirname, '../List/domainset/cdn.conf')
path.resolve(__dirname, '../Clash/non_ip/cdn.txt')
)
]);