From a7b3bc593856b588118537bc6af7451c7af889bc Mon Sep 17 00:00:00 2001 From: James R <justsomejames2@gmail.com> Date: Fri, 5 Apr 2024 22:09:31 -0700 Subject: [PATCH] alias-bootstrap.sh: rewrite git build alias for new build system - Built-in help messages - On-disk cache for last used preset --- alias-bootstrap.sh | 2 +- custom-git-commands/git-build | 43 +++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100755 custom-git-commands/git-build diff --git a/alias-bootstrap.sh b/alias-bootstrap.sh index 30f2e2d18a..1ca24a5929 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 0000000000..901d52c167 --- /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 -- GitLab