Github项目按版本下载脚本
脚本依赖软件:yum install -y curl wget jq
脚本使用:
例如项目:jgraph/drawio-desktop
bash github_download.sh jgraph drawio-desktop
默认下载项目最近10个版本
bash github_download.sh jgraph drawio-desktop 5
指定下载项目最近5个版本
#!/bin/bash
number=10
#检测参数数量是否正确
if [ "$#" -lt 2 ]; then
echo "Usage: \$0 <user> <repo>"
exit 1
elif [ "$#" -eq 3 ]; then
number=$3
fi
user=$1
repo=$2
# 从GitHub API获取版本号信息,并只保留最新的10个版本
curl -s https://api.github.com/repos/$user/$repo/releases | jq -r '.[].tag_name' | head -n $number | while read -r version
do
# 创建版本号对应的文件夹,包括用户和仓库的层级结构
mkdir -p $user/$repo/$version
# 进入版本号文件夹
cd $user/$repo/$version
# 从GitHub API获取该版本的发布信息
curl -s https://api.github.com/repos/$user/$repo/releases/tags/$version | jq -r '.assets[].browser_download_url' > download_url.txt
cat download_url.txt | while read -r url
do
wget $url || echo $url >> failed_downloads.txt # 下载文件
done
#重新下载失败文件
cat failed_downloads.txt | while read url; do wget $url; done
# 下载README.md文件
#readme_url="https://raw.githubusercontent.com/pinpoint-apm/pinpoint-docker/${version}/README.md"
# 返回到脚本开始执行时的目录
cd - > /dev/null
done
下载项目[Source code]源码包:
bash github_resource_url.sh jgraph drawio-desktop 5
指定下载最近5个版本
#!/bin/bash
number=10
# 检查参数数量
if [ "$#" -lt 2 ]; then
echo "Usage: \$0 <user> <repo>"
exit 1
elif [ "$#" -eq 3 ]; then
number=$3
fi
user=$1
repo=$2
# 从GitHub API获取版本号信息,并只保留最新的10个版本
curl -s https://api.github.com/repos/$user/$repo/tags | jq -r '.[].name' | head -n $number | while read -r version
do
# 创建版本号对应的文件夹,包括用户和仓库的层级结构
mkdir -p $user/$repo/$version
# 进入版本号文件夹
cd $user/$repo/$version
# 下载.tar.gz资源,注意链接的格式
resource_url_tar="https://github.com/$user/$repo/archive/refs/tags/${version}.tar.gz"
wget $resource_url_tar -O "[Source code] ${version}.tar.gz" || echo $resource_url_tar >> failed_downloads.txt
# 下载.zip资源
resource_url_zip="https://github.com/$user/$repo/archive/refs/tags/${version}.zip"
wget $resource_url_zip -O "[Source code] ${version}.zip" || echo $resource_url_zip >> failed_downloads.txt
# 下载README.md文件
#readme_url="https://raw.githubusercontent.com/$user/$repo/${version}/README.md"
#wget -O README.md $readme_url || echo $readme_url >> ../failed_downloads.txt
#重新下载失败文件
cat failed_downloads.txt | while read url; do wget $url; done
# 返回到脚本开始执行时的目录
cd - > /dev/null
done
文章目录
关闭