metric_fu 4.4.2 → 4.4.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MTFmYmRkMmExNTg1MDBhMDI0MTQ1OTFiMGJkNDc1MTY2OTdlYTJiNQ==
5
- data.tar.gz: !binary |-
6
- ZDQ5OGMzN2QwNWE0M2JmMTM0ZTljYTA4OTFhYjBhNzgzZGVkYjYzMA==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- ZTFlNDhmNDE1NjM1ZmMxODlmYjQ1NDZjMDI4MWE4NzBiMDFjNDc5YTBkODc2
10
- NzZkZTA1ZTA1OWRhYjYyZmZmZDcxOGVmMGE1ODcxY2E1ZWEzMTliNDUxOTgx
11
- NDdkYTNkNGViYTBmZmFhYWFjYzFlNTk1ZTNkZGRlOTFhY2VmNTc=
12
- data.tar.gz: !binary |-
13
- OTY3Y2ZkMGVlZmJjNzM4MDQxZmMyNWIyNjU1OThmZTVmZDI4YTQyZjYxMDJi
14
- MjYxMGQyYjM4YTcyNjliYTdlMjlkYzFmMjhlYjA0OTA2OTJiNDI1NzUwODM4
15
- MzZkOTkyMzBmM2Q1N2IwYWNmMjc5MDQ2ZDJlYTFlNjhiNjkwZWI=
2
+ SHA1:
3
+ metadata.gz: 8b6f6cc83dd1f84b3b744197df56b2fa179390c7
4
+ data.tar.gz: 2059f5c9368c4246db6d724ed18396a0fa891b17
5
+ SHA512:
6
+ metadata.gz: 07b0c5284d8c083cb8259d529450960aa9a842d2fe835e7daa3428c38190c96b23efbc3d55f4fa39289d4c2bb24deab2b829eeabfde0023d40e9c250664b928a
7
+ data.tar.gz: 1bc9bf9f893e4f8745b30eec8e508d72245341563d208757b3540511c86ec0b5dfc17e25354027564b78029b76a8dd173366f61f497901b7bea25baa366303e7
data/HISTORY.md CHANGED
@@ -10,6 +10,14 @@ As such, a _Feature_ would map to either major or minor. A _bug fix_ to a patch.
10
10
  * Fixes
11
11
  * Misc
12
12
 
