Skip to content

Commit 604d9c3

Browse files
committed
Support Xcode's git path mocker
1 parent e2c4abf commit 604d9c3

File tree

2 files changed

+30
-8
lines changed

2 files changed

+30
-8
lines changed

mock-git-binary.sh

+18-4
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,25 @@ else
88
TEMP_DIR="/tmp"
99
fi
1010
BACKUP_GIT_PATH="${TEMP_DIR%/}/git_bak"
11+
12+
# Backup and mock the primary Git binary
1113
sudo mv "${ORIGINAL_GIT_PATH}" "${BACKUP_GIT_PATH}"
1214
# shellcheck disable=SC2016
1315
echo -e '#!/bin/sh\necho "MOCKED COMMAND: $0 $@"' | sudo tee "${ORIGINAL_GIT_PATH}"
1416
sudo chmod +x "${ORIGINAL_GIT_PATH}"
15-
# shellcheck disable=SC2086
16-
echo "export ORIGINAL_GIT_PATH=\"${ORIGINAL_GIT_PATH}\"" >> $BASH_ENV
17-
# shellcheck disable=SC2086
18-
echo "export BACKUP_GIT_PATH=\"${BACKUP_GIT_PATH}\"" >> $BASH_ENV
17+
18+
# Check for macOS and mock Xcode's Git binary if it exists
19+
if [[ "$(uname)" == "Darwin" ]]; then
20+
XCODE_GIT_PATH="$(xcode-select -p)/usr/bin/git"
21+
if [[ -f "${XCODE_GIT_PATH}" ]]; then
22+
BACKUP_XCODE_GIT_PATH="${TEMP_DIR%/}/xcode_git_bak"
23+
sudo mv "${XCODE_GIT_PATH}" "${BACKUP_XCODE_GIT_PATH}"
24+
sudo ln -s "${ORIGINAL_GIT_PATH}" "${XCODE_GIT_PATH}"
25+
echo "export BACKUP_XCODE_GIT_PATH=\"${BACKUP_XCODE_GIT_PATH}\"" >> "${BASH_ENV}"
26+
fi
27+
fi
28+
29+
30+
# Environment variables to restore original paths later
31+
echo "export ORIGINAL_GIT_PATH=\"${ORIGINAL_GIT_PATH}\"" >> "${BASH_ENV}"
32+
echo "export BACKUP_GIT_PATH=\"${BACKUP_GIT_PATH}\"" >> "${BASH_ENV}"

unmock-git-binary.sh

+12-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,16 @@
11
#!/bin/bash
22
set -eox pipefail
33

4+
# Restore the primary Git binary
45
sudo mv "${BACKUP_GIT_PATH}" "${ORIGINAL_GIT_PATH}"
5-
# shellcheck disable=SC2086
6-
echo "unset ORIGINAL_GIT_PATH" >> $BASH_ENV
7-
# shellcheck disable=SC2086
8-
echo "unset BACKUP_GIT_PATH" >> $BASH_ENV
6+
7+
# Restore Xcode's Git binary if it was backed up
8+
if [[ -n "${BACKUP_XCODE_GIT_PATH}" ]]; then
9+
XCODE_GIT_PATH="$(xcode-select -p)/usr/bin/git"
10+
sudo mv "${BACKUP_XCODE_GIT_PATH}" "${XCODE_GIT_PATH}"
11+
echo "unset BACKUP_XCODE_GIT_PATH" >> "${BASH_ENV}"
12+
fi
13+
14+
# Clean up environment variables
15+
echo "unset ORIGINAL_GIT_PATH" >> "${BASH_ENV}"
16+
echo "unset BACKUP_GIT_PATH" >> "${BASH_ENV}"

0 commit comments

Comments
 (0)