From ee5515392281be1af144738de83e1e31715bbb9c Mon Sep 17 00:00:00 2001 From: wcbing Date: Sun, 29 Sep 2024 12:29:22 +0800 Subject: [PATCH] rewrite merge module with go --- .gitmodules | 3 ++ README.md | 20 +++++----- data/config.json | 5 +++ .../merge_all_https.json | 0 data/merge_latest_https.json | 27 +++++++++++++ get/code.py | 12 ------ get/microsoft-edge-stable.py | 12 ------ merge_all/merge_all.py | 40 ------------------- merge_latest/firefox.py | 40 ------------------- merge_latest/module/merge_deb.py | 14 ------- merge_latest/sublime.py | 30 -------------- update_gen.sh | 3 +- 12 files changed, 47 insertions(+), 159 deletions(-) create mode 100644 .gitmodules create mode 100644 data/config.json rename merge_all/repo_info.json => data/merge_all_https.json (100%) create mode 100644 data/merge_latest_https.json delete mode 100644 get/code.py delete mode 100644 get/microsoft-edge-stable.py delete mode 100644 merge_all/merge_all.py delete mode 100644 merge_latest/firefox.py delete mode 100644 merge_latest/module/merge_deb.py delete mode 100644 merge_latest/sublime.py diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..2da2d1b --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "merge"] + path = merge + url = https://github.com/wcbing/merge-apt-repo diff --git a/README.md b/README.md index b252950..576be62 100644 --- a/README.md +++ b/README.md @@ -35,8 +35,6 @@ echo "deb [signed-by=/etc/apt/keyrings/wcbing.gpg] https://packages.wcbing.top/d |mihomo|mihomo|[Github Releases](https://github.com/MetaCubeX/mihomo/releases)| |hugo|hugo|[Github Releases](https://github.com/gohugoio/hugo/releases)| |RustDesk|rustdesk|[Github Releases](https://github.com/rustdesk/rustdesk/releases)| -|Visual Studio Code|code|[官网](https://code.visualstudio.com)| -|Microsoft Edge|microsoft-edge-stable|[官网](https://www.microsoft.com/en-us/edge/download)| |Obsidian|obsidian|[Github Releases](https://github.com/obsidianmd/obsidian-releases/releases)| |WPS Office|wps-office|[官网](https://linux.wps.cn/)| |百度网盘|baidunetdisk|[官网](https://pan.baidu.com/download)| @@ -49,13 +47,17 @@ echo "deb [signed-by=/etc/apt/keyrings/wcbing.gpg] https://packages.wcbing.top/d ### 合并自官方 repo -|软件名|包名|渠道|架构| -|-|-|-|-| -|Google Chrome|google-chrome-stable
google-chrome-beta
google-chrome-unstable|官方仓库|x86_64| -|termius|termius-app
termius-beta|官方仓库|x86_64| -|Sublime Text
Sublime Merge|sublime-text
sublime-merge|官方仓库|x86_64, arm64| -|Mozilla Firefox|firefox
firefox_beta
firefox_devedition
firefox_esr
firefox_nightly
|官方仓库|x86_64| -|Steam|steam-launcher
steam-libs-amd64|官方仓库|x86_64| +|软件名|包名| +|-|-| +|Mozilla Firefox|firefox
firefox_beta
firefox_devedition
firefox_esr
firefox_nightly| +|Google Chrome|google-chrome-stable
google-chrome-beta
google-chrome-unstable| +|Microsoft Edge|microsoft-edge-stable
microsoft-edge-beta
microsoft-edge-dev| +|Visual Studio Code|code
code-insiders
code-exploration| +|termius|termius-app
termius-beta| +|Sublime Text
Sublime Merge|sublime-text
sublime-merge| +|Steam|steam-launcher
steam-libs-amd64| +|Tailscale|tailscale
tailscale-nginx-auth| + ## 自建仓库 diff --git a/data/config.json b/data/config.json new file mode 100644 index 0000000..9a10b54 --- /dev/null +++ b/data/config.json @@ -0,0 +1,5 @@ +{ + "packages_https": "deb/Packages", + "merge_all_https": "data/merge_all_https.json", + "merge_latest_https": "data/merge_latest_https.json" +} \ No newline at end of file diff --git a/merge_all/repo_info.json b/data/merge_all_https.json similarity index 100% rename from merge_all/repo_info.json rename to data/merge_all_https.json diff --git a/data/merge_latest_https.json b/data/merge_latest_https.json new file mode 100644 index 0000000..25cdc27 --- /dev/null +++ b/data/merge_latest_https.json @@ -0,0 +1,27 @@ +[ + { + "name": "firefox", + "repo": "https://packages.mozilla.org/apt/", + "amd64_path": "dists/mozilla/main/binary-amd64/Packages" + }, + { + "name": "microsoft-edge", + "repo": "https://packages.microsoft.com/repos/edge/", + "amd64_path": "dists/stable/main/binary-amd64/Packages" + }, + { + "name": "code", + "repo": "https://packages.microsoft.com/repos/code/", + "amd64_path": "dists/stable/main/binary-amd64/Packages" + }, + { + "name": "tailscale", + "repo": "https://pkgs.tailscale.com/stable/debian/", + "amd64_path": "dists/sid/main/binary-amd64/Packages" + }, + { + "name": "sublime", + "repo": "https://download.sublimetext.com/", + "amd64_path": "apt/stable/Packages" + } +] \ No newline at end of file diff --git a/get/code.py b/get/code.py deleted file mode 100644 index eaa6651..0000000 --- a/get/code.py +++ /dev/null @@ -1,12 +0,0 @@ -import requests -import re -from module.check import deb - -x64_deb_req = "https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64" - -res = requests.head(x64_deb_req) -version = re.findall("_(.*)-", res.headers["Location"])[0] -x64_deb_url = res.headers["Location"] -# print(version, x64_deb_url) - -deb("code", version, x64_deb_url) diff --git a/get/microsoft-edge-stable.py b/get/microsoft-edge-stable.py deleted file mode 100644 index f7b87ac..0000000 --- a/get/microsoft-edge-stable.py +++ /dev/null @@ -1,12 +0,0 @@ -import requests -import re -from module.check import deb - -x64_deb_url = "https://go.microsoft.com/fwlink?linkid=2149051" - -res = requests.head(x64_deb_url) -version = re.findall("_(.*)_", res.headers["Location"])[0] -x64_deb_url = res.headers["Location"] -# print(version, x64_deb_url) - -deb("microsoft-edge-stable", version, x64_deb_url) diff --git a/merge_all/merge_all.py b/merge_all/merge_all.py deleted file mode 100644 index e6ef0bd..0000000 --- a/merge_all/merge_all.py +++ /dev/null @@ -1,40 +0,0 @@ -import requests -import json - - -""" -Merge all deb packages info from repos to a Packages file. -These repos only include the latest deb packages. -""" - -repo_info_list = [] -amd64_Packages_all = "" - -# read all repo info from json file -with open("merge_all/repo_info.json", "r") as all_repo_info: - repo_info_list = json.loads(all_repo_info.read()) -all_repo_info.close() - -""" -repo info json format: -{ - "name": repo name - "repo": repo url, end with "/" - "Packages_path": repo Packages file path, start with no "/" -} -""" - -# get deb packages info from repo -for i in repo_info_list: - # get amd64 deb packages info - if "amd64_path" in i: - amd64_Packages_info = requests.get(i["repo"] + i["amd64_path"]).text - amd64_Packages_all += amd64_Packages_info.replace( - "Filename: ", "Filename: " + i["repo"] - ) - print(i["name"] + " x64 repo: done") - -# write deb packages info to local Packages file -with open("deb/Packages", "a+") as f: - f.write(amd64_Packages_all) -f.close() diff --git a/merge_latest/firefox.py b/merge_latest/firefox.py deleted file mode 100644 index f1c3542..0000000 --- a/merge_latest/firefox.py +++ /dev/null @@ -1,40 +0,0 @@ -import requests -import re -from module.merge_deb import merge_latest_deb - -deb_repo = "https://packages.mozilla.org/apt/" - -x64_deb_Packages_path = "dists/mozilla/main/binary-amd64/Packages" -x64_deb_Packages = requests.get(deb_repo + x64_deb_Packages_path).text -x64_debs = re.split("(?=Package: )", x64_deb_Packages)[1:] - -# firefox 的 Packages 按照版本升序排列,最后一个即为最新版本 - -firefox_x64_debs = [] -firefox_beta_x64_debs = [] -firefox_devedition_x64_debs = [] -firefox_esr_x64_debs = [] -firefox_nightly_x64_debs = [] - -for x64_deb in x64_debs: - if "Package: firefox\n" in x64_deb: - firefox_x64_debs.append(x64_deb) - elif "Package: firefox-beta\n" in x64_deb: - firefox_beta_x64_debs.append(x64_deb) - elif "Package: firefox-devedition\n" in x64_deb: - firefox_devedition_x64_debs.append(x64_deb) - elif "Package: firefox-esr\n" in x64_deb: - firefox_esr_x64_debs.append(x64_deb) - elif "Package: firefox-nightly\n" in x64_deb: - firefox_nightly_x64_debs.append(x64_deb) - -x64_deb_latest = ( - firefox_x64_debs[-1] - + firefox_beta_x64_debs[-1] - + firefox_devedition_x64_debs[-1] - + firefox_esr_x64_debs[-1] - + firefox_nightly_x64_debs[-1] - + "\n" -) - -merge_latest_deb("firefox", deb_repo, x64_deb_latest) diff --git a/merge_latest/module/merge_deb.py b/merge_latest/module/merge_deb.py deleted file mode 100644 index 013b076..0000000 --- a/merge_latest/module/merge_deb.py +++ /dev/null @@ -1,14 +0,0 @@ -def merge_latest_deb(name, repo, deb_latest, local_Packages_path="deb/Packages"): - r"""Merge latest deb packages info from a repo to a Packages file - - :param name: repo name - :param repo: repo url, end with "/" - :param deb_latest: latest deb package info manually organized - :param local_Packages_path: local Packages file path, default is "deb/Packages" - :return: None - """ - - with open(local_Packages_path, "a+") as f: - f.write(deb_latest.replace("Filename: ", "Filename: " + repo)) - f.close() - print(name + " repo: done") diff --git a/merge_latest/sublime.py b/merge_latest/sublime.py deleted file mode 100644 index d797b0f..0000000 --- a/merge_latest/sublime.py +++ /dev/null @@ -1,30 +0,0 @@ -import requests -import re -from module.merge_deb import merge_latest_deb - -deb_repo = "https://download.sublimetext.com/" - -deb_Packages_url = deb_repo + "apt/stable/Packages" -deb_Packages = requests.get(deb_Packages_url).text -debs = re.split("(?=Package: )", deb_Packages)[1:] -# print(debs) - -# sublime 的 Packages 按照版本升序排列,倒数两个为 amd64 和 arm64 最新版本 - -sublime_text_debs = [] -sublime_merge_debs = [] - -for deb in debs: - if "Package: sublime-text\n" in deb: - sublime_text_debs.append(deb) - elif "Package: sublime-merge\n" in deb: - sublime_merge_debs.append(deb) - -deb_latest = ( - sublime_text_debs[-2] - + sublime_text_debs[-1] - + sublime_merge_debs[-2] - + sublime_merge_debs[-1] -) - -merge_latest_deb("sublime", deb_repo, deb_latest) diff --git a/update_gen.sh b/update_gen.sh index bb04f18..3ebc55c 100755 --- a/update_gen.sh +++ b/update_gen.sh @@ -10,8 +10,7 @@ apt-ftparchive packages . > Packages # merge the Packages files of third-party repositories cd .. -find merge_latest -maxdepth 1 -type f -name "*.py" -exec python3 {} \; -python3 merge_all/merge_all.py +./merge-apt-repo cd deb # list brief information about packages