1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
#! /usr/bin/env guile
!#
(use-modules
(ice-9 getopt-long)
(srfi srfi-26)
((ice-9 regex) #:select (regexp-substitute/global))
((transform strings) #:select (string-blank? string-capitalize-first))
((transform sql) #:select (call-with-target-database sql-for-each)))
(define (save-file file result)
(when result
(let ((dir-name (dirname file)))
(unless (file-exists? dir-name)
(mkdir dir-name))
(with-output-to-file file
(lambda ()
(format #t "~a" result))))))
(define (infopages/sql->rtf result)
(let* ((get (cut assoc-ref result <>))
(get* (compose (lambda (str)
(if (or (string-blank? str)
(string-ci=?
(string-trim-both str) "None"))
#f
str))
get))
(identifier
(string-capitalize-first
(regexp-substitute/global
#f "[^A-Za-z0-9:]"
(get "InfoPageName")
'pre "_" 'post)))
(dir-name "/export/data/genenetwork/gn-docs/general/datasets/")
(file-name (cut string-append dir-name <>))
(summary (get* "Summary"))
(tissue (get* "AboutTissue"))
(specifics (get* "Specifics"))
(contributors (get* "Contributors"))
(cases (get* "AboutCases"))
(platform (get* "AboutPlatform"))
(processing (get* "AboutDataProcessing"))
(notes (get* "Notes"))
(citation (get* "Citation"))
(experiment-type (get* "Experiment_Type"))
(experiment-design (get* "ExperimentDesign"))
(acknowledgment (get* "Acknowledgment")))
(for-each (lambda (x)
(save-file
(string-append (file-name identifier)
"/"
(car x))
(cdr x)))
`(("summary.rtf" . ,summary)
("tissue.rtf" . ,tissue)
("citation.rtf" . ,citation)
("specifics.rtf" . ,specifics)
("cases.rtf" . ,cases)
("platform.rtf" . ,platform)
("processing.rtf" . ,processing)
("notes.rtf" . ,notes)
("experiment-design.rtf" . ,experiment-design)
("experiment-type.rtf" . ,experiment-type)
("contributors.rtf" . ,contributors)
("acknowledgment.rtf" . ,acknowledgment)))))
(let* ((option-spec
'((settings (single-char #\s) (value #t))))
(options (getopt-long (command-line) option-spec))
(settings (option-ref options 'settings #f))
(query "SELECT InfoPageName, Datasets.Summary, Datasets.AboutTissue, InfoFiles.Specifics,
Datasets.AboutCases, Datasets.AboutPlatform, Datasets.AboutDataProcessing, InfoFiles.Experiment_Type,
Datasets.Notes, Datasets.ExperimentDesign, Datasets.Acknowledgment, Datasets.Contributors, Datasets.Citation
FROM InfoFiles LEFT JOIN Datasets USING (DatasetId)")
(%connection-settings
(call-with-input-file settings
read)))
(call-with-target-database
%connection-settings
(lambda (db)
(let ((dir "/export/data/genenetwork/gn-docs/"))
(chdir dir)
(system "git reset --hard origin")
(system "git pull")
;; Clear directory so that we can re-do the dump again from the db.
(system "rm -rf general/datasets/*/")
(sql-for-each infopages/sql->rtf
db
query)
(system "git add general/datasets")
(system (format #f "git commit -m ~s" "Update dataset RTF Files."))
(system "git push origin master")))))
|