pull file
Some checks failed
CodeQL / Analyze (csharp) (push) Has been cancelled
Close Stale Issues / close_stale_issues (push) Has been cancelled
repo-sync / repo-sync (push) Has been cancelled
auto-deploy-tencent-scf / pre-check (push) Has been cancelled
auto-deploy-tencent-scf / deploy serverless (push) Has been cancelled

This commit is contained in:
2026-02-11 23:32:56 +08:00
commit e519cac94e
656 changed files with 45058 additions and 0 deletions

155
scripts/publish.sh Normal file
View File

@@ -0,0 +1,155 @@
#!/usr/bin/env bash
set -e
set -u
set -o pipefail
echo ' ____ _ _____ _ '
echo ' | __ ) _| |_|_ _|__ ___ | | '
echo ' | _ \(_) (_) | |/ _ \ / _ \| | '
echo ' | |_) | | | | | | (_) | (_) | | '
echo ' |____/|_|_|_| |_|\___/ \___/|_| '
echo ''
# ------------vars-----------
repoDir=$(dirname $PWD)
consoleDir=$repoDir/src/Ray.BiliBiliTool.Console
publishDir=$consoleDir/bin/Publish
version=""
runTime=""
# --------------------------
read_params_from_init_cmd() {
while [ $# -ne 0 ]; do
name="$1"
case "$name" in
-r | --runtime | -[Rr]untime)
shift
runTime="$1"
;;
*)
say_err "Unknown argument \`$name\`"
exit 1
;;
esac
shift
done
}
read_var_from_user() {
# runTime
if [ -z "$runTime" ]; then
read -p 'please input runTime("all" "win-x86" "win-x64" "win-arm64" "linux-x64" "linux-musl-x64" "linux-arm64" "linux-arm" "osx-x64")' runTime
else
echo "runTime: $runTime"
fi
}
get_version() {
version=$(grep -oP '(?<=<Version>).*?(?=<\/Version>)' $repoDir/common.props)
echo -e "current version: $version \n\n"
mkdir -p $publishDir
# 将版本号保存到文件
echo "$version" > "$publishDir/version.txt"
echo "Version saved to $publishDir/version.txt"
}
extract_release_notes() {
echo "Extracting release notes from CHANGELOG.md..."
mkdir -p $publishDir
# 提取最新的 changelog (从第一个 ## 标题到下一个 ## 标题之间的所有内容)
sed -n '/^## /{p;:a;n;/^## /q;p;ba}' "$repoDir/CHANGELOG.md" > "$publishDir/release_notes.md"
echo "Release notes saved to $publishDir/release_notes.md"
}
publish_dotnet_dependent() {
echo "---------start publishing 【dotnet dependent】 release---------"
echo "clear output dir"
local outputDir=$publishDir/dotnet-dependent
mkdir -p $outputDir
rm -rf $outputDir
cd $consoleDir
echo "dotnet publish..."
dotnet publish --configuration Release \
--self-contained false \
-p:PublishSingleFile=true \
-p:DebugType=None \
-p:DebugSymbols=false \
-o $outputDir
echo "zip files..."
cd $publishDir
zip -q -r bilibili-tool-pro-v$version-dotnet-dependent.zip ./dotnet-dependent/*
ls -l
echo -e "---------publish successfully---------\n\n"
}
publish_self_contained() {
local runtime=$1
echo "---------start publishing 【$runtime】 release---------"
echo "clear output dir"
local outputDir=$publishDir/$runtime
mkdir -p $outputDir
rm -rf $outputDir
cd $consoleDir
echo "dotnet publish..."
dotnet publish --configuration Release \
--self-contained true \
--runtime $runtime \
-p:PublishSingleFile=true \
-p:DebugType=None \
-p:DebugSymbols=false \
-o $outputDir
echo "zip files..."
cd $publishDir
zip -q -r bilibili-tool-pro-v$version-$runtime.zip ./$runtime/*
ls -l
echo -e "---------publish successfully---------\n\n"
}
publish_tencentScf() {
echo "---------start publishing 【tencent scf】 release---------"
cd $publishDir
cp -r $repoDir/tencentScf/bootstrap $repoDir/tencentScf/index.sh ./linux-x64/
cd ./linux-x64
chmod 755 index.sh bootstrap
zip -r ../bilibili-tool-pro-v$version-tencent-scf.zip ./*
cd .. && ls
echo -e "---------publish successfully---------\n\n"
}
main() {
read_params_from_init_cmd $*
read_var_from_user
get_version
extract_release_notes
# dotnet dependent
publish_dotnet_dependent
# self contained
# https://learn.microsoft.com/zh-cn/dotnet/core/rid-catalog
array=("win-x86" "win-x64" "win-arm64" "linux-x64" "linux-musl-x64" "linux-arm64" "linux-arm" "linux-musl-arm64" "osx-x64")
if [ "$runTime" != "all" ]; then
array=("$runTime")
fi
for i in "${array[@]}"; do
publish_self_contained $i
done
if [ "$runTime" == "all" ]; then
publish_tencentScf
fi
}
main $*