mirror of
https://github.com/wcbing/wcbing-apt-repo.git
synced 2025-12-29 02:28:30 +08:00
refactor: change repo format to official archive
This commit is contained in:
parent
5b70322258
commit
cd3410180f
@ -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():
|
||||
|
||||
@ -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)
|
||||
|
||||
32
run.sh
32
run.sh
@ -1,26 +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
|
||||
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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user