add install.sh:一行命令安装(自动识别平台、拉取最新 release 二进制、免 Python)
This commit is contained in:
1 parent
977f97995a
commit
61b7a22df2
1 file changed
+94
Executable
+94
@@ -0,0 +1,94 @@
|
||||
#!/bin/sh
|
||||
# tripocli 一行安装脚本(Linux / macOS,无需预装 Python)
|
||||
#
|
||||
# curl -fsSL https://git.usetoks.com/Mrpzx/tripocli/raw/branch/main/install.sh | sh
|
||||
#
|
||||
# 可选环境变量:
|
||||
# TRIPOCLI_VERSION=v2.0.0 指定版本(默认取最新 release)
|
||||
# TRIPOCLI_INSTALL_DIR=/usr/local/bin 指定安装目录
|
||||
#
|
||||
set -eu
|
||||
|
||||
REPO="Mrpzx/tripocli"
|
||||
HOST="${TRIPOCLI_HOST:-https://git.usetoks.com}"
|
||||
BIN="tripocli"
|
||||
|
||||
info() { printf '%s\n' "$*"; }
|
||||
die() { printf '错误: %s\n' "$*" >&2; exit 1; }
|
||||
|
||||
need() { command -v "$1" >/dev/null 2>&1 || die "缺少命令:$1"; }
|
||||
need curl
|
||||
need uname
|
||||
|
||||
# ---- 1) 识别平台 -----------------------------------------------------------
|
||||
os=$(uname -s)
|
||||
arch=$(uname -m)
|
||||
case "$os" in
|
||||
Linux) os_tag="linux" ;;
|
||||
Darwin) os_tag="macos" ;;
|
||||
*) die "暂不支持的系统:$os(Windows 请用:pip install git+$HOST/$REPO.git)" ;;
|
||||
esac
|
||||
case "$arch" in
|
||||
x86_64|amd64) arch_tag="x86_64" ;;
|
||||
arm64|aarch64) arch_tag="arm64" ;;
|
||||
*) die "暂不支持的架构:$arch" ;;
|
||||
esac
|
||||
info "==> 平台:$os_tag / $arch_tag"
|
||||
|
||||
# ---- 2) 解析版本(默认最新 release)----------------------------------------
|
||||
version="${TRIPOCLI_VERSION:-}"
|
||||
if [ -z "$version" ]; then
|
||||
info "==> 查询最新版本…"
|
||||
version=$(curl -fsSL "$HOST/api/v1/repos/$REPO/releases/latest" 2>/dev/null \
|
||||
| tr ',' '\n' | sed -n 's/.*"tag_name":"\([^"]*\)".*/\1/p' | head -1)
|
||||
[ -n "$version" ] || die "无法获取最新版本,可用 TRIPOCLI_VERSION=v2.0.0 指定"
|
||||
fi
|
||||
# 资产名里版本号不带前导 v(tag=v2.0.0 → 资产 tripocli-2.0.0-…)
|
||||
ver_num="${version#v}"
|
||||
asset="${BIN}-${ver_num}-${os_tag}-${arch_tag}"
|
||||
url="$HOST/$REPO/releases/download/$version/$asset"
|
||||
info "==> 版本:$version"
|
||||
|
||||
# ---- 3) 下载 ---------------------------------------------------------------
|
||||
tmp="$(mktemp "${TMPDIR:-/tmp}/tripocli.XXXXXX")"
|
||||
trap 'rm -f "$tmp"' EXIT INT TERM
|
||||
info "==> 下载:$asset"
|
||||
curl -fL --progress-bar -o "$tmp" "$url" || die "下载失败:$url"
|
||||
chmod +x "$tmp"
|
||||
# 简单校验:确认是可执行文件而不是错误页面
|
||||
size=$(wc -c < "$tmp" | tr -d ' ')
|
||||
[ "$size" -gt 1000000 ] || die "下载内容异常(仅 ${size} 字节),可能是版本或平台不存在"
|
||||
|
||||
# ---- 4) 安装 ---------------------------------------------------------------
|
||||
dir="${TRIPOCLI_INSTALL_DIR:-}"
|
||||
if [ -z "$dir" ]; then
|
||||
if [ -w /usr/local/bin ] 2>/dev/null; then
|
||||
dir=/usr/local/bin
|
||||
else
|
||||
dir="$HOME/.local/bin"
|
||||
mkdir -p "$dir"
|
||||
fi
|
||||
fi
|
||||
[ -d "$dir" ] || mkdir -p "$dir" 2>/dev/null || die "无法创建安装目录:$dir"
|
||||
mv "$tmp" "$dir/$BIN"
|
||||
trap - EXIT INT TERM
|
||||
chmod +x "$dir/$BIN"
|
||||
info "==> 已安装到:$dir/$BIN"
|
||||
|
||||
# ---- 5) 校验 & 提示 --------------------------------------------------------
|
||||
if command -v "$BIN" >/dev/null 2>&1; then
|
||||
info "==> 安装成功:$("$BIN" --version 2>/dev/null || echo "$BIN")"
|
||||
else
|
||||
info "==> 安装成功,但 $dir 不在 PATH 里。请把下面这行加到 ~/.zshrc 或 ~/.bashrc:"
|
||||
info " export PATH=\"$dir:\$PATH\""
|
||||
fi
|
||||
cat <<'EOF'
|
||||
|
||||
下一步:
|
||||
1) 从浏览器复制 Tripo 的 Cookie(ory_kratos_session)
|
||||
2) tripocli account add --cookie "ory_kratos_session=..."
|
||||
3) tripocli balance # 验证连通
|
||||
4) tripocli --help # 查看全部命令
|
||||
|
||||
也可以跑 tripocli serve,在本地网页里管理账号。
|
||||
EOF
|
||||
Reference in new issue
Block a user