build-tool 0.5.7 → 0.6.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/.rvmrc +1 -0
- data/.yardopts +1 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +56 -0
- data/History.txt +64 -0
- data/README.txt +0 -7
- data/Rakefile +8 -56
- data/bin/build-tool +4 -1
- data/build-tool.gemspec +62 -0
- data/db/migrations/20110703074000_add_command_logs.rb +17 -0
- data/db/migrations/20110703075000_add_module_logs.rb +20 -0
- data/db/migrations/20110815170000_add_features.rb +17 -0
- data/db/migrations/20120103204700_add_modules.rb +17 -0
- data/db/migrations/20120106181200_add_settings.rb +18 -0
- data/lib/build-tool.rb +3 -4
- data/lib/build-tool/application.rb +127 -37
- data/lib/build-tool/build-system/autoconf.rb +2 -8
- data/lib/build-tool/build-system/base.rb +12 -4
- data/lib/build-tool/build-system/cmake.rb +2 -0
- data/lib/build-tool/build-system/custom.rb +2 -0
- data/lib/build-tool/build-system/kdel10n.rb +2 -0
- data/lib/build-tool/build-system/make.rb +2 -0
- data/lib/build-tool/build-system/none.rb +2 -0
- data/lib/build-tool/build-system/qmake.rb +2 -0
- data/lib/build-tool/build-system/qt.rb +4 -0
- data/lib/build-tool/cfg/lexer.rex +40 -8
- data/lib/build-tool/cfg/lexer_base.rb +3 -1
- data/lib/build-tool/cfg/node.rb +17 -1
- data/lib/build-tool/cfg/parser.y +92 -10
- data/lib/build-tool/cfg/visitor.rb +202 -78
- data/lib/build-tool/command_actions.rb +26 -10
- data/lib/build-tool/commands.rb +289 -197
- data/lib/build-tool/commands/build.rb +13 -9
- data/lib/build-tool/commands/configuration.rb +25 -0
- data/lib/build-tool/commands/configuration/edit.rb +42 -0
- data/lib/build-tool/commands/configuration/list.rb +48 -0
- data/lib/build-tool/commands/configure.rb +9 -5
- data/lib/build-tool/commands/ctags.rb +8 -3
- data/lib/build-tool/commands/environments.rb +2 -4
- data/lib/build-tool/commands/environments/list.rb +13 -10
- data/lib/build-tool/commands/environments/set.rb +5 -1
- data/lib/build-tool/commands/features.rb +24 -0
- data/lib/build-tool/commands/features/disable.rb +70 -0
- data/lib/build-tool/commands/features/enable.rb +66 -0
- data/lib/build-tool/commands/features/list.rb +92 -0
- data/lib/build-tool/commands/fetch.rb +9 -3
- data/lib/build-tool/commands/files.rb +9 -5
- data/lib/build-tool/commands/gc.rb +48 -15
- data/lib/build-tool/commands/history.rb +21 -16
- data/lib/build-tool/commands/info.rb +16 -13
- data/lib/build-tool/commands/install.rb +8 -4
- data/lib/build-tool/commands/modules.rb +2 -4
- data/lib/build-tool/commands/modules/cleanup.rb +52 -0
- data/lib/build-tool/commands/modules/disable.rb +95 -0
- data/lib/build-tool/commands/modules/enable.rb +52 -0
- data/lib/build-tool/commands/modules/info.rb +44 -35
- data/lib/build-tool/commands/modules/list.rb +67 -15
- data/lib/build-tool/commands/modules/shell.rb +8 -2
- data/lib/build-tool/commands/rebase.rb +15 -7
- data/lib/build-tool/commands/recipes.rb +2 -4
- data/lib/build-tool/commands/recipes/add.rb +16 -2
- data/lib/build-tool/commands/recipes/edit.rb +72 -0
- data/lib/build-tool/commands/recipes/incoming.rb +11 -7
- data/lib/build-tool/commands/recipes/info.rb +12 -8
- data/lib/build-tool/commands/recipes/install.rb +37 -42
- data/lib/build-tool/commands/recipes/list.rb +6 -2
- data/lib/build-tool/configuration.rb +88 -3
- data/lib/build-tool/environment.rb +2 -0
- data/lib/build-tool/errors.rb +5 -0
- data/lib/build-tool/history.rb +3 -181
- data/lib/build-tool/model/command_log.rb +93 -0
- data/lib/build-tool/model/feature.rb +80 -0
- data/lib/build-tool/{module.rb → model/module.rb} +110 -29
- data/lib/build-tool/model/module_log.rb +64 -0
- data/lib/build-tool/model/setting.rb +84 -0
- data/lib/build-tool/recipe.rb +40 -18
- data/lib/build-tool/repository.rb +39 -33
- data/lib/build-tool/server.rb +27 -3
- data/lib/build-tool/singleton.rb +2 -0
- data/lib/build-tool/sshkey.rb +2 -0
- data/lib/build-tool/state_helper.rb +64 -0
- data/lib/build-tool/vcs/archive.rb +3 -1
- data/lib/build-tool/vcs/base.rb +13 -0
- data/lib/build-tool/vcs/git-svn.rb +36 -14
- data/lib/build-tool/vcs/git.rb +180 -44
- data/lib/build-tool/vcs/mercurial.rb +25 -13
- data/lib/build-tool/vcs/svn.rb +20 -15
- data/lib/build-tool/version.rb +30 -0
- data/lib/mj/error.rb +2 -0
- data/lib/mj/logging.rb +2 -0
- data/lib/mj/mixins/inherited_attributes.rb +73 -0
- data/lib/mj/tools/editor.rb +34 -0
- data/lib/mj/tools/ssh.rb +2 -0
- data/lib/mj/tools/subprocess.rb +2 -1
- data/lib/mj/vcs/git.rb +14 -2
- data/lib/mj/visitor.rb +22 -0
- data/tasks/db.rake +36 -0
- data/tasks/racc.rake +14 -0
- data/tasks/rdoc.rake +8 -0
- data/tasks/rexical.rake +14 -0
- data/tasks/test.rake +21 -0
- data/test/integration/history_test.rb +88 -0
- data/test/integration/parser_configuration.rb +36 -0
- data/test/integration/parser_environment_parser.rb +156 -0
- data/test/integration/parser_feature_test.rb +75 -0
- data/test/integration/parser_git-svn_test.rb +92 -0
- data/test/integration/parser_git_test.rb +97 -0
- data/test/integration/parser_mercurial_test.rb +77 -0
- data/test/integration/parser_module_test.rb +103 -0
- data/test/integration/parser_svn_test.rb +92 -0
- data/test/integration/parser_test.rb +73 -0
- data/test/test_helper.rb +61 -0
- data/test/unit/configuration_test.rb +36 -0
- data/test/unit/git_configuration_test.rb +163 -0
- data/test/unit/git_svn_configuration_test.rb +240 -0
- data/test/unit/mercurial_configuration_test.rb +64 -0
- data/test/unit/model/command_log_test.rb +103 -0
- data/test/unit/model/feature_test.rb +29 -0
- data/test/unit/model/module_log_test.rb +70 -0
- data/test/unit/model/module_test.rb +32 -0
- data/test/unit/repository_test.rb +110 -0
- data/test/unit/server_test.rb +66 -0
- data/test/unit/svn_configuration_test.rb +90 -0
- metadata +134 -93
- data/Manifest.txt +0 -80
- data/db/migrations/001_command_histories.rb +0 -20
- data/db/migrations/002_module_events.rb +0 -24
- data/db/migrations/003_command_histories_add_logfile.rb +0 -19
- data/lib/build-tool/GUI.rb +0 -360
- data/lib/build-tool/commands/help.rb +0 -22
- data/lib/build-tool/commands/lsfeatures.rb +0 -76
- data/lib/build-tool/feature.rb +0 -47
@@ -1,3 +1,5 @@
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
2
|
+
require 'mj/tools/subprocess'
|
1
3
|
require 'build-tool/build-system/make'
|
2
4
|
|
3
5
|
module BuildTool; module BuildSystem
|
@@ -91,14 +93,6 @@ def configure
|
|
91
93
|
rc
|
92
94
|
end
|
93
95
|
|
94
|
-
def install( fast )
|
95
|
-
make( "install" )
|
96
|
-
end
|
97
|
-
|
98
|
-
def install_fast_supported?
|
99
|
-
true
|
100
|
-
end
|
101
|
-
|
102
96
|
def make( target = nil )
|
103
97
|
Make.make( "#{target ? target : "" }", build_directory, self.module.environment.values )
|
104
98
|
end
|
@@ -1,4 +1,7 @@
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
2
|
+
|
1
3
|
require 'build-tool/errors'
|
4
|
+
require 'mj/logging'
|
2
5
|
|
3
6
|
module BuildTool; module BuildSystem
|
4
7
|
|
@@ -250,7 +253,11 @@ def recipe
|
|
250
253
|
end
|
251
254
|
|
252
255
|
def remove_build_directory
|
253
|
-
|
256
|
+
FileUtils.rm_rf( build_directory, :noop => $noop )
|
257
|
+
end
|
258
|
+
|
259
|
+
def remove_source_directory
|
260
|
+
FileUtils.rm_rf( source_directory, :noop => $noop )
|
254
261
|
end
|
255
262
|
|
256
263
|
end # class Base
|
@@ -270,14 +277,15 @@ def write( event )
|
|
270
277
|
@pbar = nil
|
271
278
|
@oldlogger.append( event )
|
272
279
|
rescue Exception => e
|
273
|
-
|
280
|
+
logger.error( e )
|
281
|
+
logger.verbose( e.backtrace.join( "\n" ) )
|
274
282
|
end
|
275
283
|
else
|
276
284
|
begin
|
277
285
|
grep_progress( message )
|
278
286
|
rescue Exception => e
|
279
|
-
|
280
|
-
|
287
|
+
logger.error( e )
|
288
|
+
logger.verbose( e.backtrace.join( "\n" ) )
|
281
289
|
end
|
282
290
|
end
|
283
291
|
self
|
@@ -40,8 +40,9 @@ macro
|
|
40
40
|
COMMENT \#[^\r\n]*
|
41
41
|
INHERITANCE <
|
42
42
|
|
43
|
-
STRING
|
44
|
-
STRINGERROR
|
43
|
+
STRING "([^\"\r\n]*)"
|
44
|
+
STRINGERROR "([^\"\r\n]*)$"
|
45
|
+
MULTILINE_STRING """
|
45
46
|
|
46
47
|
TOKEN [a-zA-Z][A-Za-z_0-9-]*
|
47
48
|
|
@@ -160,12 +161,15 @@ rule
|
|
160
161
|
#
|
161
162
|
### GIT_SVN
|
162
163
|
#
|
164
|
+
:GIT_SVN track\b { [:TRACK, text]; }
|
165
|
+
:GIT_SVN {INHERITANCE} { [:INHERITANCE, text] }
|
166
|
+
:GIT_SVN option\b { [:OPTION, text]; }
|
167
|
+
:GIT_SVN global\b { [:GLOBAL, text]; }
|
163
168
|
:GIT_SVN external\b { [:EXTERNAL, text]; }
|
169
|
+
:GIT_SVN remote-path\b { [:REMOTE_PATH, text]; }
|
164
170
|
:GIT_SVN use\b { @states.push @state; @state = :USE; [:USE, text]; }
|
165
|
-
:GIT_SVN track\b { [:TRACK, text]; }
|
166
171
|
:GIT_SVN ssh-key\b { @states.push @state; @state = :SSH_KEY; [:SSH_KEY, text]; }
|
167
172
|
:GIT_SVN repository\b { @states.push @state; @state = :REPOSITORY; [:REPOSITORY, text]; }
|
168
|
-
:GIT_SVN remote-path\b { [:REMOTE_PATH, text]; }
|
169
173
|
:GIT_SVN remote\b { @states.push @state; @state = :GIT_REMOTE; [:REMOTE, text]; }
|
170
174
|
:GIT_SVN end\b { @state = @states.pop; [ :END, text ]; }
|
171
175
|
# COMMON
|
@@ -180,12 +184,15 @@ rule
|
|
180
184
|
#
|
181
185
|
### GIT
|
182
186
|
#
|
183
|
-
:GIT url\b { [:URL, text]; }
|
184
187
|
:GIT track\b { [:TRACK, text]; }
|
188
|
+
:GIT {INHERITANCE} { [:INHERITANCE, text] }
|
189
|
+
:GIT option\b { [:OPTION, text]; }
|
190
|
+
:GIT global\b { [:GLOBAL, text]; }
|
191
|
+
:GIT url\b { [:URL, text]; }
|
185
192
|
:GIT push\b { [:PUSH, text]; }
|
186
|
-
:GIT ssh-key\b
|
187
|
-
:GIT remote\b
|
188
|
-
:GIT end\b
|
193
|
+
:GIT ssh-key\b { @states.push @state; @state = :SSH_KEY; [:SSH_KEY, text]; }
|
194
|
+
:GIT remote\b { @states.push @state; @state = :GIT_REMOTE; [:REMOTE, text]; }
|
195
|
+
:GIT end\b { @state = @states.pop; [ :END, text ]; }
|
189
196
|
# COMMON
|
190
197
|
:GIT {STRING} { [:STRING, @ss[1]]; }
|
191
198
|
:GIT {TOKEN} { [:TOKEN, text]; }
|
@@ -211,6 +218,24 @@ rule
|
|
211
218
|
:GIT_REMOTE {STRINGERROR} { [:GARBAGE, text]; }
|
212
219
|
:GIT_REMOTE . { [:GARBAGE, text]; }
|
213
220
|
|
221
|
+
#
|
222
|
+
### MERCURIAL
|
223
|
+
#
|
224
|
+
:MERCURIAL track\b { [:TRACK, text]; }
|
225
|
+
:MERCURIAL {INHERITANCE} { [:INHERITANCE, text] }
|
226
|
+
:MERCURIAL url\b { [:URL, text]; }
|
227
|
+
:MERCURIAL push\b { [:PUSH, text]; }
|
228
|
+
:MERCURIAL ssh-key\b { @states.push @state; @state = :SSH_KEY; [:SSH_KEY, text]; }
|
229
|
+
:MERCURIAL end\b { @state = @states.pop; [ :END, text ]; }
|
230
|
+
# COMMON
|
231
|
+
:MERCURIAL {STRING} { [:STRING, @ss[1]]; }
|
232
|
+
:MERCURIAL {TOKEN} { [:TOKEN, text]; }
|
233
|
+
:MERCURIAL {COMMENT} { [:COMMENT, text]; }
|
234
|
+
:MERCURIAL {BLANK} { [:IGNORE, text]; }
|
235
|
+
:MERCURIAL {LF} { [:IGNORE, text]; }
|
236
|
+
:MERCURIAL {STRINGERROR} { [:GARBAGE, text]; }
|
237
|
+
:MERCURIAL . { [:GARBAGE, text]; }
|
238
|
+
|
214
239
|
#
|
215
240
|
### MODULE
|
216
241
|
#
|
@@ -231,6 +256,7 @@ rule
|
|
231
256
|
|
232
257
|
:MODULE end\b { @state = @states.pop; [:END, text]; }
|
233
258
|
# COMMON
|
259
|
+
:MODULE {MULTILINE_STRING} { @states.push @state; @state = :MULTILINE_STRING; [:MULTILINE_STRING, text]; }
|
234
260
|
:MODULE {STRING} { [:STRING, @ss[1]]; }
|
235
261
|
:MODULE {TOKEN} { [:TOKEN, text]; }
|
236
262
|
:MODULE {COMMENT} { [:COMMENT, text]; }
|
@@ -239,6 +265,10 @@ rule
|
|
239
265
|
:MODULE {STRINGERROR} { [:GARBAGE, text]; }
|
240
266
|
:MODULE . { [:GARBAGE, text]; }
|
241
267
|
|
268
|
+
:MULTILINE_STRING {MULTILINE_STRING} { @state = @states.pop; [:MULTILINE_STRING, text]; }
|
269
|
+
:MULTILINE_STRING [^\"]+ { [:TEXT, text]; }
|
270
|
+
:MULTILINE_STRING . { [:TEXT, text]; }
|
271
|
+
|
242
272
|
#
|
243
273
|
### REPOSITORY
|
244
274
|
#
|
@@ -293,6 +323,7 @@ rule
|
|
293
323
|
### SVN
|
294
324
|
#
|
295
325
|
:SVN only\b { [:ONLY, text]; }
|
326
|
+
:SVN {INHERITANCE} { [:INHERITANCE, text] }
|
296
327
|
:SVN end\b { @state = @states.pop; [ :END, text ]; }
|
297
328
|
:SVN repository\b { @states.push @state; @state = :REPOSITORY; [:REPOSITORY, text]; }
|
298
329
|
:SVN use\b { @states.push @state; @state = :USE; [:USE, text]; }
|
@@ -331,6 +362,7 @@ rule
|
|
331
362
|
:VCS git\b { @state = :GIT; [:GIT, text]; }
|
332
363
|
:VCS svn\b { @state = :SVN; [:SVN, text]; }
|
333
364
|
:VCS archive\b { @state = :ARCHIVE; [:ARCHIVE, text]; }
|
365
|
+
:VCS mercurial { @state = :MERCURIAL; [:MERCURIAL, text]; }
|
334
366
|
# COMMON
|
335
367
|
:VCS {STRING} { [:STRING, @ss[1]]; }
|
336
368
|
:VCS {TOKEN} { [:TOKEN, text]; }
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
2
|
+
|
1
3
|
require 'racc/parser'
|
2
4
|
|
3
5
|
module BuildTool; module Cfg;
|
@@ -37,7 +39,7 @@ def pre_match
|
|
37
39
|
def next_token
|
38
40
|
begin
|
39
41
|
token = rex_next_token
|
40
|
-
#
|
42
|
+
# logger.debug2( "#{state.inspect}##{token.inspect} #{lineno}" )
|
41
43
|
case token[0]
|
42
44
|
when :IGNORE; redo
|
43
45
|
when :COMMENT; redo
|
data/lib/build-tool/cfg/node.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
2
|
+
|
1
3
|
require 'mj/visitor'
|
2
4
|
|
3
5
|
module BuildTool; module Cfg;
|
@@ -8,14 +10,22 @@ module BuildTool; module Cfg;
|
|
8
10
|
class Node < MJ::Visitable
|
9
11
|
|
10
12
|
attr_accessor :values
|
13
|
+
attr_accessor :args
|
14
|
+
attr_accessor :options
|
11
15
|
|
12
16
|
def value
|
13
17
|
values
|
14
18
|
#raise StandardError, "1 Value expected.#{values.length} values found!."
|
15
19
|
end
|
16
20
|
|
17
|
-
def initialize(values = nil)
|
21
|
+
def initialize(values = nil, *args )
|
18
22
|
@values = values
|
23
|
+
@args = *args
|
24
|
+
if !@args.empty? && @args[-1].kind_of?( Hash )
|
25
|
+
@options = @args.pop
|
26
|
+
else
|
27
|
+
@options = {}
|
28
|
+
end
|
19
29
|
end
|
20
30
|
|
21
31
|
end # class Node
|
@@ -43,6 +53,8 @@ def initialize(values = nil)
|
|
43
53
|
GitSvnDeclaration
|
44
54
|
|
45
55
|
GitDeclaration
|
56
|
+
GitOption
|
57
|
+
GitOptionsDeclaration
|
46
58
|
GitRemotePath
|
47
59
|
GitRemoteUrl
|
48
60
|
GitRemoteDeclaration
|
@@ -56,6 +68,10 @@ def initialize(values = nil)
|
|
56
68
|
|
57
69
|
LogDirectory
|
58
70
|
|
71
|
+
MercurialDeclaration
|
72
|
+
MercurialTrack
|
73
|
+
MercurialUrl
|
74
|
+
|
59
75
|
ModuleBuildPrefix
|
60
76
|
ModuleDeclaration
|
61
77
|
ModuleInstallPrefix
|
data/lib/build-tool/cfg/parser.y
CHANGED
@@ -15,6 +15,7 @@ class BuildTool::Cfg::Parser < BuildTool::Cfg::Lexer
|
|
15
15
|
token FILE
|
16
16
|
token GIT
|
17
17
|
token GIT_SVN
|
18
|
+
token GLOBAL
|
18
19
|
token HOST
|
19
20
|
token INCLUDE
|
20
21
|
token INHERITANCE
|
@@ -23,6 +24,8 @@ class BuildTool::Cfg::Parser < BuildTool::Cfg::Lexer
|
|
23
24
|
token LOCAL_PATH
|
24
25
|
token LOG_DIRECTORY
|
25
26
|
token LONG
|
27
|
+
token MERCURIAL
|
28
|
+
token MULTILINE_STRING
|
26
29
|
token MODULE
|
27
30
|
token ONLY
|
28
31
|
token OPTION
|
@@ -41,6 +44,7 @@ class BuildTool::Cfg::Parser < BuildTool::Cfg::Lexer
|
|
41
44
|
token STRING
|
42
45
|
token SVN
|
43
46
|
token TEMPLATE
|
47
|
+
token TEXT
|
44
48
|
token TOKEN
|
45
49
|
token TRACK
|
46
50
|
token URL
|
@@ -78,8 +82,14 @@ rule
|
|
78
82
|
|
79
83
|
top_level_statement
|
80
84
|
: LOG_DIRECTORY STRING { result = LogDirectoryNode.new( val[1] ); }
|
81
|
-
| DISABLE FEATURE identifier {
|
82
|
-
|
85
|
+
| DISABLE FEATURE identifier {
|
86
|
+
result = DisableFeatureNode.new( val[2], :global => @global );
|
87
|
+
deprecated( "Enabling/Disabling feature %s from override file!" % ( val[2] ) ) if not @global;
|
88
|
+
}
|
89
|
+
| ENABLE FEATURE identifier {
|
90
|
+
result = EnableFeatureNode.new( val[2], :global => @global );
|
91
|
+
deprecated( "Enabling/Disabling feature %s from override file!" % ( val[2] ) ) if not @global;
|
92
|
+
}
|
83
93
|
| statement { result = val[0]; }
|
84
94
|
;
|
85
95
|
|
@@ -96,8 +106,15 @@ rule
|
|
96
106
|
| ssh_key_declaration { result = val[0]; }
|
97
107
|
| include_directive { result = val[0]; }
|
98
108
|
| feature_declaration { result = val[0]; }
|
99
|
-
|
|
100
|
-
|
|
109
|
+
| vcs_options_declaration { result = val[0]; }
|
110
|
+
| DISABLE MODULE identifier {
|
111
|
+
result = DisableModuleNode.new( val[2], :global => @global );
|
112
|
+
deprecated( "Enabling/Disabling module %s from override file!" % ( val[2] ) ) if not @global;
|
113
|
+
}
|
114
|
+
| ENABLE MODULE identifier {
|
115
|
+
result = EnableModuleNode.new( val[2], :global => @global );
|
116
|
+
deprecated( "Enabling/Disabling module %s from override file!" % ( val[2] ) ) if not @global;
|
117
|
+
}
|
101
118
|
;
|
102
119
|
|
103
120
|
vcs_declaration
|
@@ -105,10 +122,15 @@ rule
|
|
105
122
|
| svn_declaration { result = val[0]; }
|
106
123
|
| git_svn_declaration { result = val[0]; }
|
107
124
|
| archive_declaration { result = val[0]; }
|
125
|
+
| mercurial_declaration { result = val[0]; }
|
126
|
+
;
|
127
|
+
|
128
|
+
vcs_options_declaration
|
129
|
+
: git_options_declaration { result = val[0]; }
|
108
130
|
;
|
109
131
|
|
110
132
|
#
|
111
|
-
###
|
133
|
+
### CONFIGURATION
|
112
134
|
#
|
113
135
|
archive_declaration
|
114
136
|
: VCS ARCHIVE archive_statements END { result = ArchiveDeclarationNode.new( val[2] ); }
|
@@ -183,11 +205,32 @@ rule
|
|
183
205
|
| SHORT DESCRIPTION STRING { result = ShortDescriptionNode.new( val[2] ); }
|
184
206
|
;
|
185
207
|
|
208
|
+
#
|
209
|
+
### GIT OPTION DECLARATION
|
210
|
+
#
|
211
|
+
git_options_declaration
|
212
|
+
: VCS GIT git_global_option_statements END { result = GitOptionsDeclarationNode.new( val[2] ); }
|
213
|
+
|
214
|
+
git_global_option_statements
|
215
|
+
: /* EMPTY */
|
216
|
+
| git_global_option_statement git_global_option_statements { result = val.flatten; }
|
217
|
+
;
|
218
|
+
|
219
|
+
git_global_option_statement
|
220
|
+
: GLOBAL OPTION identifier STRING { result = GitOptionNode.new( val[2..-1], :GLOBAL ); }
|
221
|
+
| git_option_statement
|
222
|
+
;
|
223
|
+
|
224
|
+
git_option_statement
|
225
|
+
: OPTION identifier STRING { result = GitOptionNode.new( val[1..-1], :LOCAL ); }
|
226
|
+
;
|
227
|
+
|
186
228
|
#
|
187
229
|
### GIT CONFIGURATION
|
188
230
|
#
|
189
231
|
git_declaration
|
190
232
|
: VCS GIT git_statements END { result = GitDeclarationNode.new( val[2] ); }
|
233
|
+
| VCS GIT inheritance git_statements END { result = GitDeclarationNode.new( val[3] ); result.options[:inheritance] = true; }
|
191
234
|
;
|
192
235
|
|
193
236
|
git_remote_statements
|
@@ -211,6 +254,7 @@ rule
|
|
211
254
|
: REMOTE STRING git_remote_statements END { result = GitRemoteDeclarationNode.new( val[1..-1]); }
|
212
255
|
| TRACK STRING { result = GitTrackNode.new( val[1] ); }
|
213
256
|
| git_remote_statement { result = val[0]; }
|
257
|
+
| git_option_statement { result = val[0]; }
|
214
258
|
;
|
215
259
|
|
216
260
|
#
|
@@ -218,6 +262,7 @@ rule
|
|
218
262
|
#
|
219
263
|
git_svn_declaration
|
220
264
|
: VCS GIT_SVN git_svn_statements END { result = GitSvnDeclarationNode.new( val[2] ); }
|
265
|
+
| VCS GIT_SVN inheritance git_svn_statements END { result = GitSvnDeclarationNode.new( val[3] ); result.options[:inheritance] = true; }
|
221
266
|
;
|
222
267
|
|
223
268
|
git_svn_statements
|
@@ -240,6 +285,24 @@ rule
|
|
240
285
|
: INCLUDE STRING { result = IncludeNode.new( val[1] ) };
|
241
286
|
;
|
242
287
|
|
288
|
+
#
|
289
|
+
### MERCURIAL CONFIGURATION
|
290
|
+
#
|
291
|
+
mercurial_declaration
|
292
|
+
: VCS MERCURIAL mercurial_statements END { result = MercurialDeclarationNode.new( val[2] ); }
|
293
|
+
| VCS MERCURIAL inheritance mercurial_statements END { result = MercurialDeclarationNode.new( val[3] ); result.options[:inheritance] = true; }
|
294
|
+
;
|
295
|
+
|
296
|
+
mercurial_statements
|
297
|
+
: /* empty */
|
298
|
+
| mercurial_statement mercurial_statements { result = val.flatten; }
|
299
|
+
;
|
300
|
+
|
301
|
+
mercurial_statement
|
302
|
+
: TRACK STRING { result = MercurialTrackNode.new( val[1] ); }
|
303
|
+
| URL STRING { result = MercurialUrlNode.new( val[1..-1] ); }
|
304
|
+
;
|
305
|
+
|
243
306
|
#
|
244
307
|
### MODULE DECLARATION
|
245
308
|
#
|
@@ -331,6 +394,7 @@ rule
|
|
331
394
|
#
|
332
395
|
svn_declaration
|
333
396
|
: VCS SVN svn_statements END { result = SvnDeclarationNode.new( val[2] ); }
|
397
|
+
| VCS SVN inheritance svn_statements END { result = SvnDeclarationNode.new( val[3] ); result.options[:inheritance] = true; }
|
334
398
|
;
|
335
399
|
|
336
400
|
svn_statements
|
@@ -348,11 +412,17 @@ rule
|
|
348
412
|
#
|
349
413
|
### HELPER
|
350
414
|
#
|
351
|
-
|
415
|
+
multiline_text
|
352
416
|
: /* empty */
|
353
|
-
|
|
417
|
+
| multiline_text TEXT { result = val[0] ? val[0] + "\n" + val[1] : val[1]; }
|
418
|
+
;
|
419
|
+
|
420
|
+
multiline_string
|
421
|
+
: STRING { result = val[0]; }
|
422
|
+
| MULTILINE_STRING multiline_text MULTILINE_STRING { result = val[1]; }
|
354
423
|
;
|
355
424
|
|
425
|
+
|
356
426
|
end # class BuildTool::Cfg::GitParser
|
357
427
|
|
358
428
|
---- header ----
|
@@ -362,6 +432,8 @@ end # class BuildTool::Cfg::GitParser
|
|
362
432
|
require 'build-tool/cfg/lexer'
|
363
433
|
require 'build-tool/cfg/node'
|
364
434
|
require 'build-tool/cfg/visitor'
|
435
|
+
require 'build-tool/configuration'
|
436
|
+
require 'build-tool/errors'
|
365
437
|
|
366
438
|
|
367
439
|
---- inner ----
|
@@ -370,18 +442,28 @@ require 'build-tool/cfg/visitor'
|
|
370
442
|
#
|
371
443
|
attr_accessor :configuration
|
372
444
|
|
373
|
-
def initialize( configuration =
|
445
|
+
def initialize( configuration, global = true)
|
374
446
|
super()
|
447
|
+
@global = global
|
375
448
|
@configuration = configuration
|
376
449
|
end
|
377
450
|
|
378
451
|
def parse_string( string, file = "<string>" )
|
379
|
-
|
380
|
-
|
452
|
+
begin
|
453
|
+
tree = super
|
454
|
+
visitor = Cfg::ConfigurationFileVisitor.new( configuration )
|
455
|
+
rescue Racc::ParseError => e
|
456
|
+
debug( e.backtrace.join( "\n" ) )
|
457
|
+
raise BuildTool::ParseError( e.message )
|
458
|
+
end
|
381
459
|
conf = tree.accept( visitor )
|
382
460
|
return configuration
|
383
461
|
end
|
384
462
|
|
463
|
+
def deprecated( message )
|
464
|
+
logger.warn "[%s:%d]:deprecation warning:%s" % [ filename, lineno, message ]
|
465
|
+
end
|
466
|
+
|
385
467
|
---- footer ----
|
386
468
|
#
|
387
469
|
### FOOTER
|