diff --git a/French/Astérix/Le Tour De Gaule D'Astérix.nfc b/French/Asterix/Le Tour De Gaule D Asterix.nfc similarity index 100% rename from French/Astérix/Le Tour De Gaule D'Astérix.nfc rename to French/Asterix/Le Tour De Gaule D Asterix.nfc diff --git a/German/Gabby's Dollhouse/Das Raumschiff + Gabby hat einen Schluckauf.nfc b/German/Gabbys Dollhouse/Das Raumschiff + Gabby hat einen Schluckauf.nfc similarity index 100% rename from German/Gabby's Dollhouse/Das Raumschiff + Gabby hat einen Schluckauf.nfc rename to German/Gabbys Dollhouse/Das Raumschiff + Gabby hat einen Schluckauf.nfc diff --git a/German/Kapt'n Sharky/Kaeptn Sharky und das Geheimnis der Schatzinsel.nfc b/German/Kaptn Sharky/Kaeptn Sharky und das Geheimnis der Schatzinsel.nfc similarity index 100% rename from German/Kapt'n Sharky/Kaeptn Sharky und das Geheimnis der Schatzinsel.nfc rename to German/Kaptn Sharky/Kaeptn Sharky und das Geheimnis der Schatzinsel.nfc diff --git a/German/Kikaninchen/Die Mischung macht’s!.nfc b/German/Kikaninchen/Die Mischung machts!.nfc similarity index 100% rename from German/Kikaninchen/Die Mischung macht’s!.nfc rename to German/Kikaninchen/Die Mischung machts!.nfc diff --git a/German/Kleiner Eisbaer/Lars, lass mich nicht allein!_Lars und der Angsthase.nfc b/German/Kleiner Eisbaer/Lars, lass mich nicht allein! - Lars und der Angsthase.nfc similarity index 100% rename from German/Kleiner Eisbaer/Lars, lass mich nicht allein!_Lars und der Angsthase.nfc rename to German/Kleiner Eisbaer/Lars, lass mich nicht allein! - Lars und der Angsthase.nfc diff --git a/German/PJ Masks/Los geht's Pyjamahelden.nfc b/German/PJ Masks/Los gehts Pyjamahelden.nfc similarity index 100% rename from German/PJ Masks/Los geht's Pyjamahelden.nfc rename to German/PJ Masks/Los gehts Pyjamahelden.nfc diff --git a/German/Wieso Weshalb Warum Junior/Die Feuerwehr_Die Rettungsfahrzeuge.nfc b/German/Wieso Weshalb Warum Junior/Die Feuerwehr - Die Rettungsfahrzeuge.nfc similarity index 100% rename from German/Wieso Weshalb Warum Junior/Die Feuerwehr_Die Rettungsfahrzeuge.nfc rename to German/Wieso Weshalb Warum Junior/Die Feuerwehr - Die Rettungsfahrzeuge.nfc diff --git a/German/Zogg/Zogg_Tommi Tatze.nfc b/German/Zogg/Zogg - Tommi Tatze.nfc similarity index 100% rename from German/Zogg/Zogg_Tommi Tatze.nfc rename to German/Zogg/Zogg - Tommi Tatze.nfc diff --git a/validation.sh b/validation.sh index a454741..ba23ea3 100755 --- a/validation.sh +++ b/validation.sh @@ -29,10 +29,19 @@ FORBIDDEN_PATTERNS=( "Subtype: ([0-9]){2}" ) +FILE_AND_DIR_ALLOWED_CHARACTERS="A-Za-z0-9().,!%&+ -"; +FILE_AND_DIR_REGEX="^\.[$FILE_AND_DIR_ALLOWED_CHARACTERS/]+\/[$FILE_AND_DIR_ALLOWED_CHARACTERS]+\.nfc$" + # Use process substitution so that ERROR_FOUND is updated in the main shell. while read -r filename; do content=$(cat "$filename") + if ! echo "$filename" | awk "/$FILE_AND_DIR_REGEX/ { found=1 } END { exit !found }"; then + echo "$filename" + echo " Filename has invalid characters or missing .nfc extension. Allowed characters are $FILE_AND_DIR_ALLOWED_CHARACTERS" + ERROR_FOUND=1 + fi + for pattern in "${REQUIRED_PATTERNS[@]}"; do if ! echo "$content" | awk "/$pattern/ { found=1 } END { exit !found }"; then echo "$filename"