|
95 | 95 |
|
96 | 96 | echo "" >> "$OUTPUT_FILE" |
97 | 97 |
|
| 98 | +# Invalid Variable Names |
| 99 | +echo "## Invalid Variable Names" >> "$OUTPUT_FILE" |
| 100 | +echo "" >> "$OUTPUT_FILE" |
| 101 | +echo "Hooks with \`@param\` tags where the variable is not a valid PHP variable name." >> "$OUTPUT_FILE" |
| 102 | +echo "" >> "$OUTPUT_FILE" |
| 103 | + |
| 104 | +# Valid variable names match $[a-zA-Z_][a-zA-Z0-9_]* |
| 105 | +INVALID_VAR_NAMES_ACTIONS=$(jq -r '.hooks[] | .name as $name | .file as $file | .doc.tags[] | select(.name == "param" and .variable != "" and .variable != null and (.variable | test("^\\$[a-zA-Z_][a-zA-Z0-9_]*$") | not)) | "- `\($name)` — \(.variable) (\($file))"' hooks/actions.json 2>/dev/null | sort -u) |
| 106 | +INVALID_VAR_NAMES_FILTERS=$(jq -r '.hooks[] | .name as $name | .file as $file | .doc.tags[] | select(.name == "param" and .variable != "" and .variable != null and (.variable | test("^\\$[a-zA-Z_][a-zA-Z0-9_]*$") | not)) | "- `\($name)` — \(.variable) (\($file))"' hooks/filters.json 2>/dev/null | sort -u) |
| 107 | + |
| 108 | +INVALID_VAR_NAMES=$(echo -e "${INVALID_VAR_NAMES_ACTIONS}\n${INVALID_VAR_NAMES_FILTERS}" | grep -v '^$' | sort -u) |
| 109 | + |
| 110 | +if [ -n "$INVALID_VAR_NAMES" ]; then |
| 111 | + echo "$INVALID_VAR_NAMES" >> "$OUTPUT_FILE" |
| 112 | +else |
| 113 | + echo "_No hooks with invalid variable names._" >> "$OUTPUT_FILE" |
| 114 | +fi |
| 115 | + |
| 116 | +echo "" >> "$OUTPUT_FILE" |
| 117 | + |
98 | 118 | # Empty Param Descriptions |
99 | 119 | echo "## Empty Param Descriptions" >> "$OUTPUT_FILE" |
100 | 120 | echo "" >> "$OUTPUT_FILE" |
@@ -152,4 +172,43 @@ else |
152 | 172 | echo "_No hooks with param count mismatches._" >> "$OUTPUT_FILE" |
153 | 173 | fi |
154 | 174 |
|
| 175 | +echo "" >> "$OUTPUT_FILE" |
| 176 | + |
| 177 | +# Empty Param Types |
| 178 | +echo "## Empty Param Types" >> "$OUTPUT_FILE" |
| 179 | +echo "" >> "$OUTPUT_FILE" |
| 180 | +echo "Hooks with \`@param\` tags that have empty or missing type arrays." >> "$OUTPUT_FILE" |
| 181 | +echo "" >> "$OUTPUT_FILE" |
| 182 | + |
| 183 | +EMPTY_PARAM_TYPES_ACTIONS=$(jq -r '.hooks[] | .name as $name | .file as $file | .doc.tags[] | select(.name == "param" and (.types == null or .types == [] or (.types | length == 0))) | "- `\($name)` — \(.variable) (\($file))"' hooks/actions.json 2>/dev/null | sort -u) |
| 184 | +EMPTY_PARAM_TYPES_FILTERS=$(jq -r '.hooks[] | .name as $name | .file as $file | .doc.tags[] | select(.name == "param" and (.types == null or .types == [] or (.types | length == 0))) | "- `\($name)` — \(.variable) (\($file))"' hooks/filters.json 2>/dev/null | sort -u) |
| 185 | + |
| 186 | +EMPTY_PARAM_TYPES=$(echo -e "${EMPTY_PARAM_TYPES_ACTIONS}\n${EMPTY_PARAM_TYPES_FILTERS}" | grep -v '^$' | sort -u) |
| 187 | + |
| 188 | +if [ -n "$EMPTY_PARAM_TYPES" ]; then |
| 189 | + echo "$EMPTY_PARAM_TYPES" >> "$OUTPUT_FILE" |
| 190 | +else |
| 191 | + echo "_No hooks with empty param types._" >> "$OUTPUT_FILE" |
| 192 | +fi |
| 193 | + |
| 194 | +echo "" >> "$OUTPUT_FILE" |
| 195 | + |
| 196 | +# Malformed Param Types |
| 197 | +echo "## Malformed Param Types" >> "$OUTPUT_FILE" |
| 198 | +echo "" >> "$OUTPUT_FILE" |
| 199 | +echo "Hooks with \`@param\` tags where types contain unexpected characters." >> "$OUTPUT_FILE" |
| 200 | +echo "" >> "$OUTPUT_FILE" |
| 201 | + |
| 202 | +# Types should not contain spaces (except for specific patterns like "array<string, mixed>") |
| 203 | +MALFORMED_TYPES_ACTIONS=$(jq -r '.hooks[] | .name as $name | .file as $file | .doc.tags[] | select(.name == "param") | .variable as $var | .types[]? | select(test("^ | $| ")) | "- `\($name)` — \($var): \(.) (\($file))"' hooks/actions.json 2>/dev/null | sort -u) |
| 204 | +MALFORMED_TYPES_FILTERS=$(jq -r '.hooks[] | .name as $name | .file as $file | .doc.tags[] | select(.name == "param") | .variable as $var | .types[]? | select(test("^ | $| ")) | "- `\($name)` — \($var): \(.) (\($file))"' hooks/filters.json 2>/dev/null | sort -u) |
| 205 | + |
| 206 | +MALFORMED_TYPES=$(echo -e "${MALFORMED_TYPES_ACTIONS}\n${MALFORMED_TYPES_FILTERS}" | grep -v '^$' | sort -u) |
| 207 | + |
| 208 | +if [ -n "$MALFORMED_TYPES" ]; then |
| 209 | + echo "$MALFORMED_TYPES" >> "$OUTPUT_FILE" |
| 210 | +else |
| 211 | + echo "_No hooks with malformed param types._" >> "$OUTPUT_FILE" |
| 212 | +fi |
| 213 | + |
155 | 214 | echo "Generated $OUTPUT_FILE" |
0 commit comments