1
0
Fork 0
mirror of synced 2024-12-04 14:45:36 -05:00

Compare commits

...

4 commits

Author SHA1 Message Date
Andrey G.
9a1eb30700
Merge fdbb9cfe26 into 640b324401 2024-11-09 23:23:54 +00:00
Andrey G
fdbb9cfe26
added verbose mode for source_if_exists
and also expecting `file` instead of `source` as env. variable to make that possible without dancing around: 
```
#!/bin/bash

file=backup && yadm bootstrap;
file=install && yadm bootstrap;
file=configure &&yadm bootstrap;
```
2023-12-21 21:05:50 -05:00
Andrey G
5a2ed6c68d
linting 2023-12-21 12:40:46 -05:00
Andrey G
f76eecc321
Create bootstrap-source
Add example of bootstrap that can be used to run interactive shell scripts
2023-12-21 12:28:13 -05:00

View file

@ -0,0 +1,94 @@
#!/bin/bash
# Save this file as ~/.config/yadm/bootstrap and make it executable. It expects
# environment variable `file` with a name of shell script to execute.
# `file` can be relative to ~/.config/yadm/ or has full path.
#
# Usage:
# file=install yadm bootstrap
# or
# file=~/.config/yadm/install yadm bootstrap
#
# where `~/.config/yadm/install` can be like this:
#
# [[ ! $(type -t install) = 'function' ]] && echo "Usage: file=$(basename "$0") yadm bootstrap" && exit 1
#
# confirm yes 'softwareupdate --agree-to-license --install --all' "$(info 'Install ' warning 'OSX updates')"
# install 'brew' '/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"'
#
# brew bundle --global
#
TEXT_COLOR_RED=$(tput setaf 1)
TEXT_COLOR_GREEN=$(tput setaf 2)
TEXT_COLOR_BLUE=$(tput setaf 4)
TEXT_COLOR_YELLOW=$(tput setaf 3)
TEXT_DEFAULT=$(tput sgr0)
info() {
printf "${TEXT_COLOR_BLUE}%s${TEXT_DEFAULT}" "$1"; "${@:2}"
}
error() {
printf "${TEXT_COLOR_RED}%s${TEXT_DEFAULT}" "$1"; "${@:2}"
}
success() {
printf "${TEXT_COLOR_GREEN}%s${TEXT_DEFAULT}" "$1"; "${@:2}"
}
warning() {
printf "${TEXT_COLOR_YELLOW}%s${TEXT_DEFAULT}" "$1"; "${@:2}"
}
source_if_exists() {
local src=$1
local verbose="${2:-no}"
[[ ! -f $src ]] && return 1;
[[ "${verbose:0:1}" == v* ]] && printf "%s\n\n" "$(info "-> $src")";
source "$src"
}
command_exists () {
command -v "$1" &> /dev/null
}
# install a 'command' via 'code' if it was not previously installed yet
install() {
local command=$1
local code=$2
local message=$(info 'Installing ' warning "$command")
if command_exists "$command"; then
echo "$message...[$(success 'already')]"
else
echo "$message..."
eval "$code"
fi
}
# execute a 'code' after confirmation from user
confirm() {
local default_answer="${1:-no}"
local code=$2
local message=$3
local options answer
if [[ "${default_answer:0:1}" == y* ]]; then
options="$(success 'YES')/no"
else
options="yes/$(success 'NO')"
fi
read -r -p "${message} [${options}]:" answer
answer=${answer:-$default_answer}
if [[ "${answer:0:1}" == y* ]]; then
eval "$code"
fi
}
source_if_exists "$(dirname "${0}")/$file" v ||
source_if_exists $file v ||
([[ -z $file ]] && echo "Usage: file=FILENAME yadm bootstrap" || echo "Can't locate file '$file' for bootstrapping")