It's easier to type, and cuter. Also, most, if not all of the TUI parts of kitty's kittens will eventually be re-written into kitten. The only downside I can see is that we cant tab complete kitty anymore, but hopefully there will be less reason to run kitty from the shell as command line tools migrate to kitten. Meowrrrr!!!
96 lines
2.8 KiB
Bash
Executable File
96 lines
2.8 KiB
Bash
Executable File
#!/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
|
|
|
|
|
|
die() { printf "\033[31m%s\033[m\n\r" "$*" > /dev/stderr; exit 1; }
|
|
|
|
exec_kitty() {
|
|
[ -n "$kitty_exe" ] && exec "$kitty_exe" "$@"
|
|
die "Failed to execute kitty"
|
|
}
|
|
|
|
script_path="$(command readlink -f "$0" 2> /dev/null)"
|
|
[ $? = 0 ] || script_path="$0"
|
|
script_dir="$(command dirname "$script_path")"
|
|
install_dir="$(command dirname "$script_dir")/install-tool"
|
|
remote_kitty_version_file="$script_dir/../version"
|
|
local_kitty_version_file="$install_dir/installed-kitten-version"
|
|
kitty_exe="$install_dir/kitten"
|
|
local_kitty_version=""
|
|
|
|
[ -f "$kitty_exe" -a -x "$kitty_exe" ] && exec_kitty "$@"
|
|
|
|
# Use kitten from the downloaded kitty installation, if available.
|
|
embed_exe="$(command dirname "$script_dir")/install/bin/kitten"
|
|
[ -f "$embed_exe" -a -x "$embed_exe" ] && {
|
|
kitty_exe="$embed_exe"
|
|
exec_kitty "$@"
|
|
}
|
|
|
|
case "$(command uname)" in
|
|
'Linux') OS="linux";;
|
|
'Darwin') OS="darwin";;
|
|
'FreeBSD') OS="freebsd";;
|
|
'NetBSD') OS="netbsd";;
|
|
'OpenBSD') OS="openbsd";;
|
|
'DragonFlyBSD') OS="dragonfly";;
|
|
*) die "kitten pre-built binaries are not available for the $(command uname) operating system";;
|
|
esac
|
|
|
|
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 kitten"
|
|
fi
|
|
|
|
case "$(command uname -m)" in
|
|
x86_64) arch="amd64";;
|
|
aarch64*) arch="arm64";;
|
|
armv8*) arch="arm64";;
|
|
arm) arch="arm";;
|
|
*) die "Unknown CPU architecture $(command uname -m)";;
|
|
esac
|
|
|
|
release_version=$(fetch_quiet "https://sw.kovidgoyal.net/kitty/current-version.txt")
|
|
[ $? -ne 0 -o -z "$release_version" ] && {
|
|
[ -n "$local_kitty_version" ] && exec_kitty "$@"
|
|
die "Could not get kitty latest release version"
|
|
}
|
|
|
|
release_version="v$release_version"
|
|
# no kitten available till 0.27.0
|
|
case "$release_version" in
|
|
v0.26.*) release_version="nightly";;
|
|
esac
|
|
|
|
url="https://github.com/kovidgoyal/kitty/releases/download/$release_version/kitten-$OS-$arch"
|
|
|
|
printf "\033[33mkitten needs to be installed\033[m\n\n"
|
|
command mkdir -p "$install_dir"
|
|
printf "Downloading kitten from: \033[32m%s\033[m\n\n" "$url"
|
|
download_dest="$(command mktemp "$kitty_exe.XXXXXXXXXX")"
|
|
fetch "$url" > "$download_dest" || {
|
|
command rm -f "$download_dest"
|
|
die "Failed to download kitten"
|
|
}
|
|
command chmod 755 "$download_dest"
|
|
command mv "$download_dest" "$kitty_exe"
|
|
command "$kitty_exe" --version | cut -d" " -f2 > "$local_kitty_version_file"
|
|
exec_kitty "$@"
|