#!/usr/bin/env bash main() { redefine-functions-defined-with-selector-16 if [[ $(type -t "⚡$1") == "function" ]]; then ⚡$1 else ⚡help fi } redefine-functions-defined-with-selector-16() { for function in $(compgen -c $(printf "⚡\uFE0F")); do original_definition="$(typeset -f $function)" eval "${original_definition//$(printf "⚡\uFE0F")/⚡}" unset $function done } ⚡help() { _help-line "Show this list" "$@" echo Usage: "$0" SUBCOMMAND echo echo "Available subcommands:" for subcommand in $(_subcommands); do if [[ $(type ⚡$subcommand) =~ _help-line ]]; then printf "\t%-20s - %s\n" "$subcommand" "$(⚡$subcommand help-line)" else printf "\t%-20s\n" $subcommand fi done } _subcommands() { compgen -c ⚡ | cut -c2- } _help-line() { if [[ "$#" == 2 && "$2" == "help-line" ]]; then echo "$1" && exit 0 fi } _good-message() { echo -e "\e[32m$@\e[0m" } _bad-message() { echo -e "\e[31m$@\e[0m" } _wrapper() { unset OPTIND while getopts "l:d:n:v:" opt; do case $opt in l) linux_url=$OPTARG ;; d) darwin_url=$OPTARG ;; n) name=$OPTARG ;; v) version=$OPTARG ;; esac done while [[ -n "$1" && "$1" != "--" ]]; do shift done shift if [[ $(uname -s) == Linux ]]; then url=$linux_url else url=$darwin_url fi wrapper_root=".generated/wrapper/$name/$version/" mkdir -p $wrapper_root [[ -f $wrapper_root/bin ]] || curl --location ${url//VERSION/$version} > $wrapper_root/bin chmod +x $wrapper_root/bin ./$wrapper_root/bin "$@" } [[ $(type -t _verify-prerequisites) == "function" ]] && ! _verify-prerequisites && exit 1 main "$@"