62 lines
1.2 KiB
Bash
62 lines
1.2 KiB
Bash
#!/usr/bin/env bash
|
||
|
||
set -e
|
||
|
||
DEST="myminio/downloads/singbox"
|
||
|
||
echo "请输入 Gitea Actions 编译好的 zip 文件路径(本地路径或URL):"
|
||
read -r FILE
|
||
|
||
# mc 检查
|
||
if ! command -v mc >/dev/null 2>&1; then
|
||
echo "错误:mc 未安装"
|
||
exit 1
|
||
fi
|
||
|
||
# unzip 检查
|
||
if ! command -v unzip >/dev/null 2>&1; then
|
||
echo "错误:unzip 未安装"
|
||
exit 1
|
||
fi
|
||
|
||
# 如果是 URL,先下载
|
||
if [[ "$FILE" =~ ^https?:// ]]; then
|
||
echo "检测到 URL,开始下载..."
|
||
TMP_ZIP="/tmp/$(basename "$FILE")"
|
||
curl -L "$FILE" -o "$TMP_ZIP"
|
||
FILE="$TMP_ZIP"
|
||
fi
|
||
|
||
# 校验文件
|
||
if [[ ! -f "$FILE" ]]; then
|
||
echo "错误:文件不存在 -> $FILE"
|
||
exit 1
|
||
fi
|
||
|
||
# 创建临时解压目录
|
||
TMP_DIR=$(mktemp -d)
|
||
echo "解压到:$TMP_DIR"
|
||
|
||
unzip -q "$FILE" -d "$TMP_DIR"
|
||
|
||
# 找到解压后的第一层目录(兼容 zip 内有/无顶层目录)
|
||
cd "$TMP_DIR"
|
||
|
||
# 如果只有一个目录,就进入它
|
||
FIRST_DIR=$(ls -1 | head -n 1)
|
||
|
||
if [[ -d "$FIRST_DIR" ]]; then
|
||
TARGET_DIR="$TMP_DIR/$FIRST_DIR"
|
||
else
|
||
TARGET_DIR="$TMP_DIR"
|
||
fi
|
||
|
||
echo "开始上传目录内容到 MinIO:$DEST"
|
||
|
||
# 复制目录内所有内容(不是整个文件夹)
|
||
mc cp --recursive "$TARGET_DIR/" "$DEST/"
|
||
|
||
echo "上传完成 ✅"
|
||
|
||
# 清理
|
||
rm -rf "$TMP_DIR" |