#!/bin/bash source() { if [[ $1 != */* ]] && ( command -v base64_embedded_source__"$1" || [ -f src/"$1" ] ) >&2 # >/dev/null then rewrite_self \ "$1" \ src/"$1" \ base64_embedded_source__"$1" \ "${@:2}" else builtin source "$@" fi } denominate_function() { declare -n func_name="$1" local func_output_b64encoded output_hash read -r -d '' \ func_output_b64encoded \ < <(base64) || [ "${func_output_b64encoded}" ] read output_hash _ \ < <(base64 -d <<< "$func_output_b64encoded" | sha256sum) [ ${#output_hash} = 64 ] || return func_name=SHA256_${output_hash:0:32} source <(cat </dev/null || return builtin source <("$3") "${@:4}" || return [ "$do_rewrite" ] || return 0 if sed \ -i~"$(date -Ins)" \ -e "1 { r ${do_rewrite}"$'\n'" }" \ "$0" then local r=0 else local r=$? fi rm "$do_rewrite" return $r } stdin_to_function() { cat <<. ${1}() { base64 -d <<. $(base64 && echo .) } . } embed_source() { stdin_to_function "base64_embedded_source__${1}" "${@:2}" } print_test_script_for_SOURCES.bash() { cat <<. #!/bin/bash source SOURCES.bash source rpc.bash r() { : base64_embedded_source__rpc.bash : base64_embedded_source__dependencies.bash source rpc.bash } BASH_RPC_REMOTE_DEST=localhost \\ remote_run_function \\ r . } setup_test_dir() { ( set -e mkdir -p test_SOURCES.bash cd test_SOURCES.bash mkdir -p src ln -sf -t src \ ../../SOURCES.bash \ ../../src/{rpc,dependencies}.bash print_test_script_for_SOURCES.bash > test-SOURCES.bash ) } run_test() { ( set -ex cd test_SOURCES.bash PATH=$PWD/src:$PATH bash test-SOURCES.bash || true PATH=$PWD/src:$PATH bash test-SOURCES.bash ) } bootstrap_SOURCES.bash() { setup_test_dir && run_test } [ "$0" = 'bootstrap_SOURCES.bash' ] && bootstrap_SOURCES.bash