Skip to content

Commit

Permalink
lite ruleset
Browse files Browse the repository at this point in the history
  • Loading branch information
Ayideyia committed Nov 13, 2024
1 parent 72f8f7c commit a8eb28f
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 4 deletions.
8 changes: 6 additions & 2 deletions .github/workflows/update_index.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,19 @@ jobs:
run: |
git clone -b meta --depth=1 https://github.com/MetaCubeX/meta-rules-dat.git meta
git clone -b sing --depth=1 https://github.com/MetaCubeX/meta-rules-dat.git sing
node generate.mjs
node generate-lite.mjs
openssl dgst -sha256 meta.json | sed 's/([^)]*)//g' > meta-version.txt
openssl dgst -sha256 sing.json | sed 's/([^)]*)//g' > sing-version.txt
node generate-full.mjs
openssl dgst -sha256 meta-full.json | sed 's/([^)]*)//g' > meta-full-version.txt
openssl dgst -sha256 sing-full.json | sed 's/([^)]*)//g' > sing-full-version.txt
- name: Create Release and Upload Assets
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ./{meta.json,sing.json,meta-version.txt,sing-version.txt}
file: ./{*.json,*.txt}
file_glob: true
tag: latest
release_name: latest
Expand Down
4 changes: 2 additions & 2 deletions generate.mjs → generate-full.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ function generateMeta() {
list: geosite.concat(geoip),
});

fs.writeFileSync("./meta.json", content, { encoding: "utf-8" });
fs.writeFileSync("./meta-full.json", content, { encoding: "utf-8" });
}

function generateSing() {
Expand All @@ -57,7 +57,7 @@ function generateSing() {
list: geosite.concat(geoip),
});

fs.writeFileSync("./sing.json", content, { encoding: "utf-8" });
fs.writeFileSync("./sing-full.json", content, { encoding: "utf-8" });
}

generateMeta();
Expand Down
56 changes: 56 additions & 0 deletions generate-lite.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
import fs from 'fs';
import DescriptionMap from './description-map.mjs';

function generate(path, geodata, ext) {
const dirs = fs.readdirSync(path, { encoding: 'utf-8' });
const files = dirs.filter((file) => file.endsWith(ext));
const list = files.map((item) => {
const name = item.substring(0, item.length - ext.length);
const content = fs.readFileSync(path + item, { encoding: 'utf-8' });
let count = 0;

if (ext === '.list') {
count = content.split('\n').length;
} else if (ext === '.json') {
count = JSON.parse(content).rules.reduce(
(p, c) => Object.values(c).reduce((p, c) => (Array.isArray(c) ? p + c.length : p + 1), 0) + p,
0
);
}

return {
name,
description: DescriptionMap[name],
type: geodata,
count,
};
});
return list;
}

function generateMeta() {
const geosite = generate('./meta/geo-lite/geosite/', 'geosite', '.list');
const geoip = generate('./meta/geo-lite/geoip/', 'geoip', '.list');
const content = JSON.stringify({
geosite: 'https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@meta/geo-lite/geosite/',
geoip: 'https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@meta/geo-lite/geoip/',
list: geosite.concat(geoip),
});

fs.writeFileSync('./meta.json', content, { encoding: 'utf-8' });
}

function generateSing() {
const geosite = generate('./sing/geo-lite/geosite/', 'geosite', '.json');
const geoip = generate('./sing/geo-lite/geoip/', 'geoip', '.json');
const content = JSON.stringify({
geosite: 'https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@sing/geo-lite/geosite/',
geoip: 'https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@sing/geo-lite/geoip/',
list: geosite.concat(geoip),
});

fs.writeFileSync('./sing.json', content, { encoding: 'utf-8' });
}

generateMeta();
generateSing();

0 comments on commit a8eb28f

Please sign in to comment.