1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
#!/bin/bash
show_help() {
echo "usage: tests.env start <ENV_NAME>"
echo " tests.env is-set <ENV_NAME> <VAR>"
echo " tests.env get <ENV_NAME> <VAR>"
echo " tests.env set <ENV_NAME> <VAR> <VAL>"
echo ""
echo "The tool is used to create an environment file"
echo " which can be shared across different tests and suites"
}
start() {
local NAME=$1
if [ -z "$NAME" ]; then
echo "tests.env: name for the env file is required"
exit 1
fi
if [ -f "$RUNTIME_STATE_PATH/$NAME.env" ]; then
echo "tests.env: env file $RUNTIME_STATE_PATH/$NAME.env already exists, deleting..."
rm -f "$RUNTIME_STATE_PATH/$NAME.env"
fi
mkdir -p "$RUNTIME_STATE_PATH"
touch "$RUNTIME_STATE_PATH/$NAME.env"
}
is_set() {
local NAME=$1
local VAR=$2
if [ -z "$NAME" ]; then
echo "tests.env: name for the env file is required"
exit 1
fi
if [ -z "$VAR" ]; then
echo "tests.env: variable to check in env file is required"
exit 1
fi
if [ ! -f "$RUNTIME_STATE_PATH/$NAME.env" ]; then
echo "tests.env: env file $RUNTIME_STATE_PATH/$NAME.env does not exist"
exit 1
fi
grep -Eq "^${VAR}=" "$RUNTIME_STATE_PATH/$NAME.env"
}
get() {
local NAME=$1
local VAR=$2
if [ -z "$NAME" ]; then
echo "tests.env: name for the env file is required"
exit 1
fi
if [ -z "$VAR" ]; then
echo "tests.env: variable to check in env file is required"
exit 1
fi
if [ ! -f "$RUNTIME_STATE_PATH/$NAME.env" ]; then
echo "tests.env: env file $RUNTIME_STATE_PATH/$NAME.env does not exist"
exit 1
fi
if is_set "$NAME" "$VAR"; then
grep -E "^${VAR}=" "$RUNTIME_STATE_PATH/$NAME.env" | cut -d "=" -f2-
fi
}
set() {
local NAME=$1
local VAR=$2
local VAL=$3
if [ -z "$NAME" ]; then
echo "tests.env: name for the env file is required"
exit 1
fi
if [ -z "$VAR" ]; then
echo "tests.env: variable to set in env file is required"
exit 1
fi
if [ ! -f "$RUNTIME_STATE_PATH/$NAME.env" ]; then
echo "tests.env: env file $RUNTIME_STATE_PATH/$NAME.env does not exist"
exit 1
fi
if is_set "$NAME" "$VAR"; then
sed -i -E "s/^${VAR}=.*/${VAR}=${VAL}/" "$RUNTIME_STATE_PATH/$NAME.env"
else
echo "${VAR}=${VAL}" >> "$RUNTIME_STATE_PATH/$NAME.env"
fi
}
main() {
if [ $# -eq 0 ]; then
show_help
exit 0
fi
local subcommand="$1"
local action=
while [ $# -gt 0 ]; do
case "$subcommand" in
-h|--help)
show_help
exit 0
;;
*)
action=$(echo "$subcommand" | tr '-' '_')
shift
break
;;
esac
done
if [ -z "$(declare -f "$action")" ]; then
echo "tests.env: no such command: $subcommand"
show_help
exit 1
fi
"$action" "$@"
}
main "$@"
|