26f897c1ec
release / release-please (push) Failing after 1m49s
docs / build (push) Failing after 6m34s
release / build-and-upload (arm64, linux) (push) Has been cancelled
release / build-and-upload (arm64, windows) (push) Has been cancelled
release / build-darwin (amd64, darwin) (push) Has been cancelled
release / checksums (push) Has been cancelled
release / finalize (push) Has been cancelled
release / build-darwin (arm64, darwin) (push) Has been cancelled
release / build-and-upload (amd64, linux) (push) Has been cancelled
release / build-and-upload (amd64, windows) (push) Has been cancelled
docs / deploy (push) Has been cancelled
86 lines
2.3 KiB
Bash
Executable File
86 lines
2.3 KiB
Bash
Executable File
#!/bin/sh
|
|
set -e
|
|
|
|
REPO="kunchenguid/no-mistakes"
|
|
INSTALL_DIR="${NO_MISTAKES_INSTALL_DIR:-$HOME/.no-mistakes/bin}"
|
|
LINK_DIR="${NO_MISTAKES_LINK_DIR:-}"
|
|
|
|
if [ -z "$LINK_DIR" ]; then
|
|
case ":$PATH:" in
|
|
*":$HOME/.local/bin:"*) LINK_DIR="$HOME/.local/bin" ;;
|
|
*) LINK_DIR="/usr/local/bin" ;;
|
|
esac
|
|
fi
|
|
|
|
BIN_PATH="$INSTALL_DIR/no-mistakes"
|
|
LINK_PATH="$LINK_DIR/no-mistakes"
|
|
|
|
OS="$(uname -s | tr '[:upper:]' '[:lower:]')"
|
|
ARCH="$(uname -m)"
|
|
|
|
case "$OS" in
|
|
darwin|linux) ;;
|
|
*) echo "Unsupported OS: $OS"; exit 1 ;;
|
|
esac
|
|
|
|
case "$ARCH" in
|
|
x86_64|amd64) ARCH="amd64" ;;
|
|
arm64|aarch64) ARCH="arm64" ;;
|
|
*) echo "Unsupported architecture: $ARCH"; exit 1 ;;
|
|
esac
|
|
|
|
VERSION="$(curl -fsSL "https://api.github.com/repos/${REPO}/releases/latest" | sed -n 's/.*"tag_name"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' | head -n 1)"
|
|
if [ -z "$VERSION" ]; then
|
|
echo "Could not determine latest release"
|
|
exit 1
|
|
fi
|
|
|
|
FILENAME="no-mistakes-${VERSION}-${OS}-${ARCH}.tar.gz"
|
|
URL="https://github.com/${REPO}/releases/download/${VERSION}/${FILENAME}"
|
|
|
|
TMPDIR="$(mktemp -d)"
|
|
trap 'rm -rf "$TMPDIR"' EXIT
|
|
|
|
echo "Downloading no-mistakes ${VERSION} for ${OS}/${ARCH}..."
|
|
curl -fsSL "$URL" -o "${TMPDIR}/${FILENAME}"
|
|
tar xzf "${TMPDIR}/${FILENAME}" -C "$TMPDIR"
|
|
|
|
if ! mkdir -p "$INSTALL_DIR"; then
|
|
echo "Could not create install directory: $INSTALL_DIR"
|
|
exit 1
|
|
fi
|
|
|
|
mv "${TMPDIR}/no-mistakes" "$BIN_PATH"
|
|
chmod 755 "$BIN_PATH" 2>/dev/null || true
|
|
|
|
resolve_path() {
|
|
(cd "$1" 2>/dev/null && pwd -P)
|
|
}
|
|
|
|
REAL_INSTALL_DIR="$(resolve_path "$INSTALL_DIR")"
|
|
REAL_LINK_DIR="$(resolve_path "$LINK_DIR" 2>/dev/null || echo "")"
|
|
|
|
if [ -n "$REAL_INSTALL_DIR" ] && [ "$REAL_INSTALL_DIR" = "$REAL_LINK_DIR" ]; then
|
|
echo "Install dir and link dir resolve to the same path; skipping symlink."
|
|
else
|
|
if [ -w "$LINK_DIR" ] || (mkdir -p "$LINK_DIR" 2>/dev/null && [ -w "$LINK_DIR" ]); then
|
|
rm -f "$LINK_PATH"
|
|
ln -s "$BIN_PATH" "$LINK_PATH"
|
|
else
|
|
echo "Linking ${LINK_PATH} to ${BIN_PATH} (requires sudo)..."
|
|
sudo mkdir -p "$LINK_DIR"
|
|
sudo rm -f "$LINK_PATH"
|
|
sudo ln -s "$BIN_PATH" "$LINK_PATH"
|
|
fi
|
|
fi
|
|
|
|
echo "no-mistakes ${VERSION} installed to ${BIN_PATH}"
|
|
echo "Command path: ${LINK_PATH} -> ${BIN_PATH}"
|
|
|
|
"$BIN_PATH" daemon restart >/dev/null
|
|
|
|
case ":$PATH:" in
|
|
*":$LINK_DIR:"*) ;;
|
|
*) echo "Add ${LINK_DIR} to your PATH and restart your terminal." ;;
|
|
esac
|