Browse Source

Add memoire-to-palissy.sh

Bastien 1 year ago
parent
commit
14a304b748
4 changed files with 67 additions and 5 deletions
  1. 18 2
      README.md
  2. 17 2
      README.org
  3. 1 1
      src/memoire/handler.clj
  4. 31 0
      utils/memoire-to-palissy.sh

+ 18 - 2
README.md

@@ -4,9 +4,25 @@
4 4
 Service web permettant de convertir des fichiers d'export .csv de la
5 5
 base Mémoire en fichier .csv pour l’import dans la base Palissy.
6 6
 
7
-Une version test est en ligne ici :
7
+Une version test est [en ligne ici](http://memoire-palissy.inventaire-des-orgues.fr).
8 8
 
9
-<http://memoire-palissy.inventaire-des-orgues.fr>
9
+
10
+# Installation
11
+
12
+1.  Vérifier que le serveur contient les exéctutables `iconv`, `sed`, `awk`
13
+    `perl` et `lein`.
14
+
15
+2.  git clone <https://git.inventaire-des-orgues.fr/bzg/memoire.git>
16
+
17
+3.  ~$ cd memoire/
18
+
19
+4.  Copier `utils/memoire-to-palissy.sh` dans le chemin d’accès aux
20
+    exécutables du serveur.
21
+
22
+5.  lein run
23
+
24
+Vous pouvez aussi créer un fichier .jar avec la commande `lein uberjar`
25
+et exécuter ce jar pour lancer le service web.
10 26
 
11 27
 
12 28
 # Licence

+ 17 - 2
README.org

@@ -3,9 +3,24 @@
3 3
 Service web permettant de convertir des fichiers d'export .csv de la
4 4
 base Mémoire en fichier .csv pour l’import dans la base Palissy.
5 5
 
6
-Une version test est en ligne ici :
6
+Une version test est [[http://memoire-palissy.inventaire-des-orgues.fr][en ligne ici]].
7 7
 
8
-http://memoire-palissy.inventaire-des-orgues.fr
8
+* Installation
9
+
10
+1. Vérifier que le serveur contient les exéctutables =iconv=, =sed=, =awk=
11
+   =perl= et =lein=.
12
+
13
+2. git clone https://git.inventaire-des-orgues.fr/bzg/memoire.git
14
+
15
+3. ~$ cd memoire/
16
+
17
+4. Copier =utils/memoire-to-palissy.sh= dans le chemin d’accès aux
18
+   exécutables du serveur.
19
+
20
+5. lein run
21
+
22
+Vous pouvez aussi créer un fichier .jar avec la commande =lein uberjar=
23
+et exécuter ce jar pour lancer le service web.
9 24
 
10 25
 * Licence
11 26
 

+ 1 - 1
src/memoire/handler.clj

@@ -80,7 +80,7 @@
80 80
               res-filename  (str "resources/tmp/" file-name "_converti.csv")
81 81
               save-filename (str file-name "_converti.csv")]
82 82
           (io/copy actual-file (io/file dest-filename))
83
-          (sh "memoire.sh" dest-filename "tmp_output.csv")
83
+          (sh "memoire-to-palissy.sh" dest-filename "tmp_output.csv")
84 84
           (process "tmp_output.csv" res-filename)
85 85
           (sh "rm" "tmp_output.csv")
86 86
           {:status  200

+ 31 - 0
utils/memoire-to-palissy.sh

@@ -0,0 +1,31 @@
1
+#!/bin/bash
2
+
3
+display_usage() {
4
+    echo "Provide a Mémoire CSV file and an output.csv file name."
5
+}
6
+
7
+# check whether user had supplied -h or --help . If yes display usage
8
+if [[ ( $@ == "--help") ||  $@ == "-h" ]]
9
+then
10
+    display_usage
11
+    exit 0
12
+fi
13
+
14
+# Maybe circumvent a bug in clojure/data.csv
15
+# See https://dev.clojure.org/jira/browse/DCSV-6
16
+# sed -i 's/|\"/| "/g' $1 $2
17
+
18
+# Fix encoding
19
+iconv -f WINDOWS-1252 -t UTF-8 $1 > /tmp/mfile0.csv
20
+
21
+# Remove space in headers:
22
+sed -i '1s/ /_/g' /tmp/mfile0.csv
23
+
24
+# Keep only those columns we will use:
25
+awk -F $'\t' 'BEGIN {OFS="\",\""}; {printf("\""); print $3,$4,$10,$14}' /tmp/mfile0.csv | sed 's/$/\"/' > /tmp/mfile1.csv
26
+
27
+# Remove duplicates for field 4 ("Liens_bases")
28
+perl -ne '$a=(split "\\,")[4]; next if $h{$a}++; print;' /tmp/mfile1.csv > $2
29
+
30
+# Delete temporary files
31
+rm /tmp/mfile*