Skip to content

Instantly share code, notes, and snippets.

@mbrodala
Created August 1, 2016 15:00
Show Gist options
  • Save mbrodala/2bb8da3095b6ad102a170c90528e1ffc to your computer and use it in GitHub Desktop.
Save mbrodala/2bb8da3095b6ad102a170c90528e1ffc to your computer and use it in GitHub Desktop.
declare -gA runner_task_orders
runner_before() {
local task=${1}
local other_task=${2}
runner_task_orders[${task}_before]="${runner_task_orders[${task}_before]} ${other_task}"
}
runner_after() {
local task=${1}
local other_task=${2}
runner_task_orders[${task}_after]="${runner_task_orders[${task}_after]} ${other_task}"
}
runner_run_task() {
runner_sequence ${runner_task_orders[${1}_before]}
local task_color="${runner_colors[cyan]}${1}${runner_colors[reset]}"
runner_log "Starting '${task_color}'..."
local -i time_start="$(runner_time)"
"task_${1}" "${runner_flags[@]}"
local exit_code=${?}
local -i time_end="$(runner_time)"
local time_diff="$(runner_pretty_ms $((time_end - time_start)))"
if [[ ${exit_code} -ne 0 ]]; then
runner_log_error "Task '${1}'" \
"failed after ${time_diff} (${exit_code})"
return ${exit_code}
fi
runner_log "Finished '${task_color}'" \
"after ${runner_colors[purple]}${time_diff}${runner_colors[reset]}"
runner_sequence ${runner_task_orders[${1}_after]}
}
task_before_before() {
:
}
task_before() {
:
}
task_middle() {
:
}
task_after_middle() {
:
}
task_after() {
:
}
task_after_after() {
:
}
runner_before before before_before
runner_after middle after_middle
runner_after middle after
runner_before middle before
runner_after after after_after
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment