v2.0.0
This commit is contained in:
134
cbuild.sh
Normal file
134
cbuild.sh
Normal file
@@ -0,0 +1,134 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
tabs 4
|
||||
|
||||
# exit on errors
|
||||
set -eo pipefail
|
||||
|
||||
INSTALLED_CBUILD_VERSION=2.0.0
|
||||
|
||||
if [ -z "$CBUILD_INSTALL_DIR" ]; then
|
||||
CBUILD_INSTALL_DIR="/usr/local/share/cbuild"
|
||||
fi
|
||||
|
||||
function include {
|
||||
local script_path="$1"
|
||||
if [[ "$script_path" == cbuild/* ]]; then
|
||||
script_path="$CBUILD_INSTALL_DIR/$(safeprint $script_path | sed 's,^cbuild/,,')"
|
||||
fi
|
||||
# echp "including script $script_path"
|
||||
. "$script_path"
|
||||
}
|
||||
|
||||
function include_if_not_null {
|
||||
if [ ! -z "$1" ]; then
|
||||
include "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
include "cbuild/myprint.sh"
|
||||
include "cbuild/functions.sh"
|
||||
include "cbuild/config.sh"
|
||||
|
||||
function print_help_and_exit {
|
||||
myprint "Usage: cbuild [OPTIONS] [TASK]"
|
||||
myprint " -h, --help Show this message"
|
||||
myprint " -n, --new-project [PROJ_DIR] Initialize new cbuild project directory (default=./)"
|
||||
myprint " -c, --current-config FILE Set current config file path (default=./current.config)"
|
||||
myprint " -d, --default-config FILE Set default config file path (default=./current.config)"
|
||||
exit 0
|
||||
}
|
||||
|
||||
current_config_path="./current.config"
|
||||
default_config_path="./default.config"
|
||||
args=($@)
|
||||
args_len=${#args[@]}
|
||||
selected_tasks_array=()
|
||||
i=0
|
||||
if [ $args_len -eq 0 ]; then
|
||||
print_help_and_exit
|
||||
fi
|
||||
|
||||
function get_next_arg {
|
||||
i=$((i+1))
|
||||
safeprint "${args[i]}"
|
||||
}
|
||||
|
||||
while [ $i -lt $args_len ]
|
||||
do
|
||||
case "${args[i]}" in
|
||||
'-h' | '--help')
|
||||
print_help_and_exit
|
||||
;;
|
||||
'-c' | '--current-config')
|
||||
i=$((i+1))
|
||||
current_config_path="${args[i]}"
|
||||
myprint "<$current_config_path>"
|
||||
exit
|
||||
;;
|
||||
'-d' | '--default-config')
|
||||
default_config_path="$(get_next_arg)"
|
||||
;;
|
||||
'-n' | '--new-project')
|
||||
new_project_dir="$(get_next_arg)"
|
||||
if [ -z "$new_project_dir" ]; then
|
||||
new_project_dir="./"
|
||||
fi
|
||||
|
||||
if ask_yn "create default.config?"; then
|
||||
cp "$CBUILD_INSTALL_DIR/default.config" "$new_project_dir"
|
||||
project_name="$(ask 'Enter project name')"
|
||||
sed -i "s,\%PROJECT_NAME\%,$project_name,g"
|
||||
fi
|
||||
if ask_yn "Copy default .gitignore?"; then
|
||||
cp "$CBUILD_INSTALL_DIR/.gitignore" "$new_project_dir"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
selected_tasks_array+=(${args[i]})
|
||||
;;
|
||||
esac
|
||||
i=$((i+1))
|
||||
done
|
||||
|
||||
function call_task {
|
||||
local current_config_path="$1"
|
||||
local default_config_path="$2"
|
||||
local task="$3"
|
||||
|
||||
print_header "${CYAN}" "─" "$task"
|
||||
load_config "$task" "$current_config_path" "$default_config_path"
|
||||
resolve_dependencies "$DEPS_BASEDIR" "$DEPS"
|
||||
|
||||
myprint "${BLUE}executing $PRE_TASK_SCRIPT"
|
||||
# include_if_not_null "$PRE_TASK_SCRIPT"
|
||||
|
||||
myprint "${BLUE}executing $TASK_SCRIPT"
|
||||
# include "$TASK_SCRIPT"
|
||||
|
||||
myprint "${BLUE}executing $POST_TASK_SCRIPT"
|
||||
# include_if_not_null "$POST_TASK_SCRIPT"
|
||||
myprint "error"
|
||||
}
|
||||
|
||||
function call_tasks {
|
||||
local tasks="$@"
|
||||
myprint "$tasks"
|
||||
|
||||
print_header "${WHITE}" "═" "$PROJECT"
|
||||
for task in $tasks ; do
|
||||
call_task "$task"
|
||||
done
|
||||
print_hline "${WHITE}" "═"
|
||||
}
|
||||
|
||||
time call_tasks "${selected_tasks_array[@]}" #2>&1 | tee cbuild.log
|
||||
# remove terminal escape codes
|
||||
sed -e 's/[^[:blank:][:print:]]//g' \
|
||||
-e 's/\[0;[0-9][0-9]m//g' \
|
||||
-e 's/\[0;[0-9]m//g' \
|
||||
-e 's/\[[0-9][0-9]m//g' \
|
||||
-e 's/\[[0-9]m//g' \
|
||||
-e 's/ H //g' \
|
||||
-e 's/\[3gH //g' \
|
||||
-i cbuild.log
|
||||
Reference in New Issue
Block a user