Skip to content

Commit 399cbb2

Browse files
committed
fix: make git hook grumphp invocation resilient
1 parent 60ea8d4 commit 399cbb2

3 files changed

Lines changed: 32 additions & 6 deletions

File tree

resources/git-hooks/commit-msg

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,18 @@ elif [ -f "${DEVTOOLS_GRUMPHP_CONFIG}" ]; then
2828
fi
2929

3030
# Run GrumPHP
31-
if [ -n "${GRUMPHP_CONFIG_FILE}" ]; then
32-
printf "%s\n" "${DIFF}" | exec 'vendor/bin/grumphp.phar' '--config' "${GRUMPHP_CONFIG_FILE}" 'git:commit-msg' "--git-user=$GIT_USER" "--git-email=$GIT_EMAIL" "$COMMIT_MSG_FILE"
31+
if [ -x "vendor/bin/grumphp" ]; then
32+
GRUMPHP_COMMAND='vendor/bin/grumphp'
33+
elif [ -x "vendor/bin/grumphp.phar" ]; then
34+
GRUMPHP_COMMAND='vendor/bin/grumphp.phar'
35+
else
36+
GRUMPHP_COMMAND='grumphp'
3337
fi
3438

35-
printf "%s\n" "${DIFF}" | exec 'vendor/bin/grumphp.phar' 'git:commit-msg' "--git-user=$GIT_USER" "--git-email=$GIT_EMAIL" "$COMMIT_MSG_FILE"
39+
if [ -n "${GRUMPHP_COMMAND}" ]; then
40+
if [ -n "${GRUMPHP_CONFIG_FILE}" ]; then
41+
printf "%s\n" "${DIFF}" | exec "${GRUMPHP_COMMAND}" '--config' "${GRUMPHP_CONFIG_FILE}" 'git:commit-msg' "--git-user=$GIT_USER" "--git-email=$GIT_EMAIL" "$COMMIT_MSG_FILE"
42+
else
43+
printf "%s\n" "${DIFF}" | exec "${GRUMPHP_COMMAND}" 'git:commit-msg' "--git-user=$GIT_USER" "--git-email=$GIT_EMAIL" "$COMMIT_MSG_FILE"
44+
fi
45+
fi

resources/git-hooks/pre-commit

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,18 @@ elif [ -f "${DEVTOOLS_GRUMPHP_CONFIG}" ]; then
2424
fi
2525

2626
# Run GrumPHP
27-
if [ -n "${GRUMPHP_CONFIG_FILE}" ]; then
28-
printf "%s\n" "${DIFF}" | exec 'vendor/bin/grumphp.phar' '--config' "${GRUMPHP_CONFIG_FILE}" 'git:pre-commit' '--skip-success-output'
27+
if [ -x "vendor/bin/grumphp" ]; then
28+
GRUMPHP_COMMAND='vendor/bin/grumphp'
29+
elif [ -x "vendor/bin/grumphp.phar" ]; then
30+
GRUMPHP_COMMAND='vendor/bin/grumphp.phar'
31+
else
32+
GRUMPHP_COMMAND='grumphp'
2933
fi
3034

31-
printf "%s\n" "${DIFF}" | exec 'vendor/bin/grumphp.phar' 'git:pre-commit' '--skip-success-output'
35+
if [ -n "${GRUMPHP_COMMAND}" ]; then
36+
if [ -n "${GRUMPHP_CONFIG_FILE}" ]; then
37+
printf "%s\n" "${DIFF}" | exec "${GRUMPHP_COMMAND}" '--config' "${GRUMPHP_CONFIG_FILE}" 'git:pre-commit' '--skip-success-output'
38+
fi
39+
40+
printf "%s\n" "${DIFF}" | exec "${GRUMPHP_COMMAND}" 'git:pre-commit' '--skip-success-output'
41+
fi

tests/GitHooks/PackagedHooksTest.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ public function packagedPreCommitHookWillPreferProjectConfigAndFallbackToTheMana
4242
'DEVTOOLS_GRUMPHP_CONFIG=' . HookContentRenderer::MANAGED_GRUMPHP_CONFIG_PLACEHOLDER,
4343
$contents,
4444
);
45+
self::assertStringContainsString('if [ -x "vendor/bin/grumphp" ]; then', $contents);
46+
self::assertStringContainsString("GRUMPHP_COMMAND='vendor/bin/grumphp'", $contents);
47+
self::assertStringContainsString('printf "%s\n" "${DIFF}" | exec "${GRUMPHP_COMMAND}"', $contents);
4548
self::assertStringContainsString("'--config' \"\${GRUMPHP_CONFIG_FILE}\" 'git:pre-commit'", $contents);
4649
}
4750

@@ -58,6 +61,9 @@ public function packagedCommitMsgHookWillPreferProjectConfigAndFallbackToTheMana
5861
'DEVTOOLS_GRUMPHP_CONFIG=' . HookContentRenderer::MANAGED_GRUMPHP_CONFIG_PLACEHOLDER,
5962
$contents,
6063
);
64+
self::assertStringContainsString('if [ -x "vendor/bin/grumphp" ]; then', $contents);
65+
self::assertStringContainsString("GRUMPHP_COMMAND='vendor/bin/grumphp'", $contents);
66+
self::assertStringContainsString('printf "%s\n" "${DIFF}" | exec "${GRUMPHP_COMMAND}"', $contents);
6167
self::assertStringContainsString("'--config' \"\${GRUMPHP_CONFIG_FILE}\" 'git:commit-msg'", $contents);
6268
}
6369
}

0 commit comments

Comments
 (0)