claude-git-hooks 1.4.0 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/templates/pre-commit +39 -17
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-git-hooks",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.1",
|
|
4
4
|
"description": "Git hooks con Claude CLI para análisis de código y generación automática de mensajes de commit",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -38,4 +38,4 @@
|
|
|
38
38
|
"CHANGELOG.md",
|
|
39
39
|
"LICENSE"
|
|
40
40
|
]
|
|
41
|
-
}
|
|
41
|
+
}
|
package/templates/pre-commit
CHANGED
|
@@ -76,6 +76,9 @@ generate_resolution_prompt() {
|
|
|
76
76
|
local ISSUES_FORMATTED=""
|
|
77
77
|
local issue_num=1
|
|
78
78
|
|
|
79
|
+
# Usar un archivo temporal para acumular los issues
|
|
80
|
+
local TEMP_ISSUES=$(mktemp)
|
|
81
|
+
|
|
79
82
|
# Parsear cada blocking issue como objeto JSON
|
|
80
83
|
echo "$JSON_RESPONSE" | jq -c '.blockingIssues[]?' 2>/dev/null | while IFS= read -r issue; do
|
|
81
84
|
if [ -n "$issue" ]; then
|
|
@@ -85,40 +88,59 @@ generate_resolution_prompt() {
|
|
|
85
88
|
local method=$(echo "$issue" | jq -r '.method')
|
|
86
89
|
local severity=$(echo "$issue" | jq -r '.severity')
|
|
87
90
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
91
|
+
echo "### Issue #${issue_num} [${severity^^}]" >> "$TEMP_ISSUES"
|
|
92
|
+
echo "**Description:** ${desc}" >> "$TEMP_ISSUES"
|
|
93
|
+
echo "**Location:** ${file}:${line}" >> "$TEMP_ISSUES"
|
|
94
|
+
echo "**Method/Class:** ${method}" >> "$TEMP_ISSUES"
|
|
95
|
+
echo "" >> "$TEMP_ISSUES"
|
|
92
96
|
issue_num=$((issue_num + 1))
|
|
93
97
|
fi
|
|
94
98
|
done
|
|
95
99
|
|
|
100
|
+
# Leer el contenido acumulado
|
|
101
|
+
ISSUES_FORMATTED=$(cat "$TEMP_ISSUES")
|
|
102
|
+
rm -f "$TEMP_ISSUES"
|
|
103
|
+
|
|
96
104
|
# Generar el prompt desde el template
|
|
97
105
|
cp "$RESOLUTION_TEMPLATE" "$RESOLUTION_FILE"
|
|
98
106
|
|
|
99
|
-
# Reemplazar placeholders
|
|
100
|
-
sed -i "s|{{REPO_NAME}}|$REPO_NAME|g" "$RESOLUTION_FILE"
|
|
101
|
-
sed -i "s|{{BRANCH_NAME}}|$BRANCH_NAME|g" "$RESOLUTION_FILE"
|
|
102
|
-
sed -i "s|{{COMMIT_SHA}}|$COMMIT_SHA|g" "$RESOLUTION_FILE"
|
|
103
|
-
sed -i "s|{{FILE_COUNT}}|$FILE_COUNT|g" "$RESOLUTION_FILE"
|
|
104
|
-
sed -i "s|{{ANALYSIS_MODE}}|$ANALYSIS_MODE|g" "$RESOLUTION_FILE"
|
|
107
|
+
# Reemplazar placeholders - usar comillas dobles y escapar caracteres especiales
|
|
108
|
+
sed -i "s|{{REPO_NAME}}|${REPO_NAME}|g" "$RESOLUTION_FILE"
|
|
109
|
+
sed -i "s|{{BRANCH_NAME}}|${BRANCH_NAME}|g" "$RESOLUTION_FILE"
|
|
110
|
+
sed -i "s|{{COMMIT_SHA}}|${COMMIT_SHA}|g" "$RESOLUTION_FILE"
|
|
111
|
+
sed -i "s|{{FILE_COUNT}}|${FILE_COUNT}|g" "$RESOLUTION_FILE"
|
|
112
|
+
sed -i "s|{{ANALYSIS_MODE}}|${ANALYSIS_MODE:-standard}|g" "$RESOLUTION_FILE"
|
|
113
|
+
|
|
114
|
+
# Crear archivo temporal para issues formateados
|
|
115
|
+
local TEMP_ISSUES_FILE=$(mktemp)
|
|
116
|
+
echo "$ISSUES_FORMATTED" > "$TEMP_ISSUES_FILE"
|
|
105
117
|
|
|
106
|
-
#
|
|
107
|
-
|
|
118
|
+
# Reemplazar {{BLOCKING_ISSUES}} con el contenido
|
|
119
|
+
if [ -n "$ISSUES_FORMATTED" ]; then
|
|
120
|
+
sed -i "/{{BLOCKING_ISSUES}}/r $TEMP_ISSUES_FILE" "$RESOLUTION_FILE"
|
|
121
|
+
fi
|
|
108
122
|
sed -i "s|{{BLOCKING_ISSUES}}||g" "$RESOLUTION_FILE"
|
|
123
|
+
rm -f "$TEMP_ISSUES_FILE"
|
|
109
124
|
|
|
110
125
|
# Agregar contenido de archivos afectados
|
|
111
|
-
local
|
|
126
|
+
local TEMP_FILES=$(mktemp)
|
|
112
127
|
echo "$JSON_RESPONSE" | jq -r '.blockingIssues[].file' 2>/dev/null | sort -u | while IFS= read -r file; do
|
|
113
128
|
if [ -f "$file" ]; then
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
129
|
+
echo "### File: $file" >> "$TEMP_FILES"
|
|
130
|
+
echo "" >> "$TEMP_FILES"
|
|
131
|
+
echo '```' >> "$TEMP_FILES"
|
|
132
|
+
cat "$file" >> "$TEMP_FILES"
|
|
133
|
+
echo '```' >> "$TEMP_FILES"
|
|
134
|
+
echo "" >> "$TEMP_FILES"
|
|
117
135
|
fi
|
|
118
136
|
done
|
|
119
137
|
|
|
120
|
-
|
|
138
|
+
# Reemplazar {{FILE_CONTENTS}} con el contenido
|
|
139
|
+
if [ -s "$TEMP_FILES" ]; then
|
|
140
|
+
sed -i "/{{FILE_CONTENTS}}/r $TEMP_FILES" "$RESOLUTION_FILE"
|
|
141
|
+
fi
|
|
121
142
|
sed -i "s|{{FILE_CONTENTS}}||g" "$RESOLUTION_FILE"
|
|
143
|
+
rm -f "$TEMP_FILES"
|
|
122
144
|
|
|
123
145
|
echo
|
|
124
146
|
echo -e "${YELLOW}=== PROMPT DE RESOLUCIÓN AI GENERADO ===${NC}"
|