# eweOS User Repository (Draft) ## Repositories - template: provide package repo example - registry: list of packages and git endpoints (accept PRs) - registry-data: content of EUR, stores collected info about packages ## Directory Structure of User Repository ``` git://endpoint/repo.git / .SRCINFO (Required): workflow reads/checks this file and writes to registry PKGBUILD (Required): workflow also checks (but not source) this file and report errors build_files (Optional) ``` ## Directory Structure of Package Registry ``` git://github.com/eweOS-UserRepo/repos.git / .github/workflow/ packages/ {packagebase1}.json {packagebase2}.json {packagebase3}.json ... workflow/ ``` ### Structure of `{pkgbase}.json` ``` { "endpoint": "git://endpoint/repo.git", "branch": "master (optional)", "keyword": ["keyword1","keyword2"], "maintainer": "User <user@user.com>", "maintainer": "Alternative <user[at]user[dot]com>", "deprecated": false ...... (WIP) } ``` ## Directory Structure of Package Data Registry (Generated) WIP ``` / packages.json: brief list packages/ {packagebase1}.json {packagebase2}.json ...... ``` ### Structure of `packages.json` ``` { "packages": [ { "pkgname": "pkgname1", "pkgdesc": "A simple package", "pkgver": "1.14.5.14", "maintainer": "Test <test[at]test[dot].com>", "lastupdated": 1145141919, "flags": [ "sync_fail", "invalid_pkgbuild", "deprecated", ...... ] }, ...... ], "updated": 1145141919 } ``` ### Structure of `{packagebase}.json` ``` ``` ## Workflow ``` Package 1 --+ | Package 2 --+ | +--> Database (Cloudflare) Package 3 --+ | +---> Workflow --+ Package 4 --+ | | +--> Files in Package Registry Package 5 --+ | Package 6 --+ ``` ### Add package - open PR - workflow triggered - try connect to git endpoint (report if failure) - checkout .SRCINFO, extract info - checkout PKGBUILD, do rule-based check (fail if something wrong) - approve PR ### Update info - cron job triggered / manually triggered - try connect to git endpoint (report if failure) - compare HEAD sha (do nothing if no change) - checkout .SRCINFO, extract info - checkout PKGBUILD, do rule-based check (tag to info if something wrong) - update check timestamp