From 3a6693a4677a647d619900047f58800fa3ff85b5 Mon Sep 17 00:00:00 2001
From: "Vincent Namy (EDU_GE)" <vincent.namy@edu.ge.ch>
Date: Thu, 26 Dec 2024 15:32:07 +0100
Subject: [PATCH] =?UTF-8?q?Mettre=20=C3=A0=20jour=20le=20fichier=20.gitlab?=
 =?UTF-8?q?-ci.yml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .gitlab-ci.yml | 36 +++++++++++++++++++++++++++++-------
 1 file changed, 29 insertions(+), 7 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4c8eb2a..08b02c8 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"
-- 
GitLab