Kovid Goyal 6b8e5ea225
Rename kitty-tool to kitten
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!!!
2023-01-14 15:44:52 +05:30

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 "$@"