diff --git a/install.sh b/install.sh index 614a34f..8411e51 100755 --- a/install.sh +++ b/install.sh @@ -2,20 +2,16 @@ ## CONSTANTS -readonly MIAOU_BASH_DIR=/opt/miaou-bash readonly MAIN_TAR_GZ_URL="https://git.artcode.re/miaou/miaou-bash/archive/main.tar.gz" +readonly MIAOU_BASH_DIR=/opt/miaou-bash ## FUNCTIONS + function bootstrap { cd "$(mktemp -d)" || exit 3 curl -s -O $MAIN_TAR_GZ_URL tar -xzf main.tar.gz --directory "$(dirname $MIAOU_BASH_DIR)" - local source_bin="$MIAOU_BASH_DIR/bin/miaou-bash" - local dest_bin="/usr/bin/miaou-bash" - if ! cmp -s "$source_bin" "$dest_bin"; then - cp -f "$source_bin" "$dest_bin" - fi echo "miaou-bash deployed to: $MIAOU_BASH_DIR" } @@ -33,9 +29,9 @@ set -Eeuo pipefail export MIAOU_BASH_DIR if [[ -d "$MIAOU_BASH_DIR" && -L /etc/inputrc && "$(readlink /etc/inputrc)" == "$MIAOU_BASH_DIR"/etc/inputrc ]]; then - miaou-bash "$MIAOU_BASH_DIR/lib/self-upgrade.bash" + . "$MIAOU_BASH_DIR"/bin/miaou-bash "$MIAOU_BASH_DIR/lib/self-upgrade.bash" else bootstrap - miaou-bash "$MIAOU_BASH_DIR/lib/init.bash" + . "$MIAOU_BASH_DIR"/bin/miaou-bash "$MIAOU_BASH_DIR/lib/init.bash" echo "miaou-bash successfully installed" fi diff --git a/lib/init.bash b/lib/init.bash index db3611c..c3d90c1 100755 --- a/lib/init.bash +++ b/lib/init.bash @@ -17,7 +17,19 @@ readonly BACKUP='ORIGINAL' # FUNCTIONS -function required_packages { +function usr_bin_miaou_bash { + local source_bin="$MIAOU_BASH_DIR/bin/miaou-bash" + local dest_bin="/usr/bin/miaou-bash" + if ! [[ -f "$dest_bin" ]]; then + cp -f "$source_bin" "$dest_bin" + echo "/usr/bin/miaou-bash created" + elif ! cmp -s "$source_bin" "$dest_bin"; then + cp -f "$source_bin" "$dest_bin" + echo "/usr/bin/miaou-bash updated" + fi +} + +function install_required_packages { . "$MIAOU_BASH_DIR"/tools/pkg_add "${REQUIRED_PKGS[@]}" } @@ -51,20 +63,23 @@ function link_etc { fi } -function link_config_files { - if [[ "$DISTRO_LIKE" == 'arch' ]]; then - mkdir -p /etc/vim - if ! grep -q '/etc/vim/vimrc.local' /etc/vimrc; then - cat >>/etc/vimrc <<-EOF -" Source a global configuration file if available -if filereadable("/etc/vim/vimrc.local") - source /etc/vim/vimrc.local -endif +function arch_vimrc { + mkdir -p /etc/vim + if ! grep -q '/etc/vim/vimrc.local' /etc/vimrc; then + cat >>/etc/vimrc <<-EOF + " Source a global configuration file if available + if filereadable("/etc/vim/vimrc.local") + source /etc/vim/vimrc.local + endif EOF - echo "vimrc source /etc/vim/vimrc.local if any" - fi + echo "vimrc source /etc/vim/vimrc.local if any" fi +} + +function link_config_files { + [[ "$DISTRO_LIKE" == 'arch' ]] && arch_vimrc + link_etc vimrc.core vim link_etc vimrc.miaou vim link_etc vimrc.rookie vim @@ -100,8 +115,9 @@ function fix_terminfo_ghostty { source "$MIAOU_BASH_DIR/lib/functions.bash" assert_root +usr_bin_miaou_bash DISTRO_LIKE=$(fetch_distro_like) -required_packages +install_required_packages no_more_skeleton fix_terminfo_ghostty link_config_files diff --git a/lib/self-upgrade.bash b/lib/self-upgrade.bash index 5e4c47c..e184c15 100755 --- a/lib/self-upgrade.bash +++ b/lib/self-upgrade.bash @@ -20,12 +20,11 @@ function bootstrap { } function self_upgrade { - rm -rf "$MIAOU_BASH_DIR" - bootstrap - - . "$MIAOU_BASH_DIR/lib/init.bash" + mv "$MIAOU_BASH_DIR" "$MIAOU_BASH_DIR".before_upgrade + "$MIAOU_BASH_DIR".before_upgrade/install.sh + rm -rf "$MIAOU_BASH_DIR".before_upgrade echo "miaou-bash successfully updated" - miaou-bash --version + . "$MIAOU_BASH_DIR"/bin/miaou-bash --version } # MAIN diff --git a/lib/uninstall.bash b/lib/uninstall.bash index b4513e5..db76aa5 100644 --- a/lib/uninstall.bash +++ b/lib/uninstall.bash @@ -17,9 +17,7 @@ function uninstall { rm -f /etc/vimrc/vimrc.{azerty,core,local,miaou,rookie} rm -rf /opt/miaou-bash - unset MIAOU_BASH_DIR - echo 'MIAOU-BASH fully uninstalled, restored from original' } # Main @@ -29,7 +27,8 @@ assert_system_mode assert_root cd || exit if _confirm_destructive; then - uninstall + uninstall + echo 'MIAOU-BASH fully uninstalled, previous settings restored from original' else - >&2 echo canceled && builtin exit 1 + builtin exit 1 fi