Browse Source

simplified install

main
pvincent 2 days ago
parent
commit
9ff46a896c
  1. 31
      install.sh
  2. 12
      lib/functions.bash
  3. 23
      lib/self-upgrade.bash

31
install.sh

@ -2,36 +2,39 @@
## CONSTANTS ## CONSTANTS
readonly DESTINATION=/opt
readonly MIAOU_BASH_DIR=/opt/miaou-bash
readonly MAIN_TAR_GZ_URL="https://git.artcode.re/miaou/miaou-bash/archive/main.tar.gz" readonly MAIN_TAR_GZ_URL="https://git.artcode.re/miaou/miaou-bash/archive/main.tar.gz"
## FUNCTIONS ## FUNCTIONS
function bootstrap { function bootstrap {
if [[ ! -d "$DESTINATION/miaou-bash" ]]; then
local temp_dir
temp_dir=$(mktemp -d)
pushd "$temp_dir" >/dev/null || return 2
curl -s -O $MAIN_TAR_GZ_URL
tar -xzf main.tar.gz --directory "$DESTINATION"
echo "directory: miaou-bash successfully deployed to $DESTINATION"
popd >/dev/null || return 3
fi
cd "$(mktemp -d)" || exit 3
curl -s -O $MAIN_TAR_GZ_URL
tar -xzf main.tar.gz --directory "$MIAOU_BASH_DIR/.."
local source_bin="$DESTINATION/miaou-bash/bin/miaou-bash"
local source_bin="$MIAOU_BASH_DIR/bin/miaou-bash"
local dest_bin="/usr/bin/miaou-bash" local dest_bin="/usr/bin/miaou-bash"
if ! cmp -s "$source_bin" "$dest_bin"; then if ! cmp -s "$source_bin" "$dest_bin"; then
cp -f "$source_bin" "$dest_bin" cp -f "$source_bin" "$dest_bin"
echo "executable: /usr/bin/miaou-bash freshly created"
fi fi
echo "miaou-bash deployed to: $MIAOU_BASH_DIR"
}
export MIAOU_BASH_DIR="$DESTINATION/miaou-bash"
function assert_supported_distro {
grep -E '^ID=debian|^ID_LIKE=debian' /etc/os-release ||
grep -E '^ID=arch|^ID_LIKE=arch' /etc/os-release
} }
## MAIN ## MAIN
set -Eeuo pipefail
[[ "$UID" -ne 0 ]] && echo 'root privilege required' && exit 1 [[ "$UID" -ne 0 ]] && echo 'root privilege required' && exit 1
if [[ -v MIAOU_BASH_DIR && -d "$MIAOU_BASH_DIR" ]]; then
! assert_supported_distro && echo 'unsupported distro: debian-like OR arch-like expected' && exit 2
export MIAOU_BASH_DIR
if [[ -d "$MIAOU_BASH_DIR" ]]; then
miaou-bash "$MIAOU_BASH_DIR/lib/self-upgrade.bash" miaou-bash "$MIAOU_BASH_DIR/lib/self-upgrade.bash"
else else
bootstrap bootstrap

12
lib/functions.bash

@ -4,6 +4,14 @@
## ARRAY Functions ## ARRAY Functions
## =============== ## ===============
function is_debian_like {
grep -E 'ID=debian|ID_LIKE=debian' /etc/os-release
}
function is_arch_like {
grep -E 'ID=arch|ID_LIKE=arch' /etc/os-release
}
function _array_contains { function _array_contains {
local -n array=$1 local -n array=$1
local element=$2 local element=$2
@ -101,11 +109,11 @@ function isArray {
} }
function isDebian { function isDebian {
grep ^ID=debian /etc/os-release
grep -q ^ID=debian /etc/os-release
} }
function isArch { function isArch {
grep ^ID=arch /etc/os-release
grep -q ^ID=arch /etc/os-release
} }
function os-release { function os-release {

23
lib/self-upgrade.bash

@ -2,9 +2,7 @@
# CONSTANTS # CONSTANTS
#FIXME: source from functions.bash
if [[ ! -v DESTINATION && ! -v MAIN_TAR_GZ_URL ]]; then
readonly DESTINATION=/opt
if [[ ! -v MAIN_TAR_GZ_URL ]]; then
readonly MAIN_TAR_GZ_URL="https://git.artcode.re/miaou/miaou-bash/archive/main.tar.gz" readonly MAIN_TAR_GZ_URL="https://git.artcode.re/miaou/miaou-bash/archive/main.tar.gz"
fi fi
@ -12,30 +10,21 @@ fi
#FIXME: source from functions.bash #FIXME: source from functions.bash
function bootstrap { function bootstrap {
if [[ ! -d "$DESTINATION/miaou-bash" ]]; then
local temp_dir
temp_dir=$(mktemp -d)
pushd "$temp_dir" >/dev/null || return 2
curl -s -O $MAIN_TAR_GZ_URL
tar -xzf main.tar.gz --directory "$DESTINATION"
echo "directory: miaou-bash successfully deployed to $DESTINATION"
popd >/dev/null || return 3
fi
cd "$(mktemp -d)" || exit 4
curl -s -O $MAIN_TAR_GZ_URL
tar -xzf main.tar.gz --directory "$MIAOU_BASH_DIR/.."
local source_bin="$DESTINATION/miaou-bash/bin/miaou-bash"
local source_bin="$MIAOU_BASH_DIR/bin/miaou-bash"
local dest_bin="/usr/bin/miaou-bash" local dest_bin="/usr/bin/miaou-bash"
if ! cmp -s "$source_bin" "$dest_bin"; then if ! cmp -s "$source_bin" "$dest_bin"; then
cp -f "$source_bin" "$dest_bin" cp -f "$source_bin" "$dest_bin"
echo "executable: /usr/bin/miaou-bash freshly created"
echo "/usr/bin/miaou-bash updated"
fi fi
export MIAOU_BASH_DIR="$DESTINATION/miaou-bash"
} }
# MAIN # MAIN
[[ "$UID" -ne 0 ]] && echo 'root privilege required' && exit 1 [[ "$UID" -ne 0 ]] && echo 'root privilege required' && exit 1
[[ ! -v MIAOU_BASH_DIR ]] && export MIAOU_BASH_DIR="$DESTINATION/miaou-bash"
current=$(miaou-bash --version) current=$(miaou-bash --version)
latest=$("$MIAOU_BASH_DIR/tools/wget_semver" artcode miaou/miaou-bash) latest=$("$MIAOU_BASH_DIR/tools/wget_semver" artcode miaou/miaou-bash)

Loading…
Cancel
Save