1
1
#!/bin/env python
2
2
3
3
import logging , os , sys
4
+ from pathlib import Path
4
5
import jekyll , ijsite , tsutil
5
6
import tutorials
6
7
7
8
8
9
logger = logging .getLogger ('indexer' )
9
10
10
-
11
- def load_site (siteroot ):
12
- if jekyll .is_jekyll_site (siteroot ):
13
- return jekyll .load_jekyll_site (siteroot )
14
- if ijsite .is_imagej_website (siteroot ):
15
- return ijsite .load_site (siteroot )
16
- if tutorials .is_imagej_tutorials (siteroot ):
17
- return tutorials .load_imagej_tutorials (siteroot )
18
- return None
19
-
20
-
21
- def load_sites (sites ):
22
- logger .info ('Loading documents...' )
23
- documents = []
24
- for siteid , siteroot in sites .items ():
25
- docs = load_site (siteroot )
26
- if docs :
27
- for doc in docs :
28
- doc ['siteid' ] = siteid
29
- documents .extend (docs )
30
- logger .info (f'{ len (documents )} documents loaded.' )
31
- return documents
32
-
33
-
34
11
def index_documents (collection , documents ):
35
12
client = tsutil .connect ()
36
13
if client is None :
@@ -48,23 +25,27 @@ def main(args):
48
25
logging .basicConfig (level = logging .INFO , format = '[%(levelname)s] %(message)s' )
49
26
logging .root .setLevel (logging .INFO )
50
27
51
- if len (args ) == 1 :
52
- collection = 'imagej-wiki'
53
- sites = {
54
- # 'imagej.net': os.path.join(os.path.dirname(args[0]), '..', '..'),
55
- # 'imagej.nih.gov/ij': '/var/www/mirror.imagej.net',
56
- 'imagej-tutorials' : "/Users/jackrueth/code/imagej/tutorials/"
57
- }
58
- elif len (args ) >= 3 :
59
- collection = args [1 ]
60
- siteroot = args [2 ]
61
- else :
62
- print ('Usage: index-sites.py [<collection-name> <site-id:site-root> [<another-site-id:another-site-root>...]]' )
63
- sys .exit (1 )
64
-
65
- documents = load_sites (sites )
66
- index_documents (collection , documents )
67
28
29
+ p = Path (sys .argv [0 ]).parent
30
+ root_imagej_wiki = p / '..' / '..'
31
+ root_imagej_tutorials = p / 'sites' / 'tutorials' #TODO: shell script to clone git repo if missing
32
+ root_imagej_website = '/var/www/mirror.imagej.net'
33
+ sites = [
34
+ ('imagej-wiki' , root_imagej_wiki , jekyll .is_jekyll_site , jekyll .load_jekyll_site ),
35
+ ('imagej-website' , root_imagej_website , ijsite .is_imagej_website , ijsite .load_site ),
36
+ ('imagej-tutorials' , root_imagej_tutorials , tutorials .is_imagej_tutorials , tutorials .load_imagej_tutorials )
37
+ ]
38
+
39
+ for collection , root , isvalid , loadsite in sites :
40
+ if isvalid (root ):
41
+ documents = loadsite (root )
42
+ index_documents (collection , documents )
43
+ else :
44
+ logger .warning (f"Skipping invalid site { root } " )
45
+
46
+
47
+ # wiki, tutorials, source code(source + javadoc to actions),
48
+ # imagej-website, support channels(mailing lists + forums + chat rooms + issues), and maven artifacts
68
49
69
50
if __name__ == '__main__' :
70
51
main (sys .argv )
0 commit comments