Files
keycodex/snippets/sh.snippets
T
2024-05-05 15:24:18 +05:45

152 lines
2.8 KiB
Plaintext

snippet boil "boilerplace"
#!/usr/bin/env bash
set -uf -o pipefail
IFS=$'\n\t'
$0
snippet boil2 "Boilerplate" b
#!/usr/bin/env bash
set -euf -o pipefail
IFS=$'\n\t'
#/ Usage:
#/ Description:
#/ Examples:
#/ Options:
#/ --help: Display this help message
usage() {
grep '^#/' "\$0" | cut -c4-
exit 0
}
expr "$*" : ".*--help" > /dev/null && usage
echoerr() { printf "%s\n" "$*" >&2; }
info() { echoerr "[INFO] $*"; }
warning() { echoerr "[WARNING] $*"; }
error() { echoerr "[ERROR] $*"; }
fatal() {
echoerr "[FATAL] $*"
exit 1
}
cleanup() {
info "... cleaned up"
}
if [[ "\${BASH_SOURCE[0]}" = "\$0" ]]; then
trap cleanup EXIT
$0
fi
snippet scriptdir "get dir of current script"
DIR="$( cd "$(dirname "\${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
snippet arg_default "argument with default value"
ARG=\$\{1:-default\}
snippet arg_switch "getopts switch"
while getopts "hv" arg; do
case "\$arg" in
h) # help
show_help
exit 0
;;
v) # version
printf "%s\\n" "\$version"
exit 0
;;
*)
exit 1
esac
done
snippet if_empty "if empty"
if [ -z "$VAR" ]; then
true
fi
snippet if_not_empty "if not empty"
if [ -n "$VAR" ]; then
true
fi
snippet if_file "if file exists"
if [[ -f "$PATH" ]]; then
$0
fi
snippet if_dir "if dir exists"
if [[ -d "$PATH" ]]; then
$0
fi
snippet if_grep "if file contains"
if grep -q "$1" "$2"; then
$0
fi
snippet if_argc "if argument count"
if [ "$#" -eq $1 ]; then
$0
fi
echo $#
snippet if_not_argc "if not argument count"
if [ "$#" -ne $1 ]; then
$0
fi
echo $#
snippet if_numeric "check if numeric"
if printf "%s" "$1" | grep -Eq '^[+-]?[0-9]+$'; then
$0
fi
snippet if_tmux "if in tmux"
if printf "%s" "$TERM" | grep -Fq screen && test "$TMUX" ; then
$0
fi
snippet if_root "if not running as root"
if [[ $EUID -eq 0 ]]; then
$0
fi
snippet if_not_root "if not running as root"
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root"
exit 1
fi
snippet for_line_in_var "for line in variable"
while read -r LINE; do
printf 'line: %s\n' "$LINE"
done <<< "$VAR"
snippet for_file_rg "for file in rg match"
FILES=$(rg -e "^<<<<<<")
while IFS=: read -r FILE _; do
printf 'file: %s\n' "$FILE"
done <<< "$FILES"
snippet confirm "prompt user to confirm action"
read -p "$1" -n 1 -r
echo
if [[ \$REPLY =~ ^[Yy]$ ]]
then
$0
fi
snippet colors "use colors"
BLACK = $(shell tput -Txterm setaf 0)
RED = $(shell tput -Txterm setaf 1)
GREEN = $(shell tput -Txterm setaf 2)
YELLOW = $(shell tput -Txterm setaf 3)
BLUE = $(shell tput -Txterm setaf 4)
MAGENTA = $(shell tput -Txterm setaf 5)
CYAN = $(shell tput -Txterm setaf 6)
WHITE = $(shell tput -Txterm setaf 7)
RESET = $(shell tput -Txterm sgr0)