Skip to content

Commit 38f838c

Browse files
authored
feat(cli): Improved hook injection logics and the default hooks (#202)
* feat(cli): Add conditional checks for git hooks * feat(cli): Log warning if hook path is a symlink * feat(cli): Add vectorise command to post-checkout hook when it's a new clone
1 parent b70ded9 commit 38f838c

1 file changed

Lines changed: 14 additions & 3 deletions

File tree

src/vectorcode/subcommands/init.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,20 @@
2020
__HOOK_CONTENTS: dict[str, list[str]] = {
2121
"pre-commit": [
2222
"diff_files=$(git diff --cached --name-only)",
23-
'[ -z "$diff_files" ] || vectorcode vectorise $diff_files',
23+
'if [ -d ".vectorcode" ] && [ ! -z "$diff_files" ]; then',
24+
" vectorcode vectorise $diff_files",
25+
"fi",
2426
],
2527
"post-checkout": [
26-
'files=$(git diff --name-only "$1" "$2")',
27-
'[ -z "$files" ] || vectorcode vectorise $files',
28+
'if [ -z "$(echo $1|grep [^0])" ]; then',
29+
' files=""',
30+
" ( [ -f .vectorcode/vectorcode.include ] || [ -f ~/.config/vectorcode/vectorcode.include ] ) && vectorcode vectorise || true",
31+
"else",
32+
' files=$(git diff --name-only "$1" "$2")',
33+
"fi",
34+
'if [ -d ".vectorcode" ] && [ ! -z "$files" ]; then',
35+
" vectorcode vectorise $files",
36+
"fi",
2837
],
2938
}
3039

@@ -84,6 +93,8 @@ def inject_hook(self, content: list[str], force: bool = False):
8493
self.lines.extend(i if i.endswith("\n") else i + "\n" for i in content)
8594
self.lines.append(self.suffix + "\n")
8695
with open(self.path, "w") as fin:
96+
if os.path.islink(self.path): # pragma: nocover
97+
logger.warning(f"{self.path} is a symlink.")
8798
fin.writelines(self.lines)
8899
if platform.system() != "Windows":
89100
# for unix systems, set the executable bit.

0 commit comments

Comments
 (0)