Add libraries, deploys

This commit is contained in:
garrettmills 2020-02-26 00:39:57 -06:00
commit 3dba401c75
9 changed files with 180 additions and 0 deletions

26
bootstrap.bash Executable file
View File

@ -0,0 +1,26 @@
#!/bin/bash
# The path to the libglm root.
LIBGLM_ROOT=${1:-~/.libglm}
# Get the path of the source file for some libglm mod by name.
# $1 - the name of the mod
function libglm_mod {
source $LIBGLM_ROOT/lib/env.bash
source $LIBGLM_ROOT/lib/fs.bash
case $1 in
deploy|args|env|string|notify|fs)
echo $(fs_lib $1)
;;
*)
echo "Error: no such mod name found: $1";
;;
esac
}
# Source the specified mod into the current shell.
# $1 - the name of the mod
function libglm_load {
. $(libglm_mod $1)
}

12
deploys/edge/garrettmills.bash Executable file
View File

@ -0,0 +1,12 @@
#!/bin/bash -xe
systemctl stop garrettmills
cd /etc/glmdev/app/garrettmills-dev
git pull
yarn install
systemctl start garrettmills

View File

@ -0,0 +1,2 @@
#!/bin/bash
echo "Test deployment worked!"

69
lib/args.bash Executable file
View File

@ -0,0 +1,69 @@
#!/bin/bash
# Search the given arguments for the value of the specified key
# $1 - the name of the argument - (e.g. "verbose")
# $2+ - arguments to parse for value - (e.g. some args --verbose=3 more args)
function args_get_long {
local want_key=$1; shift;
while [[ $# -gt 0 ]]
do
local key="$1"
case $key in
"--$want_key")
echo $2
return
;;
--$want_key=*)
echo "${key#*=}"
return
;;
esac
shift
done
}
# Search the given arguments for the value of the specified key
# $1 - the name of the argument's short form - (e.g. "v")
# $2+ - arguments to parse for value - (e.g. some args -v=3 more args)
function args_get_short {
local want_key=$1; shift;
while [[ $# -gt 0 ]]
do
local key="$1"
case $key in
"-$want_key")
echo $2
return
;;
-$want_key=*)
echo "${key#*=}"
return
;;
esac
shift
done
}
# Search the given arguments for the value of the specified key or short
# $1 - the long name of the argument - (e.g. "verbose")
# $2 - the short name of the argument - (e.g. "v")
# $3+ - arguments to parse for value - (e.g. some args -w shorts --and longs more args)
function args_get {
local want_long=$1; shift;
local want_short=$1; shift;
while [[ $# -gt 0 ]]
do
local key="$1"
case $key in
"--$want_long"|"-$want_short")
echo $2
return
;;
--$want_long=*|-$want_short=*)
echo "${key#*=}"
return
;;
esac
shift
done
}

15
lib/deploy.bash Executable file
View File

@ -0,0 +1,15 @@
#!/bin/bash
# Get the path to the deploy script for this host by name.
# $1 - the name of the deploy script
function deploy_get {
source $(libglm_mod fs)
source $(libglm_mod env)
echo "$(fs_glm 'deploys' $LIBGLM_HOSTNAME $1).bash"
}
# Execute the deploy script for this host by name.
# $1 - the name of the deploy script
function deploy_run {
bash -xe $(deploy_get $1)
}

10
lib/env.bash Executable file
View File

@ -0,0 +1,10 @@
#!/bin/bash
# Fully qualified URL to the Gotify server. Should not end with a /.
NOTIFY_URL="https://notify.garrettmills.dev"
# App token to use for the Gotify server.
NOTIFY_TOKEN="A1dyzPhND7Bq7v_"
# The current hostname
LIBGLM_HOSTNAME=$(hostname)

23
lib/fs.bash Executable file
View File

@ -0,0 +1,23 @@
#!/bin/bash
# Resolve the arguments into a path, joined by / chars.
# $@ - paths to join
function fs_resolve {
source "$LIBGLM_ROOT/lib/string.bash"
local SPLIT_PATH=$(string_join_array / $@)
echo $SPLIT_PATH
}
# Resolve the path to a libglm BASH library.
# $@ - relative name of the lib - not ending in .bash
function fs_lib {
local SPLIT_PATH=$(fs_resolve $LIBGLM_ROOT/lib $@)
echo $SPLIT_PATH.bash
}
# Resolve the path to a resource in the libglm root.
# $@ - relative paths to join
function fs_glm {
local SPLIT_PATH=$(fs_resolve $LIBGLM_ROOT $@)
echo $SPLIT_PATH
}

15
lib/notify.bash Executable file
View File

@ -0,0 +1,15 @@
#!/bin/bash
# Send a notification through the Gotify gateway.
# $1 - the title of the message
# $2 - the body of the message
# [$3 = 5] - the message priority
# [$4 = $NOTIFY_TOKEN] - app token to use
function notify_push {
source $(libglm_mod env)
MSG_TITLE=$1
MSG_BODY=$2
MSG_TOKEN=${4:-$NOTIFY_TOKEN}
MSG_PRIORITY=${3:-5}
curl -X POST --data "title=$MSG_TITLE" --data "message=$MSG_BODY" --data "priority=$MSG_PRIORITY" "$NOTIFY_URL/message?token=$MSG_TOKEN"
}

8
lib/string.bash Executable file
View File

@ -0,0 +1,8 @@
#!/bin/bash
# Joins all arguments by the delimiter.
# $1 - delimiter (e.g. ,)
# $2+ - strings to be joined by the delimeter
function string_join_array {
local IFS="$1"; shift; echo "$*";
}