#!/usr/bin/env bash set -eu pipefail function bash_macros_latest_version() { curl -s https://api.github.com/repos/mikeschinkel/bash-macros/releases/latest | grep tag_name | awk -F'"' '{print $4}' } BASH_MACROS_VERSION="${BASH_MACROS_VERSION:-$(bash_macros_latest_version)}" function bash_macros_on_error() { local msg="$1" echo echo "${msg}; cannot continue." echo bash_macros_wait exit 1 } function bash_macros_wait() { echo "Press Ctrl-C to exit..." read -t 10 -n 1 } function bash_macros_install() { local config_dir="${HOME}/.config" local bashrc="${HOME}/.bashrc" local install_dir=".config/bash-macros" local install_dirpath="${HOME}/${install_dir}" local script="${install_dirpath}/bash-macros.sh" local pwd echo "Installing Bash Macros" echo pwd="$(pwd)" if [ "" == "${HOME}" ] ; then bash_macros_on_error "Your \$HOME variable is not set" fi if ! mkdir -p "${config_dir}" ; then bash_macros_on_error "Cannot create ${config_dir}" fi if ! cd "${config_dir}" ; then bash_macros_on_error "Cannot change directory to ${config_dir}" fi if [ -d "${install_dirpath}" ] ; then bash_macros_on_error "Bash Macro install directory ~/${install_dir} already exists" fi git clone --quiet https://github.com/mikeschinkel/bash-macros if ! cd "bash-macros" ; then bash_macros_on_error "Cannot change directory to $(pwd)/bash-macros" fi git checkout "${BASH_MACROS_VERSION}" 2>/dev/null printf "\nsource %s\n" "${script}" >> "${bashrc}" # shellcheck disable=SC1090 source "${script}" >/dev/null alias m1="echo 'Hello Bash Macros'" bash_macros_save >/dev/null bash_macros_help # shellcheck disable=SC2164 cd "${pwd}" echo "Installation complete." echo } bash_macros_install "$@"