@@ -47,40 +47,63 @@ def __init__(self, command, logger=None, java=None, jar='opengrok.jar',
47
47
java_opts = None , env_vars = None ):
48
48
49
49
java_options = []
50
- java_options .extend (self .get_SCM_properties (logger ))
51
50
if java_opts :
52
51
java_options .extend (java_opts )
52
+ java_options = merge_properties (java_options ,
53
+ get_SCM_properties (logger ))
53
54
logger .debug ("Java options: {}" .format (java_options ))
54
55
55
56
super ().__init__ (command , jar = jar , java = java , java_opts = java_options ,
56
57
logger = logger , env_vars = env_vars )
57
58
58
- def get_SCM_properties (self , logger ):
59
- """
60
- Return list of Java System properties that contain valid paths to
61
- SCM commands.
62
- """
63
- SCM_COMMANDS = {
64
- 'bk' : '-Dorg.opengrok.indexer.history.BitKeeper' ,
65
- 'hg' : '-Dorg.opengrok.indexer.history.Mercurial' ,
66
- 'cvs' : '-Dorg.opengrok.indexer.history.cvs' ,
67
- 'svn' : '-Dorg.opengrok.indexer.history.Subversion' ,
68
- 'sccs' : '-Dorg.opengrok.indexer.history.SCCS' ,
69
- 'cleartool' : '-Dorg.opengrok.indexer.history.ClearCase' ,
70
- 'git' : '-Dorg.opengrok.indexer.history.git' ,
71
- 'p4' : '-Dorg.opengrok.indexer.history.Perforce' ,
72
- 'mtn' : '-Dorg.opengrok.indexer.history.Monotone' ,
73
- 'blame' : '-Dorg.opengrok.indexer.history.RCS' ,
74
- 'bzr' : '-Dorg.opengrok.indexer.history.Bazaar' }
75
-
76
- properties = []
77
- for cmd in SCM_COMMANDS .keys ():
78
- executable = get_command (logger , None , cmd , level = logging .INFO )
79
- if executable :
80
- properties .append ("{}={}" .
81
- format (SCM_COMMANDS [cmd ], executable ))
82
-
83
- return properties
59
+
60
+ def get_SCM_properties (logger ):
61
+ """
62
+ Return list of Java System properties that contain valid paths to
63
+ SCM commands.
64
+ """
65
+ SCM_COMMANDS = {
66
+ 'bk' : '-Dorg.opengrok.indexer.history.BitKeeper' ,
67
+ 'hg' : '-Dorg.opengrok.indexer.history.Mercurial' ,
68
+ 'cvs' : '-Dorg.opengrok.indexer.history.cvs' ,
69
+ 'svn' : '-Dorg.opengrok.indexer.history.Subversion' ,
70
+ 'sccs' : '-Dorg.opengrok.indexer.history.SCCS' ,
71
+ 'cleartool' : '-Dorg.opengrok.indexer.history.ClearCase' ,
72
+ 'git' : '-Dorg.opengrok.indexer.history.git' ,
73
+ 'p4' : '-Dorg.opengrok.indexer.history.Perforce' ,
74
+ 'mtn' : '-Dorg.opengrok.indexer.history.Monotone' ,
75
+ 'blame' : '-Dorg.opengrok.indexer.history.RCS' ,
76
+ 'bzr' : '-Dorg.opengrok.indexer.history.Bazaar' }
77
+
78
+ properties = []
79
+ for cmd in SCM_COMMANDS .keys ():
80
+ executable = get_command (logger , None , cmd , level = logging .INFO )
81
+ if executable :
82
+ properties .append ("{}={}" .
83
+ format (SCM_COMMANDS [cmd ], executable ))
84
+
85
+ return properties
86
+
87
+
88
+ def merge_properties (base , extra ):
89
+ """
90
+ Merge two lists of options (strings in the form of name=value).
91
+ Take everything from base and add properties from extra
92
+ (according to names) that are not present in the base.
93
+ :param base: list of properties
94
+ :param extra: list of properties
95
+ :return: merged list
96
+ """
97
+
98
+ extra_prop_names = set (map (lambda x : x .split ('=' )[0 ], base ))
99
+
100
+ ret = set (base )
101
+ for item in extra :
102
+ nv = item .split ("=" )
103
+ if nv [0 ] not in extra_prop_names :
104
+ ret .add (item )
105
+
106
+ return list (ret )
84
107
85
108
86
109
def FindCtags (logger ):
0 commit comments