diff --git a/.gitignore b/.gitignore index d3feed5..702c48c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ # Ignorer l'environnement virtuel Python .istex-enrich-monitoring-env/ .env +backup \ No newline at end of file diff --git a/Makefile b/Makefile index e32beec..568a776 100644 --- a/Makefile +++ b/Makefile @@ -7,12 +7,10 @@ # Définir une variable pour le chemin du fichier de mapping MAPPING_FILE = /tmp/loaded-corpus-mapping.json -# Définir une variable pour les fichiers JSONL des données +# Définir une variable l'emplacement des fichiers JSONL RECORD_FILES = ./data/records/*.jsonl -# Chargement des variables d'environnement -include .env -export +include lodex.mk # # INSTALLATION @@ -75,19 +73,15 @@ # # Publier les données sur l'instance Lodex -publish-lodex: - token=$$(curl -c /tmp/lodex-cookies.txt "$$LODEX_INSTANCE/api/login" \ +publish-lodex: lodex-delete-instance-data lodex-import-data lodex-import-template + curl -b /tmp/lodex-cookies.txt "$$LODEX_INSTANCE/api/publish" \ -X POST \ + -H "Authorization: Bearer $$(make -s lodex-auth)" \ -H 'Accept: application/json' \ - -H 'Content-Type: application/json' \ - --data-raw '{"username":"'"$$LODEX_USER"'","password":"'"$$LODEX_PASSWORD"'"}' | jq -r '.token'); - curl -b /tmp/lodex-cookies.txt "$$LODEX_INSTANCE/api/upload/url" \ - -X POST \ - -H "Authorization: Bearer $$token" \ - -H 'Accept: application/json' \ - -H 'Content-Type: application/json' \ - --data-raw '{"url":"https://gitbucket.inist.fr/eon/istex-enrich-monitoring/raw/master/lodex/data.jsonl","loaderName":"json-lines","customLoader":null}'; - rm /tmp/lodex-cookies.txt - -.PHONY: setup fetch-api-istex fetch-loaded-corpus lodex-clean-json-keys mapping-corpus-ark merge-loaded-corpus-data export-all export-excel export-lodex +.PHONY: setup fetch-api-istex fetch-loaded-corpus lodex-clean-json-keys \ + mapping-corpus-ark merge-loaded-corpus-data export-all \ + export-excel export-lodex lodex-auth \ + lodex-backup-template lodex-backup-data backup \ + lodex-delete-instance-data lodex-import-template lodex-import-data \ + publish-lodex \ No newline at end of file diff --git a/README.md b/README.md index 018a0a2..8b1208d 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ │   └── data.json ├── lodex Contient les données destinées à être chargées dans Lodex (modèle et données) │   └── data.jsonl +├── lodex.mk Contient toutes les commandes relatives à Lodex ├── Makefile ├── README.md ├── schema Contient le schéma qui permet de valider les données de /data @@ -29,6 +30,7 @@ - `make` - `jq` - `curl` +- `zip` L'installation des dépendances de python doit être réalisée par le Makefile. Les dépendances python sont installées dans un environnement venv qui est utilisé par certaines commandes du Makefile. @@ -47,7 +49,7 @@ Récupère les données statistiques depuis l'API Istex. * **make fetch-loaded-corpus :** - Récupère les données de l'instance loaded corpus et crée un mapping identifiant corpus => ARK, stocké dans `/tmp/loaded-corpus-mapping.json`. + Récupère les données de l'instance loaded-corpus et crée un mapping identifiant corpus => ARK, stocké dans `/tmp/loaded-corpus-mapping.json`. * **make lodex-clean-json-keys :** Remplace les points (`.`) dans les clés JSON par des tirets (`-`) pour rendre les clés compatibles avec Lodex. diff --git a/lodex.mk b/lodex.mk new file mode 100644 index 0000000..8a8bda6 --- /dev/null +++ b/lodex.mk @@ -0,0 +1,73 @@ +.ONESHELL: +SHELL = /usr/bin/bash + +# Chargement des variables d'environnement +include .env +export + +# S'authentifier sur une instance Lodex +lodex-auth: + curl -c /tmp/lodex-cookies.txt "$$LODEX_INSTANCE/api/login" \ + -X POST \ + -H 'Accept: application/json' \ + -H 'Content-Type: application/json' \ + --data-raw '{"username":"'"$$LODEX_USER"'","password":"'"$$LODEX_PASSWORD"'"}' | jq -r '.token' + + +# Sauvegarder les template d'une instance Lodex +lodex-backup-template: + curl -b /tmp/lodex-cookies.txt "$$LODEX_INSTANCE/api/field/export" \ + -X GET \ + -H "Authorization: Bearer $$(make -s lodex-auth)" \ + -H 'Accept: application/json' \ + -H 'Content-Type: application/json' \ + --output /tmp/template.tar + +# Sauvegarder les données d'une isntance Lodex +lodex-backup-data: + curl -b /tmp/lodex-cookies.txt "$$LODEX_INSTANCE/api/dump" \ + -X GET \ + -H "Authorization: Bearer $$(make -s lodex-auth)" \ + -H 'Accept: application/json' \ + -H 'Content-Type: application/json' \ + --output /tmp/data.jsonl + +# Sauvegarder une instance lodex +lodex-backup: lodex-backup-data lodex-backup-template + # Créer un répertoire temporaire pour la sauvegarde + mkdir -p ./backup + + # Créer un nom de fichier avec la date du jour + BACKUP_FILE=./backup/backup_$(shell date +%Y-%m-%d).zip + + # Ajouter les fichiers à l'archive zip avec la date du jour + zip -j -r $$BACKUP_FILE /tmp/data.jsonl /tmp/template.tar + + # Supprimer les fichiers originaux après sauvegarde + rm /tmp/data.jsonl /tmp/template.tar + +# Supprimer les données d'une instance Lodex +lodex-delete-instance-data: lodex-backup + curl -b /tmp/lodex-cookies.txt "$$LODEX_INSTANCE/api/dataset" \ + -X DELETE \ + -H "Authorization: Bearer $$(make -s lodex-auth)" \ + -H 'Accept: application/json' \ + -H 'Content-Type: application/json' + +# Importer un template dans une instance Lodex +lodex-import-template: + curl -b /tmp/lodex-cookies.txt "$$LODEX_INSTANCE/api/field/import" \ + -X POST \ + -H "Authorization: Bearer $$(make -s lodex-auth)" \ + -F "template=@./lodex/template.tar" + +# Importer les données dans une instance Lodex depuis l'URL publique des données +lodex-import-data: + curl -b /tmp/lodex-cookies.txt "$$LODEX_INSTANCE/api/upload/url" \ + -X POST \ + -H 'Accept: application/json' \ + -H "Authorization: Bearer $$(make -s lodex-auth)" \ + -H 'Content-Type: application/json' \ + --data-raw '{"url":"https://gitbucket.inist.fr/eon/istex-enrich-monitoring/raw/master/lodex/data.jsonl","loaderName":"json-lines","customLoader":null}'; + +