From 6bec1893e6742755eb864b3bef8bd04590e95e96 Mon Sep 17 00:00:00 2001 From: Nick Ortakales Date: Wed, 26 Feb 2025 16:56:43 -0800 Subject: [PATCH] Add filename validation, rename some files --- .../Le Tour De Gaule D Asterix.nfc} | 0 .../Das Raumschiff + Gabby hat einen Schluckauf.nfc | 0 .../Kaeptn Sharky und das Geheimnis der Schatzinsel.nfc | 0 ...ie Mischung macht’s!.nfc => Die Mischung machts!.nfc} | 0 ...lass mich nicht allein! - Lars und der Angsthase.nfc} | 0 ...eht's Pyjamahelden.nfc => Los gehts Pyjamahelden.nfc} | 0 ...uge.nfc => Die Feuerwehr - Die Rettungsfahrzeuge.nfc} | 0 .../{Zogg_Tommi Tatze.nfc => Zogg - Tommi Tatze.nfc} | 0 validation.sh | 9 +++++++++ 9 files changed, 9 insertions(+) rename French/{Astérix/Le Tour De Gaule D'Astérix.nfc => Asterix/Le Tour De Gaule D Asterix.nfc} (100%) rename German/{Gabby's Dollhouse => Gabbys Dollhouse}/Das Raumschiff + Gabby hat einen Schluckauf.nfc (100%) rename German/{Kapt'n Sharky => Kaptn Sharky}/Kaeptn Sharky und das Geheimnis der Schatzinsel.nfc (100%) rename German/Kikaninchen/{Die Mischung macht’s!.nfc => Die Mischung machts!.nfc} (100%) rename German/Kleiner Eisbaer/{Lars, lass mich nicht allein!_Lars und der Angsthase.nfc => Lars, lass mich nicht allein! - Lars und der Angsthase.nfc} (100%) rename German/PJ Masks/{Los geht's Pyjamahelden.nfc => Los gehts Pyjamahelden.nfc} (100%) rename German/Wieso Weshalb Warum Junior/{Die Feuerwehr_Die Rettungsfahrzeuge.nfc => Die Feuerwehr - Die Rettungsfahrzeuge.nfc} (100%) rename German/Zogg/{Zogg_Tommi Tatze.nfc => Zogg - Tommi Tatze.nfc} (100%) 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"