11#!/bin/env python
22
33import logging , os , sys
4+ from pathlib import Path
45import jekyll , ijsite , tsutil
56import tutorials
67
78
89logger = logging .getLogger ('indexer' )
910
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-
3411def index_documents (collection , documents ):
3512 client = tsutil .connect ()
3613 if client is None :
@@ -48,23 +25,27 @@ def main(args):
4825 logging .basicConfig (level = logging .INFO , format = '[%(levelname)s] %(message)s' )
4926 logging .root .setLevel (logging .INFO )
5027
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 )
6728
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
6849
6950if __name__ == '__main__' :
7051 main (sys .argv )
0 commit comments