chore: import upstream snapshot with attribution
govulncheck / govulncheck (push) Has been cancelled
Lint / golangci-lint (push) Has been cancelled
Run Tests / Unit Tests (push) Has been cancelled
Run Tests / Etcd Integration Tests (push) Has been cancelled
Harness (E2E) / Harnesses (mock LLM) (push) Has been cancelled
Harness (E2E) / Provider harnesses (live LLM conformance) (push) Has been cancelled
govulncheck / govulncheck (push) Has been cancelled
Lint / golangci-lint (push) Has been cancelled
Run Tests / Unit Tests (push) Has been cancelled
Run Tests / Etcd Integration Tests (push) Has been cancelled
Harness (E2E) / Harnesses (mock LLM) (push) Has been cancelled
Harness (E2E) / Provider harnesses (live LLM conformance) (push) Has been cancelled
This commit is contained in:
Executable
+109
@@ -0,0 +1,109 @@
|
||||
#!/bin/bash
|
||||
# Install script for micro CLI
|
||||
# Usage: curl -fsSL https://go-micro.dev/install.sh | sh
|
||||
|
||||
set -e
|
||||
|
||||
VERSION="${MICRO_VERSION:-latest}"
|
||||
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
|
||||
ARCH=$(uname -m)
|
||||
|
||||
# Normalize architecture
|
||||
case $ARCH in
|
||||
x86_64|amd64) ARCH="amd64" ;;
|
||||
aarch64|arm64) ARCH="arm64" ;;
|
||||
armv7l) ARCH="armv7" ;;
|
||||
*) echo "Unsupported architecture: $ARCH"; exit 1 ;;
|
||||
esac
|
||||
|
||||
# Normalize OS
|
||||
case $OS in
|
||||
darwin) OS="darwin" ;;
|
||||
linux) OS="linux" ;;
|
||||
*) echo "Unsupported OS: $OS"; exit 1 ;;
|
||||
esac
|
||||
|
||||
# Determine install directory. MICRO_INSTALL_DIR is intended for CI/local smoke
|
||||
# tests that verify the installer without writing to a real system directory.
|
||||
if [ -n "${MICRO_INSTALL_DIR:-}" ]; then
|
||||
INSTALL_DIR="$MICRO_INSTALL_DIR"
|
||||
mkdir -p "$INSTALL_DIR"
|
||||
elif [ "$EUID" -eq 0 ] || [ "$(id -u)" -eq 0 ]; then
|
||||
INSTALL_DIR="/usr/local/bin"
|
||||
else
|
||||
INSTALL_DIR="$HOME/.local/bin"
|
||||
mkdir -p "$INSTALL_DIR"
|
||||
fi
|
||||
|
||||
echo "Installing micro ${VERSION} for ${OS}/${ARCH}..."
|
||||
|
||||
# Download URL
|
||||
if [ "$VERSION" = "latest" ]; then
|
||||
URL="https://github.com/micro/go-micro/releases/latest/download/micro_${OS}_${ARCH}.tar.gz"
|
||||
else
|
||||
URL="https://github.com/micro/go-micro/releases/download/${VERSION}/micro_${OS}_${ARCH}.tar.gz"
|
||||
fi
|
||||
|
||||
# Create temp directory for extraction
|
||||
TMP_DIR=$(mktemp -d)
|
||||
TMP_FILE="${TMP_DIR}/micro.tar.gz"
|
||||
|
||||
# Download, or use a local release archive supplied by the deterministic smoke
|
||||
# harness. The default path still fetches the documented GitHub release artifact.
|
||||
if [ -n "${MICRO_INSTALL_ARCHIVE:-}" ]; then
|
||||
cp "$MICRO_INSTALL_ARCHIVE" "$TMP_FILE"
|
||||
elif command -v curl &> /dev/null; then
|
||||
curl -fsSL "$URL" -o "$TMP_FILE"
|
||||
elif command -v wget &> /dev/null; then
|
||||
wget -q "$URL" -O "$TMP_FILE"
|
||||
else
|
||||
echo "Error: curl or wget required"
|
||||
rm -rf "$TMP_DIR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Extract and install
|
||||
tar -xzf "$TMP_FILE" -C "$TMP_DIR"
|
||||
|
||||
# Handle different archive structures (binary at root or in subdirectory)
|
||||
if [ -f "${TMP_DIR}/micro" ]; then
|
||||
BINARY_PATH="${TMP_DIR}/micro"
|
||||
elif [ -f "${TMP_DIR}/micro_${OS}_${ARCH}/micro" ]; then
|
||||
BINARY_PATH="${TMP_DIR}/micro_${OS}_${ARCH}/micro"
|
||||
else
|
||||
# Try to find any executable named 'micro' in the extracted content
|
||||
BINARY_PATH=$(find "$TMP_DIR" -name "micro" -type f -executable | head -n1)
|
||||
fi
|
||||
|
||||
if [ -z "$BINARY_PATH" ] || [ ! -f "$BINARY_PATH" ]; then
|
||||
echo "Error: Could not find micro binary in archive"
|
||||
echo "Archive contents:"
|
||||
tar -tzf "$TMP_FILE"
|
||||
rm -rf "$TMP_DIR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
chmod +x "$BINARY_PATH"
|
||||
mv "$BINARY_PATH" "$INSTALL_DIR/micro"
|
||||
|
||||
# Cleanup
|
||||
rm -rf "$TMP_DIR"
|
||||
|
||||
echo ""
|
||||
echo "✓ Installed micro to $INSTALL_DIR/micro"
|
||||
echo ""
|
||||
|
||||
# Verify
|
||||
if command -v micro &> /dev/null; then
|
||||
micro --version
|
||||
else
|
||||
echo "Note: Add $INSTALL_DIR to your PATH:"
|
||||
echo " export PATH=\"\$PATH:$INSTALL_DIR\""
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Get started:"
|
||||
echo " micro new myservice # Create a new service"
|
||||
echo " micro run # Run locally"
|
||||
echo " micro deploy # Deploy to server"
|
||||
echo ""
|
||||
Reference in New Issue
Block a user