feat(scripts): add cross-platform tosutil installers
- Add Windows PowerShell installer with SHA256 verification and PATH setup - Add macOS installer with arch detection and quarantine removal - Enhance Linux installer with amd64/arm64 architecture detection - Rename macOS migrate_remote.sh to migrate-remote.sh
This commit is contained in:
4 files changed
+209
-7
No files matched your search
@@ -0,0 +1,84 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Helper function to print and execute commands
|
||||
run_cmd() {
|
||||
echo ">> Running: $*"
|
||||
"$@"
|
||||
}
|
||||
|
||||
# Determine sudo requirement
|
||||
SUDO=""
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
SUDO="sudo"
|
||||
fi
|
||||
|
||||
echo "=== Starting tosutil installation for macOS ==="
|
||||
|
||||
# 1. Architecture Detection
|
||||
ARCH=$(uname -m)
|
||||
case "$ARCH" in
|
||||
x86_64)
|
||||
BIN_URL="https://m645b3e1bb36e-mrap.mrap.accesspoint.tos-global.volces.com/darwin/amd64/tosutil"
|
||||
SHA_URL="https://m645b3e1bb36e-mrap.mrap.accesspoint.tos-global.volces.com/darwin/amd64/tosutil.sha256sum"
|
||||
echo "Detected architecture: Intel (amd64)"
|
||||
;;
|
||||
arm64)
|
||||
BIN_URL="https://m645b3e1bb36e-mrap.mrap.accesspoint.tos-global.volces.com/darwin/arm64/tosutil"
|
||||
SHA_URL="https://m645b3e1bb36e-mrap.mrap.accesspoint.tos-global.volces.com/darwin/arm64/tosutil.sha256sum"
|
||||
echo "Detected architecture: Apple Silicon (arm64)"
|
||||
;;
|
||||
*)
|
||||
echo "Error: Unsupported architecture: $ARCH" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
TARGET_DIR="/usr/local/bin"
|
||||
TARGET_PATH="${TARGET_DIR}/tosutil"
|
||||
|
||||
# 2. Create isolated temporary directory
|
||||
TMP_DIR=$(mktemp -d /tmp/tosutil-install.XXXXXX)
|
||||
trap 'rm -rf "$TMP_DIR"' EXIT
|
||||
cd "$TMP_DIR"
|
||||
|
||||
# Step 1: Download binary and checksum via curl
|
||||
echo -e "\n[1/5] Downloading tosutil binary and SHA256 checksum..."
|
||||
run_cmd curl -fsSL -o tosutil "$BIN_URL"
|
||||
run_cmd curl -fsSL -o tosutil.sha256sum "$SHA_URL"
|
||||
|
||||
# Step 2: Verify SHA256
|
||||
echo -e "\n[2/5] Verifying SHA256 checksum..."
|
||||
EXPECTED_HASH=$(awk '{print $1}' tosutil.sha256sum)
|
||||
echo ">> Running: echo \"$EXPECTED_HASH tosutil\" | shasum -a 256 -c -"
|
||||
echo "$EXPECTED_HASH tosutil" | shasum -a 256 -c -
|
||||
|
||||
# Step 3: Ensure /usr/local/bin exists and move binary
|
||||
echo -e "\n[3/5] Moving binary to ${TARGET_PATH}..."
|
||||
if [ ! -d "$TARGET_DIR" ]; then
|
||||
run_cmd $SUDO mkdir -p "$TARGET_DIR"
|
||||
fi
|
||||
run_cmd $SUDO mv tosutil "$TARGET_PATH"
|
||||
|
||||
# Step 4: Set permissions and bypass macOS Gatekeeper quarantine
|
||||
echo -e "\n[4/5] Setting permissions and removing quarantine flag..."
|
||||
run_cmd $SUDO chown root:wheel "$TARGET_PATH"
|
||||
run_cmd $SUDO chmod 755 "$TARGET_PATH"
|
||||
# Remove quarantine attribute if present
|
||||
if run_cmd $SUDO xattr -d com.apple.quarantine "$TARGET_PATH" 2>/dev/null; then
|
||||
echo "Removed quarantine attribute."
|
||||
fi
|
||||
|
||||
# Step 5: Verify installation
|
||||
echo -e "\n[5/5] Checking installation..."
|
||||
run_cmd tosutil version || run_cmd tosutil --version || true
|
||||
|
||||
echo -e "\n========================================================"
|
||||
echo -e "✅ tosutil installed successfully to ${TARGET_PATH}."
|
||||
echo -e "========================================================"
|
||||
echo -e "\nNext Steps:"
|
||||
echo -e "1. Initialise and configure your credentials:"
|
||||
echo -e ' tosutil config -i "${TOS_ACCESS_KEY}" -k "${TOS_SECRET_KEY}" -e "${TOS_ENDPOINT}" -re "${TOS_REGION}"'
|
||||
echo -e "\n2. For more detailed documentation, visit:"
|
||||
echo -e " https://docs.volcengine.com/docs/6349/148775?lang=zh\n"
|
||||
File renamed without changes.
Reference in new issue
Block a user