buildr 1.4.16 → 1.4.17
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/CHANGELOG +20 -0
- data/addon/buildr/bnd.rb +158 -158
- data/addon/buildr/checkstyle-report.xsl +87 -0
- data/addon/buildr/checkstyle.rb +213 -205
- data/addon/buildr/css_lint-report.xsl +83 -0
- data/addon/buildr/css_lint.rake +196 -0
- data/addon/buildr/custom_pom.rb +282 -0
- data/addon/buildr/drb.rb +0 -1
- data/addon/buildr/git_auto_version.rb +34 -34
- data/addon/buildr/gwt.rb +171 -171
- data/addon/buildr/hibernate.rb +8 -8
- data/addon/buildr/javancss.rb +155 -155
- data/addon/buildr/jaxb_xjc.rb +74 -74
- data/addon/buildr/jibx.rb +0 -1
- data/addon/buildr/org/apache/buildr/BuildrNail.java +2 -2
- data/addon/buildr/org/apache/buildr/JettyWrapper.java +3 -3
- data/addon/buildr/package_as_nsis.rb +2 -2
- data/addon/buildr/pmd.rb +166 -166
- data/addon/buildr/scss_lint-report.xsl +79 -0
- data/addon/buildr/scss_lint.rb +199 -0
- data/addon/buildr/wsgen.rb +4 -0
- data/doc/building.textile +3 -3
- data/doc/css/default.css +3 -3
- data/doc/css/print.css +1 -1
- data/doc/download.textile +18 -7
- data/doc/index.textile +8 -1
- data/doc/installing.textile +3 -3
- data/doc/languages.textile +0 -1
- data/doc/mailing_lists.textile +0 -4
- data/doc/more_stuff.textile +127 -3
- data/doc/preface.textile +1 -1
- data/doc/projects.textile +6 -6
- data/doc/releasing.textile +0 -1
- data/lib/buildr/clojure/shell.rb +0 -1
- data/lib/buildr/core/build.rb +16 -16
- data/lib/buildr/core/filter.rb +3 -3
- data/lib/buildr/core/jrebel.rb +0 -1
- data/lib/buildr/core/linux.rb +0 -1
- data/lib/buildr/core/run.rb +0 -1
- data/lib/buildr/core/shell.rb +0 -1
- data/lib/buildr/groovy/doc.rb +0 -1
- data/lib/buildr/ide/eclipse.rb +0 -2
- data/lib/buildr/ide/idea.rb +44 -8
- data/lib/buildr/java/bdd.rb +0 -1
- data/lib/buildr/java/commands.rb +2 -3
- data/lib/buildr/java/jruby.rb +2 -2
- data/lib/buildr/java/org/apache/buildr/JavaTestFilter.java +5 -5
- data/lib/buildr/java/tests.rb +0 -1
- data/lib/buildr/packaging/artifact_namespace.rb +0 -2
- data/lib/buildr/resources/icons-license.txt +14 -17
- data/lib/buildr/scala/bdd.rb +0 -1
- data/lib/buildr/scala/compiler.rb +0 -1
- data/lib/buildr/scala/org/apache/buildr/Specs2Runner.class +0 -0
- data/lib/buildr/scala/org/apache/buildr/Specs2Runner.java +0 -2
- data/lib/buildr/version.rb +1 -1
- data/rakelib/metrics.rake +3 -3
- data/rakelib/release.rake +8 -2
- data/spec/addon/bnd_spec.rb +383 -383
- data/spec/addon/custom_pom_spec.rb +149 -0
- data/spec/addon/drb_spec.rb +0 -1
- data/spec/addon/jaxb_xjc_spec.rb +130 -130
- data/spec/core/application_spec.rb +0 -1
- data/spec/core/build_spec.rb +1 -1
- data/spec/core/console_spec.rb +0 -1
- data/spec/core/doc_spec.rb +0 -1
- data/spec/core/extension_spec.rb +0 -1
- data/spec/core/generate_from_eclipse_spec.rb +9 -9
- data/spec/core/run_spec.rb +2 -3
- data/spec/core/shell_spec.rb +0 -1
- data/spec/ide/idea_spec.rb +1979 -1941
- data/spec/java/cobertura_spec.rb +6 -6
- data/spec/java/commands_spec.rb +11 -11
- data/spec/java/compiler_spec.rb +0 -1
- data/spec/java/doc_spec.rb +0 -1
- data/spec/java/ecj_spec.rb +1 -3
- data/spec/java/external_spec.rb +0 -2
- data/spec/java/java_spec.rb +3 -3
- data/spec/java/run_spec.rb +0 -1
- data/spec/java/tests_spec.rb +15 -0
- data/spec/xpath_matchers.rb +121 -120
- metadata +10 -2
data/doc/preface.textile
CHANGED
data/doc/projects.textile
CHANGED
@@ -16,21 +16,21 @@ The remainder of this guide deals with what it takes to build a project. But fi
|
|
16
16
|
require "buildr/openjpa"
|
17
17
|
|
18
18
|
include Buildr::OpenJPA
|
19
|
-
|
19
|
+
|
20
20
|
VERSION_NUMBER = '1.0'
|
21
|
-
|
21
|
+
|
22
22
|
AXIS2 = 'org.apache.axis2:axis2:jar:1.2'
|
23
23
|
AXIOM = group('axiom-api', 'axiom-impl', 'axiom-dom',
|
24
24
|
:under=>'org.apache.ws.commons.axiom', :version=>'1.2.4')
|
25
25
|
AXIS_OF_WS = [AXIOM, AXIS2]
|
26
26
|
OPENJPA = ['org.apache.openjpa:openjpa:jar:1.2.0',
|
27
27
|
'net.sourceforge.serp:serp:jar:1.12.0']
|
28
|
-
|
28
|
+
|
29
29
|
repositories.remote << 'http://www.ibiblio.org/maven2/'
|
30
|
-
|
30
|
+
|
31
31
|
desc 'Code. Build. ??? Profit!'
|
32
32
|
define 'killer-app' do
|
33
|
-
|
33
|
+
|
34
34
|
project.version = VERSION_NUMBER
|
35
35
|
project.group = 'acme'
|
36
36
|
manifest['Copyright'] = 'Acme Inc (C) 2007'
|
@@ -124,7 +124,7 @@ To see a list of all projects defined in your Buildfile run @buildr help:project
|
|
124
124
|
|
125
125
|
h2(#tasks). Running Project Tasks
|
126
126
|
|
127
|
-
Most times, you run tasks like @build@ or @package@ that operate on the current project and recursively on its sub-projects. The "current project" is the one that uses the current working directory. So if you're in the @la-web/src@ directory looking at source files, _la-web_ is the current project. For example:
|
127
|
+
Most times, you run tasks like @build@ or @package@ that operate on the current project and recursively on its sub-projects. The "current project" is the one that uses the current working directory. So if you're in the @la-web/src@ directory looking at source files, _la-web_ is the current project. For example:
|
128
128
|
|
129
129
|
{% highlight sh %}
|
130
130
|
# build killer-app and all its sub-projects
|
data/doc/releasing.textile
CHANGED
@@ -116,4 +116,3 @@ The environment variable @NEXT_VERSION@ has precedence over Release.next_version
|
|
116
116
|
h2(#custom_tag_and_msg). How to specify my own tag name and commit message?
|
117
117
|
|
118
118
|
As explained earlier, Buildr will create two new commits and a new tag in the version control system. Similarly to @Release.next_version@, the commit message and the tag name can be customized with @Release.message@ and @Release.tag_name@. Both could be strings or procs that would receive the released version @THIS_VERSION@ without @-SNAPSHOT@.
|
119
|
-
|
data/lib/buildr/clojure/shell.rb
CHANGED
data/lib/buildr/core/build.rb
CHANGED
@@ -106,7 +106,7 @@ module Buildr #:nodoc:
|
|
106
106
|
# :call-seq:
|
107
107
|
# hg(*args)
|
108
108
|
#
|
109
|
-
# Executes a Mercurial (hg) command passing through the args and returns the output.
|
109
|
+
# Executes a Mercurial (hg) command passing through the args and returns the output.
|
110
110
|
# Throws exception if the exit status is not zero. For example:
|
111
111
|
# hg 'commit'
|
112
112
|
# hg 'update', 'default'
|
@@ -287,13 +287,13 @@ module Buildr #:nodoc:
|
|
287
287
|
# Use this to specify the next version number to replace VERSION_NUMBER with in the buildfile.
|
288
288
|
# You can set the next version or a proc that will be called with the current version number.
|
289
289
|
# For example, with the following buildfile:
|
290
|
-
# THIS_VERSION = "1.0.0-rc1"
|
291
|
-
# Release.next_version = lambda { |version|
|
290
|
+
# THIS_VERSION = "1.0.0-rc1"
|
291
|
+
# Release.next_version = lambda { |version|
|
292
292
|
# version[-1] = version[-1].to_i + 1
|
293
293
|
# version
|
294
|
-
# }
|
295
|
-
#
|
296
|
-
# Release.next_version will return "1.0.0-rc2", so at the end of the release, the buildfile will contain VERSION_NUMBER = "1.0.0-rc2"
|
294
|
+
# }
|
295
|
+
#
|
296
|
+
# Release.next_version will return "1.0.0-rc2", so at the end of the release, the buildfile will contain VERSION_NUMBER = "1.0.0-rc2"
|
297
297
|
#
|
298
298
|
attr_accessor :next_version
|
299
299
|
|
@@ -343,7 +343,7 @@ module Buildr #:nodoc:
|
|
343
343
|
|
344
344
|
def check
|
345
345
|
if this_version == resolve_next_version(this_version) && this_version.match(/-SNAPSHOT$/)
|
346
|
-
fail "The next version can't be equal to the current version #{this_version}.\nUpdate THIS_VERSION/VERSION_NUMBER, specify Release.next_version or use NEXT_VERSION env var"
|
346
|
+
fail "The next version can't be equal to the current version #{this_version}.\nUpdate THIS_VERSION/VERSION_NUMBER, specify Release.next_version or use NEXT_VERSION env var"
|
347
347
|
end
|
348
348
|
end
|
349
349
|
|
@@ -370,7 +370,7 @@ module Buildr #:nodoc:
|
|
370
370
|
end
|
371
371
|
|
372
372
|
protected
|
373
|
-
|
373
|
+
|
374
374
|
# the initial value of THIS_VERSION
|
375
375
|
attr_accessor :this_version
|
376
376
|
|
@@ -391,7 +391,7 @@ module Buildr #:nodoc:
|
|
391
391
|
# for the release buildfile.
|
392
392
|
def with_release_candidate_version
|
393
393
|
release_candidate_buildfile = Buildr.application.buildfile.to_s + '.next'
|
394
|
-
|
394
|
+
|
395
395
|
release_candidate_buildfile_contents = change_version { |version|
|
396
396
|
version.gsub(/-SNAPSHOT$/, "")
|
397
397
|
}
|
@@ -435,20 +435,20 @@ module Buildr #:nodoc:
|
|
435
435
|
next_version ||= lambda { |v|
|
436
436
|
snapshot = v.match(/-SNAPSHOT$/)
|
437
437
|
version = v.gsub(/-SNAPSHOT$/, "").split(/\./)
|
438
|
-
if snapshot
|
438
|
+
if snapshot
|
439
439
|
version[-1] = sprintf("%0#{version[-1].size}d", version[-1].to_i + 1) + '-SNAPSHOT'
|
440
|
-
end
|
440
|
+
end
|
441
441
|
version.join('.')
|
442
|
-
}
|
443
|
-
next_version = ENV['NEXT_VERSION'] if ENV['NEXT_VERSION']
|
444
|
-
next_version = ENV['next_version'] if ENV['next_version']
|
442
|
+
}
|
443
|
+
next_version = ENV['NEXT_VERSION'] if ENV['NEXT_VERSION']
|
444
|
+
next_version = ENV['next_version'] if ENV['next_version']
|
445
445
|
next_version = next_version.call(current_version) if Proc === next_version
|
446
446
|
next_version
|
447
447
|
end
|
448
448
|
|
449
449
|
# Move the version to next and save the updated buildfile
|
450
450
|
def update_buildfile
|
451
|
-
buildfile = change_version { |version| # THIS_VERSION minus SNAPSHOT
|
451
|
+
buildfile = change_version { |version| # THIS_VERSION minus SNAPSHOT
|
452
452
|
resolve_next_version(this_version) # THIS_VERSION
|
453
453
|
}
|
454
454
|
File.open(Buildr.application.buildfile.to_s, 'w') { |file| file.write buildfile }
|
@@ -512,7 +512,7 @@ module Buildr #:nodoc:
|
|
512
512
|
info "Current version is now #{extract_version}"
|
513
513
|
Hg.commit File.basename(Buildr.application.buildfile.to_s), message
|
514
514
|
Hg.push if Hg.remote
|
515
|
-
end
|
515
|
+
end
|
516
516
|
end
|
517
517
|
|
518
518
|
|
data/lib/buildr/core/filter.rb
CHANGED
@@ -198,10 +198,10 @@ module Buildr #:nodoc:
|
|
198
198
|
end
|
199
199
|
|
200
200
|
protected
|
201
|
-
|
201
|
+
|
202
202
|
# :call-seq:
|
203
203
|
# pattern_match(file, pattern) => boolean
|
204
|
-
#
|
204
|
+
#
|
205
205
|
# This method returns true if the file name matches the pattern.
|
206
206
|
# The pattern may be a String, a Regexp or a Proc.
|
207
207
|
#
|
@@ -219,7 +219,7 @@ module Buildr #:nodoc:
|
|
219
219
|
raise "Cannot interpret pattern #{pattern}"
|
220
220
|
end
|
221
221
|
end
|
222
|
-
|
222
|
+
|
223
223
|
private
|
224
224
|
def copy_map
|
225
225
|
sources.each { |source| raise "Source directory #{source} doesn't exist" unless File.exist?(source.to_s) }
|
data/lib/buildr/core/jrebel.rb
CHANGED
data/lib/buildr/core/linux.rb
CHANGED
data/lib/buildr/core/run.rb
CHANGED
data/lib/buildr/core/shell.rb
CHANGED
data/lib/buildr/groovy/doc.rb
CHANGED
data/lib/buildr/ide/eclipse.rb
CHANGED
data/lib/buildr/ide/idea.rb
CHANGED
@@ -658,7 +658,9 @@ module Buildr #:nodoc:
|
|
658
658
|
end
|
659
659
|
|
660
660
|
def add_default_configuration(type, factory_name)
|
661
|
-
add_configuration(nil, type, factory_name)
|
661
|
+
add_configuration(nil, type, factory_name, true) do |xml|
|
662
|
+
yield xml if block_given?
|
663
|
+
end
|
662
664
|
end
|
663
665
|
|
664
666
|
def add_postgres_data_source(name, options = {})
|
@@ -837,6 +839,40 @@ module Buildr #:nodoc:
|
|
837
839
|
end
|
838
840
|
end
|
839
841
|
|
842
|
+
def add_default_testng_configuration(options = {})
|
843
|
+
jvm_args = options[:jvm_args] || '-ea'
|
844
|
+
dir = options[:dir] || '$PROJECT_DIR$'
|
845
|
+
|
846
|
+
add_default_configuration('TestNG', 'TestNG') do |xml|
|
847
|
+
xml.extension(:name => 'coverage', :enabled => 'false', :merge => 'false', :sample_coverage => 'true', :runner => 'idea')
|
848
|
+
xml.module(:name => '')
|
849
|
+
xml.option(:name => 'ALTERNATIVE_JRE_PATH_ENABLED', :value => 'false')
|
850
|
+
xml.option(:name => 'ALTERNATIVE_JRE_PATH')
|
851
|
+
xml.option(:name => 'SUITE_NAME')
|
852
|
+
xml.option(:name => 'PACKAGE_NAME')
|
853
|
+
xml.option(:name => 'MAIN_CLASS_NAME')
|
854
|
+
xml.option(:name => 'METHOD_NAME')
|
855
|
+
xml.option(:name => 'GROUP_NAME')
|
856
|
+
xml.option(:name => 'TEST_OBJECT', :value => 'CLASS')
|
857
|
+
xml.option(:name => 'VM_PARAMETERS', :value => jvm_args)
|
858
|
+
xml.option(:name => 'PARAMETERS')
|
859
|
+
xml.option(:name => 'WORKING_DIRECTORY', :value => dir)
|
860
|
+
xml.option(:name => 'OUTPUT_DIRECTORY')
|
861
|
+
xml.option(:name => 'ANNOTATION_TYPE')
|
862
|
+
xml.option(:name => 'ENV_VARIABLES')
|
863
|
+
xml.option(:name => 'PASS_PARENT_ENVS', :value => 'true')
|
864
|
+
xml.option(:name => 'TEST_SEARCH_SCOPE') do |opt|
|
865
|
+
opt.value(:defaultName => 'moduleWithDependencies')
|
866
|
+
end
|
867
|
+
xml.option(:name => 'USE_DEFAULT_REPORTERS', :value => 'false')
|
868
|
+
xml.option(:name => 'PROPERTIES_FILE')
|
869
|
+
xml.envs
|
870
|
+
xml.properties
|
871
|
+
xml.listeners
|
872
|
+
xml.method
|
873
|
+
end
|
874
|
+
end
|
875
|
+
|
840
876
|
protected
|
841
877
|
|
842
878
|
def artifact_content(xml, project, projects, options)
|
@@ -942,13 +978,13 @@ module Buildr #:nodoc:
|
|
942
978
|
end
|
943
979
|
end
|
944
980
|
|
945
|
-
if mappings.size
|
946
|
-
|
947
|
-
|
948
|
-
|
949
|
-
|
950
|
-
|
951
|
-
|
981
|
+
return nil if 0 == mappings.size
|
982
|
+
|
983
|
+
create_component("VcsDirectoryMappings") do |xml|
|
984
|
+
mappings.each_pair do |dir, vcs_type|
|
985
|
+
resolved_dir = resolve_path(dir)
|
986
|
+
mapped_dir = resolved_dir == '$PROJECT_DIR$/.' ? buildr_project.base_dir : resolved_dir
|
987
|
+
xml.mapping :directory => mapped_dir, :vcs => vcs_type
|
952
988
|
end
|
953
989
|
end
|
954
990
|
end
|
data/lib/buildr/java/bdd.rb
CHANGED
data/lib/buildr/java/commands.rb
CHANGED
@@ -110,7 +110,7 @@ module Java
|
|
110
110
|
# set new cmd line.
|
111
111
|
cmd_args = [tmp.path]
|
112
112
|
end
|
113
|
-
|
113
|
+
|
114
114
|
unless Buildr.application.options.dryrun
|
115
115
|
info "Running #{name}" if name && options[:verbose]
|
116
116
|
block = lambda { |ok, res| fail "Failed to execute #{name}, see errors above" unless ok } unless block
|
@@ -121,7 +121,7 @@ module Java
|
|
121
121
|
end
|
122
122
|
ensure
|
123
123
|
unless tmp.nil?
|
124
|
-
tmp.close
|
124
|
+
tmp.close
|
125
125
|
tmp.unlink
|
126
126
|
end
|
127
127
|
end
|
@@ -281,4 +281,3 @@ module Java
|
|
281
281
|
end
|
282
282
|
|
283
283
|
end
|
284
|
-
|
data/lib/buildr/java/jruby.rb
CHANGED
@@ -57,10 +57,10 @@ module Java
|
|
57
57
|
# Since we already have a JVM loaded, we can use it to guess where JAVA_HOME is.
|
58
58
|
# We set JAVA_HOME early so we can use it without calling Java.load first.
|
59
59
|
ENV['JAVA_HOME'] ||= java.lang.System.getProperty("java.home")
|
60
|
-
|
60
|
+
|
61
61
|
# This version is the minimal version Buildr will support.
|
62
62
|
# Any older version of JRuby will raise an exception.
|
63
|
-
JRUBY_MIN_VERSION = '1.5.1'
|
63
|
+
JRUBY_MIN_VERSION = '1.5.1'
|
64
64
|
raise "JRuby must be at least at version #{JRUBY_MIN_VERSION}" unless JRUBY_VERSION >= JRUBY_MIN_VERSION
|
65
65
|
|
66
66
|
class << self
|
@@ -71,7 +71,7 @@ public class JavaTestFilter {
|
|
71
71
|
}
|
72
72
|
return this;
|
73
73
|
}
|
74
|
-
|
74
|
+
|
75
75
|
public JavaTestFilter addFields(String[] names) {
|
76
76
|
for (int i = names.length; i -- > 0;) {
|
77
77
|
String name = names[i];
|
@@ -79,7 +79,7 @@ public class JavaTestFilter {
|
|
79
79
|
}
|
80
80
|
return this;
|
81
81
|
}
|
82
|
-
|
82
|
+
|
83
83
|
private boolean isTest(Class cls) {
|
84
84
|
if (Modifier.isAbstract(cls.getModifiers()) || !Modifier.isPublic(cls.getModifiers()))
|
85
85
|
return false;
|
@@ -89,12 +89,12 @@ public class JavaTestFilter {
|
|
89
89
|
if (iface.isAssignableFrom(cls)) { return true; }
|
90
90
|
}
|
91
91
|
}
|
92
|
-
if (classAnnotations != null) {
|
92
|
+
if (classAnnotations != null) {
|
93
93
|
for (Iterator it = classAnnotations.iterator(); it.hasNext(); ) {
|
94
94
|
Class annotation = (Class) it.next();
|
95
95
|
if (cls.isAnnotationPresent(annotation)) { return true; }
|
96
96
|
}
|
97
|
-
}
|
97
|
+
}
|
98
98
|
if (methodAnnotations != null) {
|
99
99
|
Method[] methods = cls.getMethods();
|
100
100
|
for (int j = methods.length ; j-- > 0 ;) {
|
@@ -134,7 +134,7 @@ public class JavaTestFilter {
|
|
134
134
|
|
135
135
|
}
|
136
136
|
|
137
|
-
/*
|
137
|
+
/*
|
138
138
|
* Local Variables:
|
139
139
|
* indent-tabs-mode: nil
|
140
140
|
* c-basic-offset: 2
|
data/lib/buildr/java/tests.rb
CHANGED
@@ -1,17 +1,14 @@
|
|
1
|
-
|
2
|
-
MouseRunner.com Green/Red icons
|
3
|
-
-------------------------------
|
4
|
-
|
5
|
-
The graphics contained in the 'completed.png' and 'failed.png' files are
|
6
|
-
licensed under the Creative Commons Attribution-ShareAlike 2.5 License
|
7
|
-
|
8
|
-
Furthermore,
|
9
|
-
You may not claim the works as your own.
|
10
|
-
You must provide a link back to www.MouseRunner.com when using on a website,
|
11
|
-
for commercial purposes, and for applications.
|
12
|
-
|
13
|
-
Visit the address below to learn more about the Creative Commons license.
|
14
|
-
http://creativecommons.org/licenses/by-nc-sa/2.5/legalcode
|
15
|
-
|
16
|
-
|
17
|
-
|
1
|
+
|
2
|
+
MouseRunner.com Green/Red icons
|
3
|
+
-------------------------------
|
4
|
+
|
5
|
+
The graphics contained in the 'completed.png' and 'failed.png' files are
|
6
|
+
licensed under the Creative Commons Attribution-ShareAlike 2.5 License
|
7
|
+
|
8
|
+
Furthermore,
|
9
|
+
You may not claim the works as your own.
|
10
|
+
You must provide a link back to www.MouseRunner.com when using on a website,
|
11
|
+
for commercial purposes, and for applications.
|
12
|
+
|
13
|
+
Visit the address below to learn more about the Creative Commons license.
|
14
|
+
http://creativecommons.org/licenses/by-nc-sa/2.5/legalcode
|
data/lib/buildr/scala/bdd.rb
CHANGED
Binary file
|
data/lib/buildr/version.rb
CHANGED
data/rakelib/metrics.rake
CHANGED
@@ -22,12 +22,12 @@ namespace 'metrics' do
|
|
22
22
|
base_dir = Pathname.new(File.expand_path(File.join(File.dirname(__FILE__), '..')))
|
23
23
|
rb_files = %w(lib addon).collect { |folder|
|
24
24
|
FileList[File.expand_path(File.join(File.dirname(__FILE__), '..', folder, '**', '*.rb'))]
|
25
|
-
}.flatten.collect {|path|
|
25
|
+
}.flatten.collect {|path|
|
26
26
|
Pathname.new(path).relative_path_from(base_dir).to_s
|
27
27
|
}
|
28
28
|
SaikuroRunner.new.run(rb_files, output_dir)
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
desc 'generate ccn treemap'
|
32
32
|
task 'ccn_treemap' do
|
33
33
|
require 'saikuro_treemap'
|
@@ -36,4 +36,4 @@ namespace 'metrics' do
|
|
36
36
|
end
|
37
37
|
|
38
38
|
desc 'Run all metrics tools'
|
39
|
-
task 'metrics' => %w(metrics:saikuro metrics:ccn_treemap)
|
39
|
+
task 'metrics' => %w(metrics:saikuro metrics:ccn_treemap)
|