| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- #!/bin/bash
- # TappoCloud Store 应用发布脚本
- # 用法: ./publish.sh <zip文件路径> [API地址]
- set -e
- ZIP_FILE="$1"
- API_BASE="${2:-https://app.tappo.dev}"
- if [ -z "$ZIP_FILE" ]; then
- echo "用法: $0 <zip文件路径> [API地址]"
- echo "示例: $0 ./my-app-v1.0.0.zip"
- echo " $0 ./my-app-v1.0.0.zip https://app.tappo.dev"
- exit 1
- fi
- if [ ! -f "$ZIP_FILE" ]; then
- echo "错误: 文件不存在: $ZIP_FILE"
- exit 1
- fi
- # 检查是否已有 token
- TOKEN_FILE="$HOME/.tappocloud_token"
- if [ -f "$TOKEN_FILE" ]; then
- TOKEN=$(cat "$TOKEN_FILE")
- # 验证 token 是否有效
- if ! curl -sf -o /dev/null -H "Authorization: Bearer $TOKEN" "$API_BASE/api/v1/admin/apps/upload" 2>/dev/null; then
- rm -f "$TOKEN_FILE"
- TOKEN=""
- fi
- fi
- # 如果没有有效 token,进行登录
- if [ -z "$TOKEN" ]; then
- echo "请输入管理员账号:"
- read -p "用户名: " USERNAME
- read -sp "密码: " PASSWORD
- echo
- RESPONSE=$(curl -sf -X POST "$API_BASE/api/v1/admin/login" \
- -H "Content-Type: application/json" \
- -d "{\"username\":\"$USERNAME\",\"password\":\"$PASSWORD\"}" 2>&1) || {
- echo "错误: 登录失败"
- exit 1
- }
- TOKEN=$(echo "$RESPONSE" | grep -o '"token":"[^"]*"' | cut -d'"' -f4)
- if [ -z "$TOKEN" ]; then
- echo "错误: 无法获取 token"
- exit 1
- fi
- echo "$TOKEN" > "$TOKEN_FILE"
- chmod 600 "$TOKEN_FILE"
- echo "登录成功,token 已保存"
- fi
- # 上传文件
- echo "正在上传: $ZIP_FILE"
- RESULT=$(curl -sf -X POST "$API_BASE/api/v1/admin/apps/upload" \
- -H "Authorization: Bearer $TOKEN" \
- -F "file=@$ZIP_FILE" 2>&1) || {
- echo "错误: 上传失败"
- rm -f "$TOKEN_FILE"
- exit 1
- }
- echo "上传成功!"
- echo "$RESULT" | python3 -m json.tool 2>/dev/null || echo "$RESULT"
|