diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4c8eb2a69c364596b531063cf535c54203c553bf..08b02c8745a6c6b2010d8bc752f3b4875ca2b0f7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -7,21 +7,43 @@ format_files: before_script: - pip install jq nbformat script: - # Récupère les fichiers JSON et IPYNB modifiés dans le commit - - MODIFIED_JSON_FILES=$(git diff --name-only HEAD~1 HEAD | grep '\.json$' || true) - - MODIFIED_IPYNB_FILES=$(git diff --name-only HEAD~1 HEAD | grep '\.ipynb$' || true) - # Si aucun fichier n'est modifié, terminer le job - - if [ -z "$MODIFIED_JSON_FILES" ] && [ -z "$MODIFIED_IPYNB_FILES" ]; then echo "No files to format."; exit 0; fi + # Crée un script Python pour formater les fichiers .ipynb + - | + echo ' + import nbformat + import sys + + def reformat_notebook(file_path): + with open(file_path, "r", encoding="utf-8") as f: + notebook = nbformat.read(f, as_version=4) + + with open(file_path, "w", encoding="utf-8") as f: + nbformat.write(notebook, f) + + if __name__ == "__main__": + for file_path in sys.argv[1:]: + reformat_notebook(file_path) + print(f"Formatted: {file_path}") + ' > reformat_ipynb.py + # Identifier les fichiers modifiés + - MODIFIED_JSON_FILES=$(git diff --name-only $CI_COMMIT_BEFORE_SHA $CI_COMMIT_SHA | grep '\.json$' || true) + - MODIFIED_IPYNB_FILES=$(git diff --name-only $CI_COMMIT_BEFORE_SHA $CI_COMMIT_SHA | grep '\.ipynb$' || true) + - echo "Modified JSON files: $MODIFIED_JSON_FILES" + - echo "Modified IPYNB files: $MODIFIED_IPYNB_FILES" # Formatage des fichiers JSON - for file in $MODIFIED_JSON_FILES; do jq . "$file" > "$file.formatted" && mv "$file.formatted" "$file"; done # Formatage des fichiers IPYNB - for file in $MODIFIED_IPYNB_FILES; do - python -m nbformat --to notebook --input "$file" --output "$file.formatted" && mv "$file.formatted" "$file"; + python reformat_ipynb.py "$file"; done - # Ajouter les modifications pour le commit (optionnel) + # Ajouter et pousser les modifications + - git config --global user.email "ci-bot@example.com" + - git config --global user.name "CI Bot" - git add $MODIFIED_JSON_FILES $MODIFIED_IPYNB_FILES + - git commit -m "Formatted JSON and IPYNB files" || echo "No changes to commit." + - git push origin $CI_COMMIT_REF_NAME rules: - changes: - "*.json"