From 91f098d89fc5ea214b4e175b8a9361e5d0c13576 Mon Sep 17 00:00:00 2001 From: wcbing Date: Mon, 14 Apr 2025 16:22:16 +0800 Subject: [PATCH] refactor: change repo format to official archive --- get-github-releases.py | 4 ++-- merge-apt-repo.py | 27 +++++++++------------------ run.sh | 35 ++++++++++++++++++++--------------- 3 files changed, 31 insertions(+), 35 deletions(-) diff --git a/get-github-releases.py b/get-github-releases.py index 4962126..e2f887a 100755 --- a/get-github-releases.py +++ b/get-github-releases.py @@ -41,11 +41,11 @@ if __name__ == "__main__": ) # get latest releases tag 获取最新版本标签 location = requests.head(release_url + "/latest").headers.get("Location", "") - match = re.search(r".*releases/tag/([^/]+)", location) + match = re.search(r".*releases/tag/(.*)", location) if not match: continue releases_tag = match.group(1) - version = match.group() if (match := re.search("[0-9].*", releases_tag)) else "" + version = match.group() if (match := re.search("[0-9][^_]*", releases_tag)) else "" for arch, file_name in repo["file_list"].items(): diff --git a/merge-apt-repo.py b/merge-apt-repo.py index 310d8b8..78b1807 100755 --- a/merge-apt-repo.py +++ b/merge-apt-repo.py @@ -111,10 +111,8 @@ def process_repo(r: dict): 获取仓库中不同架构子仓库的内容,最后调用 get_latest 去重并保存。 """ try: - deb_packages = b"" - for arch, path in r["path"].items(): - deb_packages += get_remote_packages(r["repo"], path) - get_latest(deb_packages) + for path in r["path"].values(): + get_latest(get_remote_packages(r["repo"], path)) except Exception as e: logging.error(f"Error processing repo {r.get('name', 'unknown')}: {e}") @@ -152,17 +150,10 @@ if __name__ == "__main__": executor.map(process_repo, repo_list.values()) # 分别输出到不同文件 - os.makedirs("deb/amd64/", exist_ok=True) - os.makedirs("deb/arm64/", exist_ok=True) - - with open("deb/amd64/Packages", "+wb") as f: - for i in package_info["amd64"].values(): - f.write(i) - for i in package_info["all"].values(): - f.write(i) - - with open("deb/arm64/Packages", "+wb") as f: - for i in package_info["arm64"].values(): - f.write(i) - for i in package_info["all"].values(): - f.write(i) + for arch in ["amd64", "arm64"]: + os.makedirs(f"deb/dists/wcbing/main/binary-{arch}/", exist_ok=True) + with open(f"deb/dists/wcbing/main/binary-{arch}/Packages", "+wb") as f: + for i in package_info[arch].values(): + f.write(i) + for i in package_info["all"].values(): + f.write(i) diff --git a/run.sh b/run.sh index 7f1e9a8..d2bbbde 100755 --- a/run.sh +++ b/run.sh @@ -1,29 +1,34 @@ #!/bin/sh -gen_release() { - apt-ftparchive release $1 >$1/Release - gpg --yes --detach-sign -a -o $1/Release.gpg $1/Release - gpg --yes --clearsign -o $1/InRelease $1/Release -} - # check for updates ./get-github-releases.py find get -type f -name "*.sh" -exec sh {} \; +# generate the html +./gen-list-html.py + +# generate the Packages file +## generate the local Packages file cd deb -# generate the local Packages apt-ftparchive packages . > tmpPackages sed -i "s|\./\(https\?\):/|\1://|g" tmpPackages - cd .. -sed -i "s|\./|\.\./|g" deb/tmpPackages + +## merge the Packages file from local package cat $(find packages -name "*.package") >> deb/tmpPackages -# merge the Packages files from third-party repositories + +## merge the Packages files from third-party repositories ./merge-apt-repo.py --local deb/tmpPackages # generate the Release file -gen_release deb/amd64 -gen_release deb/arm64 - -# generate the html -./gen-list-html.py \ No newline at end of file +cd deb/dists/wcbing && \ +echo 'Origin: wcbing APT Repo +Label: wcbing +Suite: wcbing +Codename: wcbing +Architectures: amd64 arm64 +Components: main +Description: wcbing APT Repo || wcbing 的 APT 仓库' > Release && \ +apt-ftparchive release . >> Release && \ +gpg --yes --detach-sign -a -o Release.gpg Release && \ +gpg --yes --clearsign -o InRelease Release