diff --git a/alias-bootstrap.sh b/alias-bootstrap.sh index 30f2e2d18aec9ba537bd2fb1cd43f487613dde77..1ca24a592937bc4603bbe6152ec8e8a4d9b7c3bc 100755 --- a/alias-bootstrap.sh +++ b/alias-bootstrap.sh @@ -19,7 +19,7 @@ git config 'alias.cmake' '!cmake' # # git cmake --build # -git config 'alias.build' '!p="${1##-*}"; [ "$p" ] && shift; git cmake --build --preset "${p:-default}"' +git config 'alias.build' '!./custom-git-commands/git-build' # Usage: git crossmake # diff --git a/custom-git-commands/git-build b/custom-git-commands/git-build new file mode 100755 index 0000000000000000000000000000000000000000..901d52c1674526dc67ee23941e6a9c4b9b90077e --- /dev/null +++ b/custom-git-commands/git-build @@ -0,0 +1,43 @@ +#!/bin/sh +git_dir="$(git rev-parse --git-dir)" +preset_file="$git_dir/custom-git-build-cached-preset" + +from_cache= +if [ $# -ge 1 ]; then + preset="$1" +else + preset="$(cat "$preset_file" 2>/dev/null)" + if [ -n "$preset" ]; then + from_cache=1 + fi +fi + +case "$preset" in + ''|help) + git cmake --list-presets + >&2 cat <<-EOF + + This is the first you're running 'git build'. + Pick a preset from above and try again. + + For example: 'git build ninja-x86_mingw_static_vcpkg-develop' + + After this first run, you can run 'git build' by itself and it will re-use the preset from last time! + EOF + ;; + + *) + if [ -n "$from_cache" ]; then + echo "Using same build preset as last time: '$preset'" + else + echo "$preset" > "$preset_file" + fi + git cmake --build --preset "$preset" + if [ $? -ne 0 ]; then + >&2 cat <<-EOF + + CMake ran into some sort of error. + Have you already ran 'git cmake --preset $preset' at least once? + EOF + fi +esac