#!/bin/bash set -eu function usage { retval="$1" case "$retval" in 0) ;; *) exec 1>&2 ;; esac echo "Usage: $0 --help" exit "$retval" } while [ "$#" -ge 1 ] do case "$1" in --help|-h) usage 0 ;; *) echo "$0: unrecognized option: $1" 1>&2 usage 1 ;; esac shift done function is_debian_based { [ -e /etc/debian_version ] } function is_redhat_based { [ -e /etc/redhat-release ] } function is_arch_based { [ -e /etc/arch-release ] } if is_debian_based then if type -path apt > /dev/null 2>&1 then debian_pi=apt elif type -path apt-get > /dev/null 2>&1 then debian_pi=apt-get else echo "$0: This appears to be a Debian-based system, but I do not see apt or apt-get" 1>&2 fi elif is_redhat_based then if type -path dnf > /dev/null 2>&1 then redhat_pi=dnf elif type -path yum /dev/null 2>&1 then redhat_pi=yum elif type -path microdnf > /dev/null 2>&1 then redhat_pi=microdnf else echo "$0: This appears to be a Redhat-based system, but I do not see yum, dnf or microdnf" 1>&2 fi elif is_arch_based then arch_pi=pacman else echo "$0: This does not appear to be a Debian-based, Redhat-based, or Arch-based Linux. We'll do what we can." 1>&2 fi preflight_good=True case "$(whoami)" in root) # Good, we're root. We have access to /usr/local and /usr/share ;; *) echo "$0: preflight check: you are not root. Please sudo or su to root and re-run this script" 1>&2 preflight_good=False ;; esac case "$(uname -s)" in Linux) # Good, we're on a Linux. ;; *) echo "$0: preflight check: This is not a Linux operating system. Giving up." 1>&2 preflight_good=False ;; esac if ! type wget > /dev/null 2>&1 then echo "$0: preflight check: no wget command found" 1>&2 if is_debian_based && [ "$debian_pi" != "" ] then echo "You can install it with: $debian_pi install wget" 1>&2 elif is_redhat_based && [ "$redhat_pi" != "" ] then echo "You can install it with: $redhat_pi install wget" 1>&2 elif is_arch_based && [ "$arch_pi" != "" ] then echo "You can install it with: $arch_pi -S wget" 1>&2 else echo "I do not know how to install it on this OS" 1>&2 fi preflight_good=False fi if ! type base64 > /dev/null 2>&1 then echo "$0: preflight check: no base64 command found" 1>&2 if is_debian_based && [ "$debian_pi" != "" ] then echo "You can install it with: $debian_pi install coreutils" 1>&2 elif is_redhat_based && [ "$redhat_pi" != "" ] then echo "You can install it with: $redhat_pi install coreutils" 1>&2 else echo "I do not know how to install it on this OS" 1>&2 fi preflight_good=False fi if ! type java > /dev/null 2>&1 then echo "$0: preflight check: no java command found" 1>&2 if is_debian_based && [ "$debian_pi" != "" ] then echo "You can install it with: $debian_pi install openjdk-11-jre" 1>&2 elif is_redhat_based && [ "$redhat_pi" != "" ] then echo "You can install it with: $redhat_pi install java-1.8.0-openjdk-devel" 1>&2 elif is_arch_based && [ "$arch_pi" != "" ] then echo "You can install it with: $arch_pi -S jre-openjdk" 1>&2 else echo "I do not know how to install it on this OS" 1>&2 fi preflight_good=False fi if ! type desktop-file-install > /dev/null 2>&1 then echo "$0: preflight check: no desktop-file-install command found" 1>&2 if is_debian_based && [ "$debian_pi" != "" ] then echo "You can install it with: $debian_pi install desktop-file-utils" 1>&2 elif is_redhat_based && [ "$redhat_pi" != "" ] then echo "You can install it with: $redhat_pi install desktop-file-utils" 1>&2 else echo "I do not know how to install it on this OS" 1>&2 fi preflight_good=False fi if ! [ -d /usr/share/applications ] then echo "$0: preflight check: no /usr/share/applications directory found; this may not be a supported Linux variant" 1>&2 preflight_good=False fi case "$preflight_good" in True) ;; False) echo "$0: preflight check failed, please install dependencies and/or sudo/su to root as directed above" 1>&2 exit 1 ;; *) echo "$0: internal error: \$preflight_good has a strange value: $preflight_good" 1>&2 exit 1 ;; esac mkdir -p /usr/local/bin /usr/local/lib wget -q -O - https://files.gokgs.com/javaBin/cgoban.jar > /usr/local/lib/cgoban.jar.temp mv /usr/local/lib/cgoban.jar.temp /usr/local/lib/cgoban.jar cat << \EOF > /usr/local/bin/kgs #!/bin/bash java -jar /usr/local/lib/cgoban.jar "$@" EOF chmod 755 /usr/local/bin/kgs ( set -eu cd /usr/local/bin && ln -sf kgs cgoban3 ) base64 -d << \EOF > /usr/local/lib/cgoban-icon.jpeg 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 4Ta3fwOpHarqpyzspxQfZ//Z EOF cat << \EOF > /usr/local/lib/cgoban3.desktop [Desktop Entry] Comment=Log into KGS or edit SGF files with cgoban3 Terminal=false Name=cgoban3 Exec=/usr/local/bin/cgoban3 Type=Application Icon=/usr/local/lib/cgoban-icon.jpeg Categories=Game;BoardGame EOF desktop-file-install --dir=/usr/share/applications /usr/local/lib/cgoban3.desktop echo "It looks like the install was successful. Check your desktop environment's menus to see if cgoban3 is now under Games." echo 'Alternatively, you can start cgoban3 with the "kgs" or "cgoban3" commands at a shell prompt.' exit 0