13
+ ### MetricFu [4.4.3 / 2013-09-25](https://github.com/metricfu/metric_fu/compare/v4.4.1...v4.4.3)
14
+
15
+ * Features
16
+ * Fixes
17
+ * Scratch directory no longer dependent on generator class name. Saikuro works again! (Benjamin Fleischer, #141)
18
+ * Misc
19
+ * Metric scratch directory now set via Metric `run_options[:output_directory] || MetricFu::Io::FileSystem.scratch_directory(metric)` (Benjamin Fleischer, #141)
20
+
13
21
  ### MetricFu [4.4.2 / 2013-09-25](https://github.com/metricfu/metric_fu/compare/v4.4.1...v4.4.2)
14
22
 
15
23
  * Features
@@ -0,0 +1 @@
1
+ 1beb22d0d940c4d5297efbfa5a2c6ad46a5f64fd68a0695bc1d81a7b3d85fdafc9004ede390272f2602a2a87f306137fccf53e8225b9dd9943e87ef5c7103c78
@@ -80,7 +80,7 @@ module MetricFu
80
80
  # TODO: Remove calls to self and/or allow querying the
81
81
  # template/filesystem/metric/graph/environment, etc settings
82
82
  # from the configuration instance
83
- MetricFu::Io::FileSystem.set_directories(self)
83
+ MetricFu::Io::FileSystem.set_directories
84
84
  MetricFu::Formatter::Templates.configure_template(self)
85
85
  @formatters = []
86
86
  @graph_engine_config = MetricFu::GraphEngine.new
@@ -107,6 +107,7 @@ module MetricFu
107
107
  end
108
108
 
109
109
  def configure_metrics
110
+ MetricFu::Io::FileSystem.set_directories
110
111
  MetricFu::Metric.metrics.each do |metric|
111
112
  if block_given?
112
113
  yield metric
@@ -18,12 +18,16 @@ module MetricFu
18
18
  def directory(name)
19
19
  directories.fetch(name) { raise "No such directory configured: #{name}" }
20
20
  end
21
+
22
+ def scratch_directory(name)
23
+ File.join(directory('scratch_directory'), name.to_s)
24
+ end
25
+
21
26
  def file_globs_to_ignore
22
27
  @file_globs_to_ignore ||= []
23
28
  end
24
29
 
25
- # TODO: Remove call to config
26
- def set_directories(config)
30
+ def set_directories
27
31
  @directories = {}
28
32
  @directories['base_directory'] = MetricFu.artifact_dir
29
33
  @directories['scratch_directory'] = MetricFu.scratch_dir
@@ -35,7 +39,7 @@ module MetricFu
35
39
  # TODO Though this is true of the general AwesomeTemplate, it is not necessarily true of templates within each Metric. Each metric should probably know how to use AwesomeTemplate (or whatever)
36
40
  @directories['template_directory'] = File.join(@directories.fetch('root_directory'), 'lib', 'templates')
37
41
  @file_globs_to_ignore = []
38
- set_code_dirs(config)
42
+ set_code_dirs
39
43
  end
40
44
 
41
45
  def create_directories(*dirs)
@@ -47,7 +51,7 @@ module MetricFu
47
51
  end
48
52
 
49
53
  # Add the 'app' directory if we're running within rails.
50
- def set_code_dirs(config)
54
+ def set_code_dirs
51
55
  @directories['code_dirs'] = %w(app lib).select{|dir| Dir.exists?(dir) }
52
56
  end
53
57
 
@@ -24,20 +24,18 @@ module MetricFu
24
24
  #
25
25
  # Based on the class name of the concrete class implementing a
26
26
  # Generator, the Generator class will create a 'metric_directory'
27
- # named after the class under the MetricFu.scratch_directory, where
27
+ # named after the metric under the scratch_directory, where
28
28
  # any output from the #emit method should go.
29
29
  #
30
- # It will also create the MetricFu.output_directory if neccessary, and
30
+ # It will also create the output_directory if neccessary, and
31
31
  # in general setup the directory structure that the MetricFu system
32
32
  # expects.
33
33
  class Generator
34
+
34
35
  attr_reader :result, :template, :options
35
36
 
36
37
  def initialize(options={})
37
38
  @options = options
38
- create_metric_dir_if_missing
39
- create_output_dir_if_missing
40
- create_data_dir_if_missing
41
39
  end
42
40
 
43
41
  @generators = []
@@ -54,46 +52,18 @@ module MetricFu
54
52
  @generators << subclass
55
53
  end
56
54
 
57
- # Provides the unqualified class name of an implemented concrete
58
- # class, as a string. For example:
59
- #
60
- # class Flay < Generator; end
61
- # klass = Flay.new
62
- # klass.class_name
63
- # > "flay"
64
- #
65
- # @return String
66
- # The unqualified class name of this concrete class, returned
67
- # as a string.
68
- def self.class_name
69
- self.to_s.split('::').last.downcase
70
- end
71
-
72
55
  # Returns the directory where the Generator will write any output
73
56
  def self.metric_directory
74
- File.join(MetricFu::Io::FileSystem.directory('scratch_directory'), class_name)
75
- end
76
-
77
- def create_metric_dir_if_missing #:nodoc:
78
- unless File.directory?(metric_directory)
79
- FileUtils.mkdir_p(metric_directory, :verbose => false)
80
- end
81
- end
82
-
83
- def create_output_dir_if_missing #:nodoc:
84
- unless File.directory?(MetricFu::Io::FileSystem.directory('output_directory'))
85
- FileUtils.mkdir_p(MetricFu::Io::FileSystem.directory('output_directory'), :verbose => false)
86
- end
87
- end
88
-
89
- def create_data_dir_if_missing #:nodoc:
90
- unless File.directory?(MetricFu::Io::FileSystem.directory('data_directory'))
91
- FileUtils.mkdir_p(MetricFu::Io::FileSystem.directory('data_directory'), :verbose => false)
92
- end
57
+ @metric_directory ||=
58
+ MetricFu::Metric.get_metric(metric).run_options[:output_directory] ||
59
+ begin
60
+ metric_directory = MetricFu::Io::FileSystem.scratch_directory(metric)
61
+ FileUtils.mkdir_p(metric_directory, :verbose => false)
62
+ end
93
63
  end
94
64
 
95
- # @return String
96
- # The path of the metric directory this class is using.
65
+ # @return [String]
66
+ # The path of the metric directory this class is using.
97
67
  def metric_directory
98
68
  self.class.metric_directory
99
69
  end
@@ -6,13 +6,15 @@ module MetricFu
6
6
  end
7
7
 
8
8
  def default_run_options
9
- { :output_directory => "#{MetricFu::Io::FileSystem.directory('scratch_directory')}/saikuro",
10
- :input_directory =>MetricFu::Io::FileSystem.directory('code_dirs'),
11
- :cyclo => "",
12
- :filter_cyclo => "0",
13
- :warn_cyclo => "5",
14
- :error_cyclo => "7",
15
- :formater => "text"}
9
+ {
10
+ :output_directory => MetricFu::Io::FileSystem.scratch_directory(name),
11
+ :input_directory =>MetricFu::Io::FileSystem.directory('code_dirs'),
12
+ :cyclo => "",
13
+ :filter_cyclo => "0",
14
+ :warn_cyclo => "5",
15
+ :error_cyclo => "7",
16
+ :formater => "text",
17
+ }
16
18
  end
17
19
 
18
20
  def has_graph?
@@ -1,3 +1,3 @@
1
1
  module MetricFu
2
- VERSION = "4.4.2"
2
+ VERSION = "4.4.3"
3
3
  end
@@ -27,52 +27,13 @@ describe MetricFu::Generator do
27
27
  @concrete_class = ConcreteClass.new
28
28
  end
29
29
 
30
- describe "ConcreteClass#class_name" do
31
- it "should be 'concreteclass'" do
32
- ConcreteClass.class_name.should == 'concreteclass'
33
- end
34
- end
35
-
36
30
  describe "ConcreteClass#metric_directory" do
37
31
  it "should be 'tmp/metric_fu/scratch/concreteclass'" do
32
+ concrete_metric = double('concrete_metric')
33
+ MetricFu::Metric.should_receive(:get_metric).with(:concrete).and_return(concrete_metric)
34
+ concrete_metric.should_receive(:run_options).and_return({})
38
35
  compare_paths(ConcreteClass.metric_directory,
39
- "tmp/metric_fu/scratch/concreteclass")
40
- end
41
- end
42
-
43
- describe "#create_metric_dir_if_missing " do
44
- describe "when the metric_dir exists " do
45
- it 'should not call mkdir_p on FileUtils' do
46
- File.stub(:directory?).and_return(true)
47
- FileUtils.should_not_receive(:mkdir_p)
48
- @concrete_class.create_metric_dir_if_missing
49
- end
50
- end
51
-
52
- describe "when the metric_dir does not exist " do
53
- it 'should call mkdir_p on FileUtils' do
54
- File.stub(:directory?).and_return(false)
55
- FileUtils.should_receive(:mkdir_p)
56
- @concrete_class.create_metric_dir_if_missing
57
- end
58
- end
59
- end
60
-
61
- describe "#create_output_dir_if_missing" do
62
- describe "when the output_dir exists " do
63
- it 'should not call mkdir_p on FileUtils' do
64
- File.stub(:directory?).and_return(true)
65
- FileUtils.should_not_receive(:mkdir_p)
66
- @concrete_class.create_output_dir_if_missing
67
- end
68
- end
69
-
70
- describe "when the output_dir does not exist " do
71
- it 'should call mkdir_p on FileUtils' do
72
- File.stub(:directory?).and_return(false)
73
- FileUtils.should_receive(:mkdir_p)
74
- @concrete_class.create_output_dir_if_missing
75
- end
36
+ "tmp/metric_fu/scratch/concrete")
76
37
  end
77
38
  end
78
39
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metric_fu
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.4.2
4
+ version: 4.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jake Scruggs
@@ -19,13 +19,13 @@ authors:
19
19
  autorequire:
20
20
  bindir: bin
21
21
  cert_chain: []
22
- date: 2013-09-25 00:00:00.000000000 Z
22
+ date: 2013-09-26 00:00:00.000000000 Z
23
23
  dependencies:
24
24
  - !ruby/object:Gem::Dependency
25
25
  name: flay
26
26
  requirement: !ruby/object:Gem::Requirement
27
27
  requirements:
28
- - - ! '>='
28
+ - - '>='
29
29
  - !ruby/object:Gem::Version
30
30
  version: 2.0.1
31
31
  - - ~>
@@ -35,7 +35,7 @@ dependencies:
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ! '>='
38
+ - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: 2.0.1
41
41
  - - ~>
@@ -59,7 +59,7 @@ dependencies:
59
59
  name: flog
60
60
  requirement: !ruby/object:Gem::Requirement
61
61
  requirements:
62
- - - ! '>='
62
+ - - '>='
63
63
  - !ruby/object:Gem::Version
64
64
  version: 4.1.1
65
65
  - - ~>
@@ -69,7 +69,7 @@ dependencies:
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - ! '>='
72
+ - - '>='
73
73
  - !ruby/object:Gem::Version
74
74
  version: 4.1.1
75
75
  - - ~>
@@ -79,7 +79,7 @@ dependencies:
79
79
  name: reek
80
80
  requirement: !ruby/object:Gem::Requirement
81
81
  requirements:
82
- - - ! '>='
82
+ - - '>='
83
83
  - !ruby/object:Gem::Version
84
84
  version: 1.3.3
85
85
  - - ~>
@@ -89,7 +89,7 @@ dependencies:
89
89
  prerelease: false
90
90
  version_requirements: !ruby/object:Gem::Requirement
91
91
  requirements:
92
- - - ! '>='
92
+ - - '>='
93
93
  - !ruby/object:Gem::Version
94
94
  version: 1.3.3
95
95
  - - ~>
@@ -99,7 +99,7 @@ dependencies:
99
99
  name: cane
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - ! '>='
102
+ - - '>='
103
103
  - !ruby/object:Gem::Version
104
104
  version: 2.5.2
105
105
  - - ~>
@@ -109,7 +109,7 @@ dependencies:
109
109
  prerelease: false
110
110
  version_requirements: !ruby/object:Gem::Requirement
111
111
  requirements:
112
- - - ! '>='
112
+ - - '>='
113
113
  - !ruby/object:Gem::Version
114
114
  version: 2.5.2
115
115
  - - ~>
@@ -119,7 +119,7 @@ dependencies:
119
119
  name: rails_best_practices
120
120
  requirement: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ! '>='
122
+ - - '>='
123
123
  - !ruby/object:Gem::Version
124
124
  version: 1.14.3
125
125
  - - ~>
@@ -129,7 +129,7 @@ dependencies:
129
129
  prerelease: false
130
130
  version_requirements: !ruby/object:Gem::Requirement
131
131
  requirements:
132
- - - ! '>='
132
+ - - '>='
133
133
  - !ruby/object:Gem::Version
134
134
  version: 1.14.3
135
135
  - - ~>
@@ -139,14 +139,14 @@ dependencies:
139
139
  name: metric_fu-Saikuro
140
140
  requirement: !ruby/object:Gem::Requirement
141
141
  requirements:
142
- - - ! '>='
142
+ - - '>='
143
143
  - !ruby/object:Gem::Version
144
144
  version: 1.1.1.0
145
145
  type: :runtime
146
146
  prerelease: false
147
147
  version_requirements: !ruby/object:Gem::Requirement
148
148
  requirements:
149
- - - ! '>='
149
+ - - '>='
150
150
  - !ruby/object:Gem::Version
151
151
  version: 1.1.1.0
152
152
  - !ruby/object:Gem::Dependency
@@ -181,56 +181,56 @@ dependencies:
181
181
  name: redcard
182
182
  requirement: !ruby/object:Gem::Requirement
183
183
  requirements:
184
- - - ! '>='
184
+ - - '>='
185
185
  - !ruby/object:Gem::Version
186
186
  version: '0'
187
187
  type: :runtime
188
188
  prerelease: false
189
189
  version_requirements: !ruby/object:Gem::Requirement
190
190
  requirements:
191
- - - ! '>='
191
+ - - '>='
192
192
  - !ruby/object:Gem::Version
193
193
  version: '0'
194
194
  - !ruby/object:Gem::Dependency
195
195
  name: coderay
196
196
  requirement: !ruby/object:Gem::Requirement
197
197
  requirements:
198
- - - ! '>='
198
+ - - '>='
199
199
  - !ruby/object:Gem::Version
200
200
  version: '0'
201
201
  type: :runtime
202
202
  prerelease: false
203
203
  version_requirements: !ruby/object:Gem::Requirement
204
204
  requirements:
205
- - - ! '>='
205
+ - - '>='
206
206
  - !ruby/object:Gem::Version
207
207
  version: '0'
208
208
  - !ruby/object:Gem::Dependency
209
209
  name: bluff
210
210
  requirement: !ruby/object:Gem::Requirement
211
211
  requirements:
212
- - - ! '>='
212
+ - - '>='
213
213
  - !ruby/object:Gem::Version
214
214
  version: '0'
215
215
  type: :runtime
216
216
  prerelease: false
217
217
  version_requirements: !ruby/object:Gem::Requirement
218
218
  requirements:
219
- - - ! '>='
219
+ - - '>='
220
220
  - !ruby/object:Gem::Version
221
221
  version: '0'
222
222
  - !ruby/object:Gem::Dependency
223
223
  name: multi_json
224
224
  requirement: !ruby/object:Gem::Requirement
225
225
  requirements:
226
- - - ! '>='
226
+ - - '>='
227
227
  - !ruby/object:Gem::Version
228
228
  version: '0'
229
229
  type: :runtime
230
230
  prerelease: false
231
231
  version_requirements: !ruby/object:Gem::Requirement
232
232
  requirements:
233
- - - ! '>='
233
+ - - '>='
234
234
  - !ruby/object:Gem::Version
235
235
  version: '0'
236
236
  description: Code metrics from Flog, Flay, Saikuro, Churn, Reek, Roodi, Code Statistics,
@@ -279,6 +279,7 @@ files:
279
279
  - checksum/metric_fu-4.3.1.gem.sha512
280
280
  - checksum/metric_fu-4.4.0.gem.sha512
281
281
  - checksum/metric_fu-4.4.1.gem.sha512
282
+ - checksum/metric_fu-4.4.2.gem.sha512
282
283
  - config/roodi_config.yml
283
284
  - gem_tasks/build.rake
284
285
  - gemfiles/Gemfile.travis
@@ -488,17 +489,17 @@ require_paths:
488
489
  - lib
489
490
  required_ruby_version: !ruby/object:Gem::Requirement
490
491
  requirements:
491
- - - ! '>='
492
+ - - '>='
492
493
  - !ruby/object:Gem::Version
493
494
  version: 1.9.0
494
495
  required_rubygems_version: !ruby/object:Gem::Requirement
495
496
  requirements:
496
- - - ! '>='
497
+ - - '>='
497
498
  - !ruby/object:Gem::Version
498
499
  version: 1.3.6
499
500
  requirements: []
500
501
  rubyforge_project: metric_fu
501
- rubygems_version: 2.0.8
502
+ rubygems_version: 2.0.3
502
503
  signing_key:
503
504
  specification_version: 4
504
505
  summary: A fistful of code metrics, with awesome templates and graphs