Created
April 25, 2025 14:40
-
-
Save soyuka/778bdb7c4e265ff7862602ea3479ba21 to your computer and use it in GitHub Desktop.
Remove comments of a PHP script from quagga
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# attention script completement généré par Gemini, testé et marche pour mon usage mais ne vous fiez pas non plus aveuglement a ce code | |
# quagga --output prompt.txt --include '*.php' --exclude Tests/ . --max-total-size=600000 | |
# Script pour supprimer tous les commentaires (blocs et lignes), | |
# ainsi que les lignes vides des fichiers 'prompt.txt.NNN' | |
# et concaténer le résultat dans un seul fichier. | |
# Nom du fichier de sortie | |
output_file="concatenated_prompt.php" | |
# Modèle pour les fichiers d'entrée (regex POSIX étendue pour find) | |
input_regex_pattern='.*/prompt\.txt\.[0-9]+$' | |
# Modèle glob pour message d'erreur | |
input_glob_pattern="prompt.txt.*" | |
# Vérifier si Perl est installé (nécessaire pour les commentaires multi-lignes) | |
if ! command -v perl &> /dev/null; then | |
echo "Erreur : La commande 'perl' est introuvable. Veuillez installer Perl." >&2 | |
exit 1 | |
fi | |
# Trouver les fichiers correspondants et les trier | |
# Utilisation de 'find' pour plus de robustesse et 'sort -V' pour un tri numérique naturel | |
# -maxdepth 1 pour ne chercher que dans le répertoire courant | |
mapfile -d $'\0' files < <(find . -maxdepth 1 -type f -regextype posix-extended -regex "$input_regex_pattern" -print0 | sort -zV) | |
# Vérifier si des fichiers ont été trouvés | |
if [ ${#files[@]} -eq 0 ]; then | |
echo "Aucun fichier trouvé correspondant au modèle '$input_glob_pattern' dans le répertoire courant." >&2 | |
exit 1 | |
fi | |
echo "Fichiers à traiter trouvés (${#files[@]}):" | |
# Boucle pour afficher correctement les noms de fichiers trouvés par mapfile | |
for (( i=0; i<${#files[@]}; i++ )); do | |
# Retirer le préfixe './' éventuel pour un affichage plus propre | |
printf " - %s\n" "${files[$i]#./}" | |
done | |
# Vider ou créer le fichier de sortie | |
> "$output_file" | |
echo "Le résultat sera enregistré dans : $output_file" | |
# Traiter chaque fichier | |
file_count=0 | |
error_occurred=0 | |
for file_path in "${files[@]}"; do | |
# Utiliser le chemin relatif pour l'affichage | |
file_rel="${file_path#./}" | |
echo "Traitement de $file_rel..." | |
# Pipeline de commandes pour traiter le fichier | |
processed_content=$(<"$file_path" perl -0777 -pe 's#/\*.*?\*/##sg' | \ | |
sed -e 's@//.*@@' -e 's@#.*@@' | \ | |
sed '/^[[:space:]]*$/d') | |
# Vérifier le code de sortie de la dernière commande sed (la plus susceptible d'échouer si la syntaxe est mauvaise) | |
# Note: La vérification après l'assignation via $(...) vérifie la commande `sed` finale. | |
if [ $? -ne 0 ]; then | |
echo "Erreur lors du traitement (sed) du fichier $file_rel" >&2 | |
error_occurred=1 | |
else | |
# Ajouter le contenu traité au fichier de sortie | |
echo "$processed_content" >> "$output_file" | |
file_count=$((file_count + 1)) | |
fi | |
done | |
echo "-------------------------------------" | |
if [ $error_occurred -ne 0 ]; then | |
echo "Traitement terminé avec des erreurs." >&2 | |
else | |
echo "Traitement terminé avec succès." | |
fi | |
echo "$file_count fichiers ont été traités et combinés dans '$output_file'." | |
echo "Note: La suppression des commentaires avec '//' ou '#' peut affecter les URLs ou les chaînes contenant ces séquences." | |
# Retourner un code d'erreur si un problème est survenu | |
exit $error_occurred |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment