From e7fdc0de7ae1438aa1f865020cd0f375e6db1d5a Mon Sep 17 00:00:00 2001 From: Krzysztof Modras Date: Fri, 5 Jan 2024 16:15:29 +0100 Subject: [PATCH] Export in TXT format (#198) --- .github/workflows/release.yml | 10 ++++++++++ package.json | 5 +++-- scripts/export-txt/index.js | 31 +++++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 scripts/export-txt/index.js diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 176d1c8b..7a78b20a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -96,3 +96,13 @@ jobs: asset_path: ./dist/trackerdb.engine asset_name: trackerdb.engine asset_content_type: application/octet-stream + + - name: Upload TXT + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ github.token }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./dist/trackerdb.txt + asset_name: trackerdb.txt + asset_content_type: text/plain diff --git a/package.json b/package.json index 6133663e..98dde1bf 100644 --- a/package.json +++ b/package.json @@ -8,10 +8,11 @@ "test": "node test/index.js", "lint": "eslint --ignore-path .gitignore --ext .js,.ts .", "update-docs": "node scripts/update-docs.js", - "export": "npm run export-json && npm run export-engine && npm run export-sql", + "export": "npm run export-json && npm run export-engine && npm run export-sql && npm run export-txt", "export-sql": "node scripts/export-sql/index.js", "export-engine": "node scripts/export-engine/index.js", - "export-json": "node scripts/export-json/index.js" + "export-json": "node scripts/export-json/index.js", + "export-txt": "node scripts/export-txt/index.js" }, "main": "dist/cjs/index.js", "module": "dist/mjs/index.js", diff --git a/scripts/export-txt/index.js b/scripts/export-txt/index.js new file mode 100644 index 00000000..8b9b8b02 --- /dev/null +++ b/scripts/export-txt/index.js @@ -0,0 +1,31 @@ +import { rmSync, existsSync, writeFileSync } from 'node:fs'; +import path from 'node:path'; +import { prepareDistFolder, BASE_PATH, getSpecs } from '../helpers.js'; + +(async () => { + prepareDistFolder(); + + const outputPath = path.join(BASE_PATH, 'dist', 'trackerdb.txt'); + + if (existsSync(outputPath)) { + rmSync(outputPath); + } + + const FILTERS = []; + + for (const [id, spec] of getSpecs('patterns')) { + const category = spec.field('category').requiredStringValue(); + const filters = spec.field('filters').optionalStringValue(); + if (filters) { + for (const line of filters.split(/[\r\n]+/g)) { + const trimmed = line.trim(); + if (trimmed && !trimmed.startsWith('!')) { + FILTERS.push(`! trackerdb_id:${id} trackerdb_category:${category}`); + FILTERS.push(trimmed); + } + } + } + } + + writeFileSync(outputPath, FILTERS.join('\n')); +})();