mirror of
https://github.com/kovidgoyal/kitty.git
synced 2026-05-13 16:37:27 +00:00
SIMDe 0.8.2 doesnt build on 32 bit and while that will likely be fixed eventually, 32bit isn't tested in CI and generally speaking there isn't much use for this platform anymore. I dont know of any 32-bit computers in common use these days. As such the overhead of maintaining these is not worth it for me. kitty itself remains buildable on 32-bit though no guarantees for how long that will last. kitten remains available on 32bit.
174 lines
4.3 KiB
Bash
174 lines
4.3 KiB
Bash
#!/bin/sh
|
|
# Copyright (C) 2018 Kovid Goyal <kovid at kovidgoyal.net>
|
|
#
|
|
# Distributed under terms of the GPLv3 license.
|
|
|
|
{ \unalias command; \unset -f command; } >/dev/null 2>&1
|
|
tdir=''
|
|
cleanup() {
|
|
[ -n "$tdir" ] && {
|
|
command rm -rf "$tdir"
|
|
tdir=''
|
|
}
|
|
}
|
|
|
|
die() {
|
|
cleanup
|
|
printf "\033[31m%s\033[m\n\r" "$*" > /dev/stderr;
|
|
exit 1;
|
|
}
|
|
|
|
detect_network_tool() {
|
|
if command -v curl 2> /dev/null > /dev/null; then
|
|
fetch() {
|
|
command curl -fL "$1"
|
|
}
|
|
fetch_quiet() {
|
|
command curl -fsSL "$1"
|
|
}
|
|
elif command -v wget 2> /dev/null > /dev/null; then
|
|
fetch() {
|
|
command wget -O- "$1"
|
|
}
|
|
fetch_quiet() {
|
|
command wget --quiet -O- "$1"
|
|
}
|
|
else
|
|
die "Neither curl nor wget available, cannot download kitty"
|
|
fi
|
|
}
|
|
|
|
|
|
detect_os() {
|
|
arch=""
|
|
case "$(command uname)" in
|
|
'Darwin') OS="macos";;
|
|
'Linux')
|
|
OS="linux"
|
|
case "$(command uname -m)" in
|
|
amd64|x86_64) arch="x86_64";;
|
|
aarch64*) arch="arm64";;
|
|
armv8*) arch="arm64";;
|
|
*) die "kitty binaries not available for architecture $(command uname -m)";;
|
|
esac
|
|
;;
|
|
*) die "kitty binaries are not available for $(command uname)"
|
|
esac
|
|
}
|
|
|
|
expand_tilde() {
|
|
tilde_less="${1#\~/}"
|
|
[ "$1" != "$tilde_less" ] && tilde_less="$HOME/$tilde_less"
|
|
printf '%s' "$tilde_less"
|
|
}
|
|
|
|
parse_args() {
|
|
dest='~/.local'
|
|
[ "$OS" = "macos" ] && dest="/Applications"
|
|
launch='y'
|
|
installer=''
|
|
while :; do
|
|
case "$1" in
|
|
dest=*) dest="${1#*=}";;
|
|
launch=*) launch="${1#*=}";;
|
|
installer=*) installer="${1#*=}";;
|
|
"") break;;
|
|
*) die "Unrecognized command line option: $1";;
|
|
esac
|
|
shift
|
|
done
|
|
dest=$(expand_tilde "${dest}")
|
|
[ "$launch" != "y" -a "$launch" != "n" ] && die "Unrecognized command line option: launch=$launch"
|
|
dest="$dest/kitty.app"
|
|
}
|
|
|
|
|
|
get_file_url() {
|
|
url="https://github.com/kovidgoyal/kitty/releases/download/$1/kitty-$2"
|
|
if [ "$OS" = "macos" ]; then
|
|
url="$url.dmg"
|
|
else
|
|
url="$url-$arch.txz"
|
|
fi
|
|
}
|
|
|
|
get_release_url() {
|
|
release_version=$(fetch_quiet "https://sw.kovidgoyal.net/kitty/current-version.txt")
|
|
[ $? -ne 0 -o -z "$release_version" ] && die "Could not get kitty latest release version"
|
|
get_file_url "v$release_version" "$release_version"
|
|
}
|
|
|
|
|
|
get_nightly_url() {
|
|
get_file_url "nightly" "nightly"
|
|
}
|
|
|
|
get_download_url() {
|
|
installer_is_file="n"
|
|
case "$installer" in
|
|
"nightly") get_nightly_url ;;
|
|
"") get_release_url ;;
|
|
*) installer_is_file="y" ;;
|
|
esac
|
|
}
|
|
|
|
download_installer() {
|
|
tdir=$(command mktemp -d "/tmp/kitty-install-XXXXXXXXXXXX")
|
|
[ "$installer_is_file" != "y" ] && {
|
|
printf '%s\n\n' "Downloading from: $url"
|
|
if [ "$OS" = "macos" ]; then
|
|
installer="$tdir/kitty.dmg"
|
|
else
|
|
installer="$tdir/kitty.txz"
|
|
fi
|
|
fetch "$url" > "$installer" || die "Failed to download: $url"
|
|
installer_is_file="y"
|
|
}
|
|
}
|
|
|
|
linux_install() {
|
|
command mkdir "$tdir/mp"
|
|
command tar -C "$tdir/mp" "-xJof" "$installer" || die "Failed to extract kitty tarball"
|
|
printf "%s\n" "Installing to $dest"
|
|
command rm -rf "$dest" || die "Failed to delete $dest"
|
|
command mv "$tdir/mp" "$dest" || die "Failed to move kitty.app to $dest"
|
|
}
|
|
|
|
macos_install() {
|
|
command mkdir "$tdir/mp"
|
|
command hdiutil attach "$installer" "-mountpoint" "$tdir/mp" || die "Failed to mount kitty.dmg"
|
|
printf "%s\n" "Installing to $dest"
|
|
command rm -rf "$dest"
|
|
command mkdir -p "$dest" || die "Failed to create the directory: $dest"
|
|
command ditto -v "$tdir/mp/kitty.app" "$dest"
|
|
rc="$?"
|
|
command hdiutil detach "$tdir/mp"
|
|
[ "$rc" != "0" ] && die "Failed to copy kitty.app from mounted dmg"
|
|
}
|
|
|
|
exec_kitty() {
|
|
if [ "$OS" = "macos" ]; then
|
|
exec "open" "$dest"
|
|
else
|
|
exec "$dest/bin/kitty" "--detach"
|
|
fi
|
|
die "Failed to launch kitty"
|
|
}
|
|
|
|
main() {
|
|
detect_os
|
|
parse_args "$@"
|
|
detect_network_tool
|
|
get_download_url
|
|
download_installer
|
|
if [ "$OS" = "macos" ]; then
|
|
macos_install
|
|
else
|
|
linux_install
|
|
fi
|
|
cleanup
|
|
[ "$launch" = "y" ] && exec_kitty
|
|
exit 0
|
|
}
|
|
|
|
main "$@"
|