v2.1.0
This commit is contained in:
63
setup.sh
63
setup.sh
@@ -1,33 +1,49 @@
|
||||
#!/usr/bin/env bash
|
||||
# USAGE: ./setup.sh install cbuild to /usr/local
|
||||
# ./setup.sh --local install cbuild to ~/.local
|
||||
# ./setup.sh --local install cbuild to $HOME/.local
|
||||
|
||||
# exit on errors
|
||||
set -xeo pipefail
|
||||
CBUILD_VERSION=2.1.0
|
||||
|
||||
function version_parse {
|
||||
local v="$1"
|
||||
local value="$1"
|
||||
var_name="$2"
|
||||
IFS_backup="$IFS"
|
||||
IFS='.'
|
||||
v_array=($v)
|
||||
local v_array=($value)
|
||||
IFS="$IFS_backup"
|
||||
version_major=${v_array[0]}
|
||||
version_minor=${v_array[1]}
|
||||
version_patch=${v_array[2]}
|
||||
eval ${var_name}_version_major=${v_array[0]}
|
||||
eval ${var_name}_version_minor=${v_array[1]}
|
||||
eval ${var_name}_version_patch=${v_array[2]}
|
||||
}
|
||||
|
||||
version_parse $CBUILD_VERSION
|
||||
function exec_script_line {
|
||||
local script="$1"
|
||||
local line_num="$2"
|
||||
local line_str="$(sed $line_num'!d' $script)"
|
||||
if [ -z "$line_str" ]; then
|
||||
echo "script line is empty"
|
||||
exit 1
|
||||
fi
|
||||
eval "$line_str"
|
||||
}
|
||||
|
||||
version_parse $CBUILD_VERSION local
|
||||
if [ -z "$CBUILD_INSTALL_DIR" ]; then
|
||||
if [ "$1" = "--local" ]; then
|
||||
CBUILD_INSTALL_DIR="~/.local/share/cbuild/${version_major}.${version_minor}"
|
||||
CBUILD_BIN_DIR="~/.local/bin"
|
||||
mkdir -p "~/.local"
|
||||
mkdir -p "~/.local/share"
|
||||
mkdir -p "~/.local/share/cbuild"
|
||||
mkdir -p "~/.local/bin"
|
||||
if [ ! -d "$HOME" ]; then
|
||||
echo "ERROR: home directory '$HOME' doesn't exist"
|
||||
exit 1
|
||||
fi
|
||||
CBUILD_INSTALL_DIR="$HOME/.local/share/cbuild/${local_version_major}.${local_version_minor}"
|
||||
CBUILD_BIN_DIR="$HOME/.local/bin"
|
||||
mkdir -p "$HOME/.local"
|
||||
mkdir -p "$HOME/.local/share"
|
||||
mkdir -p "$HOME/.local/share/cbuild"
|
||||
mkdir -p "$HOME/.local/bin"
|
||||
else
|
||||
CBUILD_INSTALL_DIR="/usr/local/share/cbuild/${version_major}.${version_minor}"
|
||||
CBUILD_INSTALL_DIR="/usr/local/share/cbuild/${local_version_major}.${local_version_minor}"
|
||||
CBUILD_BIN_DIR="/usr/local/bin"
|
||||
mkdir -p "/usr/local/share"
|
||||
mkdir -p "/usr/local/share/cbuild"
|
||||
@@ -38,6 +54,21 @@ fi
|
||||
rm -rf "$CBUILD_INSTALL_DIR"
|
||||
cp -r ./ "$CBUILD_INSTALL_DIR"
|
||||
rm -rf "$CBUILD_INSTALL_DIR/.git"
|
||||
ln -sf "$(realpath $CBUILD_INSTALL_DIR/cbuild.sh)" -T "$CBUILD_BIN_DIR/cbuild${version_major}.${version_minor}"
|
||||
ln -sf "$(realpath $CBUILD_INSTALL_DIR/cbuild.sh)" -T "$CBUILD_BIN_DIR/cbuild${local_version_major}.${local_version_minor}"
|
||||
|
||||
ln -sf "$(realpath $CBUILD_INSTALL_DIR/cbuild.sh)" -T "$CBUILD_BIN_DIR/cbuild"
|
||||
bootstrap_install_path="$CBUILD_INSTALL_DIR/../bootstrap.sh"
|
||||
if [ -f "$bootstrap_install_path" ]; then
|
||||
exec_script_line "$bootstrap_install_path" 2
|
||||
installed_bootstrap_version=$CBUILD_BOOTSTRAP_VERSION
|
||||
installed_bootstrap_version_int=$(echo $installed_bootstrap_version | sed 's/\.//g')
|
||||
exec_script_line "./bootstrap.sh" 2
|
||||
local_bootstrap_version=$CBUILD_BOOTSTRAP_VERSION
|
||||
local_bootstrap_version_int=$(echo $local_bootstrap_version | sed 's/\.//g')
|
||||
|
||||
if [[ $local_bootstrap_version_int > $installed_bootstrap_version_int ]]; then
|
||||
ln -sf "$(realpath $CBUILD_INSTALL_DIR/bootstrap.sh)" -T "$bootstrap_install_path"
|
||||
fi
|
||||
else
|
||||
ln -sf "$(realpath $CBUILD_INSTALL_DIR/bootstrap.sh)" -T "$bootstrap_install_path"
|
||||
fi
|
||||
ln -sf "$(realpath $bootstrap_install_path)" -T "$CBUILD_BIN_DIR/cbuild"
|
||||
|
||||
Reference in New Issue
Block a user