-
-
Notifications
You must be signed in to change notification settings - Fork 20
Expand file tree
/
Copy pathinstall.sh
More file actions
126 lines (107 loc) · 3.44 KB
/
Copy pathinstall.sh
File metadata and controls
126 lines (107 loc) · 3.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#!/bin/sh
# Marmot Installer
set -e
GITHUB_REPO="marmotdata/marmot"
BINARY_NAME="marmot"
INSTALL_DIR="/usr/local/bin"
# Fetch the latest non-prerelease version
echo "Fetching the latest Marmot release..."
if command -v curl >/dev/null 2>&1; then
VERSION=$(curl -s "https://api.github.com/repos/${GITHUB_REPO}/releases" |
grep '"tag_name":' |
grep -v 'preview\|alpha\|beta\|rc' |
sed -E 's/.*"([^"]+)".*/\1/' |
head -n 1 |
sed 's/^v//')
elif command -v wget >/dev/null 2>&1; then
VERSION=$(wget -q -O- "https://api.github.com/repos/${GITHUB_REPO}/releases" |
grep '"tag_name":' |
grep -v 'preview\|alpha\|beta\|rc' |
sed -E 's/.*"([^"]+)".*/\1/' |
head -n 1 |
sed 's/^v//')
else
echo "Neither curl nor wget found. Please install one of them and try again."
exit 1
fi
if [ -z "$VERSION" ]; then
echo "Could not determine the latest version. Defaulting to 0.1.0"
VERSION="0.4.0"
fi
echo "Installing Marmot version ${VERSION}..."
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
case "$OS" in
darwin) ;;
linux) ;;
msys*|mingw*|cygwin*) OS="windows" ;;
*)
echo "Unsupported operating system: $OS"
exit 1
;;
esac
ARCH=$(uname -m)
case "$ARCH" in
x86_64) ARCH="amd64" ;;
amd64) ARCH="amd64" ;;
arm64|aarch64) ARCH="arm64" ;;
*)
echo "Unsupported architecture: $ARCH"
exit 1
;;
esac
TEMP_DIR=$(mktemp -d 2>/dev/null || mktemp -d -t 'marmot')
cleanup() {
rm -rf "$TEMP_DIR"
}
trap cleanup EXIT
if [ -z "$VERSION" ]; then
echo "Error: Unable to determine Marmot version to install"
exit 1
fi
echo "Downloading Marmot ${VERSION} for ${OS}/${ARCH}..."
if [ "$OS" = "windows" ]; then
FILENAME="marmot_${VERSION}_${OS}_${ARCH}.zip"
BINARY_SUFFIX=".exe"
else
FILENAME="marmot_${VERSION}_${OS}_${ARCH}.tar.gz"
BINARY_SUFFIX=""
fi
DOWNLOAD_URL="https://github.com/${GITHUB_REPO}/releases/download/v${VERSION}/${FILENAME}"
if command -v curl >/dev/null 2>&1; then
curl -fsSL "$DOWNLOAD_URL" -o "${TEMP_DIR}/${FILENAME}"
elif command -v wget >/dev/null 2>&1; then
wget -q -O "${TEMP_DIR}/${FILENAME}" "$DOWNLOAD_URL"
else
echo "Neither curl nor wget found. Please install one of them and try again."
exit 1
fi
cd "$TEMP_DIR"
if [ "$OS" = "windows" ]; then
if command -v unzip >/dev/null 2>&1; then
unzip -q "${FILENAME}"
else
echo "unzip command not found. Please install unzip and try again."
exit 1
fi
else
tar -xzf "${FILENAME}"
fi
echo "Installing Marmot to ${INSTALL_DIR}..."
mkdir -p "$INSTALL_DIR"
if [ ! -w "$INSTALL_DIR" ]; then
USE_SUDO=true
if ! command -v sudo >/dev/null 2>&1; then
echo "Installation directory is not writable and sudo is not available."
echo "Please run this script as root or install to a different location."
exit 1
fi
fi
if [ "$USE_SUDO" = true ]; then
sudo mv "$TEMP_DIR/${BINARY_NAME}${BINARY_SUFFIX}" "${INSTALL_DIR}/${BINARY_NAME}${BINARY_SUFFIX}"
sudo chmod +x "${INSTALL_DIR}/${BINARY_NAME}${BINARY_SUFFIX}"
else
mv "$TEMP_DIR/${BINARY_NAME}${BINARY_SUFFIX}" "${INSTALL_DIR}/${BINARY_NAME}${BINARY_SUFFIX}"
chmod +x "${INSTALL_DIR}/${BINARY_NAME}${BINARY_SUFFIX}"
fi
echo "Marmot ${VERSION} has been installed successfully to ${INSTALL_DIR}/${BINARY_NAME}"
echo "Run 'marmot --help' to get started"