mirror of
https://github.com/LukeSmithxyz/based.cooking.git
synced 2025-01-19 07:10:31 +00:00
Improved the PR check script (#426)
* Improved the PR check script * Added check to make sure that only lowercase alpha characters and hyphens are in the tag list * Brought back the set -eu
This commit is contained in:
parent
f9a6b43d56
commit
bcef14fb3f
93
.github/workflows/scripts/check-files.sh
vendored
93
.github/workflows/scripts/check-files.sh
vendored
@ -36,13 +36,17 @@ check_recipe_name() {
|
||||
}
|
||||
|
||||
check_recipe_content() {
|
||||
awk '
|
||||
errMsgs="$(awk '
|
||||
BEGIN {
|
||||
HAS_TITLE = 0;
|
||||
HAS_TAGS = 0;
|
||||
NUM_TAGS = 0;
|
||||
HAS_INGREDIENTS = 0;
|
||||
HAS_DIRECTIONS = 0;
|
||||
HAS_TITLE = 0;
|
||||
HAS_TAGS = 0;
|
||||
HAS_INVALID_TAGS = 0;
|
||||
NUM_TAGS = 0;
|
||||
HAS_INGREDIENTS = 0;
|
||||
HAS_DIRECTIONS = 0;
|
||||
HAS_CONSECUTIVE_EMPTY_LINES = 0;
|
||||
|
||||
CONSECUTIVE_EMPTY_LINES = 0;
|
||||
}
|
||||
|
||||
# First line should be the title
|
||||
@ -51,14 +55,23 @@ check_recipe_content() {
|
||||
next;
|
||||
}
|
||||
|
||||
/^## Ingredients/ {
|
||||
$0 == "## Ingredients" {
|
||||
HAS_INGREDIENTS = 1;
|
||||
next;
|
||||
}
|
||||
|
||||
/^## Directions/ {
|
||||
$0 == "## Directions" {
|
||||
HAS_DIRECTIONS = 1;
|
||||
next;
|
||||
}
|
||||
|
||||
$0 == "" {
|
||||
CONSECUTIVE_EMPTY_LINES++
|
||||
if (CONSECUTIVE_EMPTY_LINES >= 2) {
|
||||
HAS_CONSECUTIVE_EMPTY_LINES = 1;
|
||||
}
|
||||
}
|
||||
|
||||
$0 != "" {
|
||||
CONSECUTIVE_EMPTY_LINES = 0;
|
||||
}
|
||||
|
||||
END {
|
||||
@ -66,63 +79,75 @@ check_recipe_content() {
|
||||
if ($1 == ";tags:") {
|
||||
HAS_TAGS = 1;
|
||||
NUM_TAGS = NF - 1;
|
||||
}
|
||||
|
||||
FAIL = 0;
|
||||
# Loop through all the tags
|
||||
for (i = 2; i <= NF; i++) {
|
||||
# Make sure that each tag only contains lowercase letters and hyphens
|
||||
if ($i !~ "^[a-z-]+$") {
|
||||
HAS_INVALID_TAGS = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!HAS_TITLE) {
|
||||
print "Recipe does not have a properly formatted title on the first line."
|
||||
FAIL = 1;
|
||||
}
|
||||
|
||||
if (!HAS_TAGS) {
|
||||
print "Recipe does not have a properly formatted tags on the last line."
|
||||
FAIL = 1;
|
||||
} else if (NUM_TAGS < 2) {
|
||||
print "Recipe only has " NUM_TAGS " tags. Add some more."
|
||||
FAIL = 1;
|
||||
} else if (NUM_TAGS > 5) {
|
||||
print "Recipe has " NUM_TAGS " tags which is too many. Remove some tags."
|
||||
FAIL = 1;
|
||||
} else {
|
||||
if (HAS_INVALID_TAGS) {
|
||||
print "Recipe has invalid tags. Tags must be separated by spaces and contain only lowercase letters or hyphens (-)";
|
||||
}
|
||||
|
||||
if (NUM_TAGS < 2) {
|
||||
print "Recipe only has " NUM_TAGS " tags. Add some more."
|
||||
} else if (NUM_TAGS > 5) {
|
||||
print "Recipe has " NUM_TAGS " tags which is too many. Remove some tags."
|
||||
}
|
||||
}
|
||||
|
||||
if (!HAS_INGREDIENTS) {
|
||||
print "Recipe does not have an ingredients list."
|
||||
FAIL = 1;
|
||||
}
|
||||
|
||||
if (!HAS_DIRECTIONS) {
|
||||
print "Recipe does not have a directions section."
|
||||
FAIL = 1;
|
||||
}
|
||||
|
||||
if (FAIL) {
|
||||
exit 1;
|
||||
if (HAS_CONSECUTIVE_EMPTY_LINES) {
|
||||
print "Recipe has at least 2 consecutive empty lines.";
|
||||
}
|
||||
}
|
||||
' "$1"
|
||||
' "$1")"
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
if [ -n "$errMsgs" ]; then
|
||||
echo "$errMsgs"
|
||||
FAIL=1
|
||||
fi
|
||||
}
|
||||
|
||||
git diff --name-only "$(git merge-base origin/master HEAD)" | while IFS= read -r file; do
|
||||
while IFS= read -r file; do
|
||||
echo "Checking '$file'"
|
||||
case "$file" in
|
||||
# Ignore these files
|
||||
index.md) ;;
|
||||
.github/*.md) ;;
|
||||
|
||||
*.webp)
|
||||
echo "Checking size of $file"
|
||||
check_size "$file"
|
||||
check_webp_name "$file"
|
||||
;;
|
||||
.github/*.md)
|
||||
# Ignore markdown files in .github
|
||||
continue;
|
||||
;;
|
||||
*.md)
|
||||
check_recipe_name "$file"
|
||||
check_recipe_content "$file"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
esac
|
||||
# Separate each file for easier reading.
|
||||
echo ""
|
||||
done <<EOF
|
||||
$(git diff --name-only "$(git merge-base origin/master HEAD)")
|
||||
EOF
|
||||
|
||||
exit $FAIL
|
||||
|
Loading…
x
Reference in New Issue
Block a user