techcor 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. data/Gemfile +22 -0
  2. data/Gemfile.lock +96 -0
  3. data/README.md +27 -0
  4. data/Rakefile +45 -0
  5. data/bin/tc +6 -0
  6. data/config/cucumber.yml +2 -0
  7. data/config/mongoid.yml +29 -0
  8. data/config/mongoid.yml.sample +29 -0
  9. data/db/seed.rb +37 -0
  10. data/features/add_metric.feature +9 -0
  11. data/features/add_project.feature +9 -0
  12. data/features/console_interface.feature +58 -0
  13. data/features/describe_project.feature +25 -0
  14. data/features/edit_property.feature +9 -0
  15. data/features/list_projects.feature +69 -0
  16. data/features/property_history.feature +51 -0
  17. data/features/rake.feature +11 -0
  18. data/features/seeds.feature +9 -0
  19. data/features/step_definitions/add_project.rb +22 -0
  20. data/features/step_definitions/console_interface.rb +7 -0
  21. data/features/step_definitions/list_projects.rb +3 -0
  22. data/features/step_definitions/property_history.rb +4 -0
  23. data/features/step_definitions/rake.rb +3 -0
  24. data/features/support/env.rb +9 -0
  25. data/lib/commands/add_metric.rb +17 -0
  26. data/lib/commands/add_project.rb +5 -0
  27. data/lib/commands/describe_project.rb +26 -0
  28. data/lib/commands/edit_property.rb +9 -0
  29. data/lib/commands/gli/add.rb +12 -0
  30. data/lib/commands/gli/add_metric.rb +23 -0
  31. data/lib/commands/gli/describe.rb +16 -0
  32. data/lib/commands/gli/edit_property.rb +22 -0
  33. data/lib/commands/gli/history.rb +19 -0
  34. data/lib/commands/gli/hooks.rb +8 -0
  35. data/lib/commands/gli/list.rb +14 -0
  36. data/lib/commands/gli/program.rb +5 -0
  37. data/lib/commands/list_projects.rb +32 -0
  38. data/lib/commands/view_history.rb +37 -0
  39. data/lib/console_formatter.rb +18 -0
  40. data/lib/gli_interface.rb +15 -0
  41. data/lib/metrics/boolean_metric.rb +7 -0
  42. data/lib/metrics/metric.rb +24 -0
  43. data/lib/metrics/number_metric.rb +7 -0
  44. data/lib/metrics/string_metric.rb +7 -0
  45. data/lib/project.rb +15 -0
  46. data/lib/project_catalog.rb +34 -0
  47. data/lib/property_value.rb +3 -0
  48. data/lib/storage/metric_mongo.rb +11 -0
  49. data/lib/storage/project_mongo.rb +9 -0
  50. data/lib/storage/property_value_mongo.rb +10 -0
  51. data/lib/tc/version.rb +9 -0
  52. data/lib/tc.rb +27 -0
  53. data/spec/integration/mongo_spec.rb +19 -0
  54. data/spec/lib/commands/add_metric_spec.rb +31 -0
  55. data/spec/lib/commands/add_project_spec.rb +10 -0
  56. data/spec/lib/commands/describe_project_spec.rb +42 -0
  57. data/spec/lib/commands/edit_property_spec.rb +19 -0
  58. data/spec/lib/commands/list_projects_spec.rb +47 -0
  59. data/spec/lib/commands/view_history_spec.rb +64 -0
  60. data/spec/lib/console_formatter_spec.rb +29 -0
  61. data/spec/lib/metrics/boolean_metric_spec.rb +9 -0
  62. data/spec/lib/metrics/metric_spec.rb +26 -0
  63. data/spec/lib/metrics/number_metric_spec.rb +8 -0
  64. data/spec/lib/metrics/string_metric_spec.rb +7 -0
  65. data/spec/lib/project_catalog_spec.rb +23 -0
  66. data/spec/lib/project_spec.rb +45 -0
  67. data/spec/lib/storage/metric_mongo_spec.rb +12 -0
  68. data/spec/lib/storage/project_mongo_spec.rb +11 -0
  69. data/spec/lib/storage/property_value_mongo_spec.rb +11 -0
  70. data/spec/spec_helper.rb +8 -0
  71. metadata +313 -0
@@ -0,0 +1,64 @@
1
+ require 'spec_helper'
2
+
3
+ describe ViewHistory do
4
+ it 'presents properties to table view' do
5
+ result = stub(:result)
6
+
7
+ records = stub(:records)
8
+ formatter = stub(:formatter).tap { |f| f.should_receive(:present).with(records) { result } }
9
+
10
+ subject.call(formatter, records).should == result
11
+ end
12
+
13
+ it 'does not present unknown properties' do
14
+ formatter = stub(:formatter).tap { |f| f.should_receive(:present).with([]) }
15
+ project = stub(:project).tap { |p| p.should_receive(:property) { nil } }
16
+ subject.stub(:project => project)
17
+ subject.stub(:properties => ['Unknown Property'])
18
+
19
+ subject.call(formatter)
20
+ end
21
+
22
+ it 'passes format to console formatter' do
23
+ format = stub(:format)
24
+ ConsoleFormatter.should_receive(:new).with(format)
25
+
26
+ subject.formatter(format)
27
+ end
28
+
29
+ it 'collects values from metrics' do
30
+ metrics = [stub(:metric, :values => [1, 2]), stub(:metric, :values => [3])]
31
+
32
+ subject.records(metrics).should == [1, 2, 3]
33
+ end
34
+
35
+ it 'collects metrics from project' do
36
+ project = stub(:project)
37
+ metric1, metric2 = stub(:metric), stub(:metric)
38
+ project.should_receive(:property).with('metric1') { metric1 }
39
+ project.should_receive(:property).with('metric2') { metric2 }
40
+ subject.metrics(project, %w(metric1 metric2)).should == [metric1, metric2]
41
+ end
42
+
43
+ it 'constructs format for console formatter' do
44
+ metrics = [stub(:name => "name1"), stub(:name => "name2")]
45
+ subject.format("DATE_FORMAT", metrics).should == {
46
+ 'Date' => "created_at.strftime('DATE_FORMAT')",
47
+ 'name1' => "metric.name == 'name1' ? value : ''",
48
+ 'name2' => "metric.name == 'name2' ? value : ''"
49
+ }
50
+ end
51
+
52
+ it 'finds project by its name' do
53
+ name, result = stub(:name), stub(:result)
54
+ Project.should_receive(:find_by).with(name: name) { result }
55
+
56
+ subject.project(name).should == result
57
+ end
58
+
59
+ it 'lists all properties is none was specified directly' do
60
+ project = stub(:project, :metrics => [stub(:metric, :name => 'name1'), stub(:metric, :name => 'name2')])
61
+ subject.properties(project).should == %w(name1 name2)
62
+ end
63
+
64
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe ConsoleFormatter do
4
+ it 'renders prepared records with help of Hirb library' do
5
+ format = stub(:format, :keys => stub(:format_keys))
6
+ records = stub(:records)
7
+
8
+ subject.stub(:render_each => records)
9
+
10
+ Hirb::Helpers::AutoTable.should_receive(:render).with(records, fields: format.keys, resize: false)
11
+
12
+ subject.present(records, format)
13
+ end
14
+
15
+ it 'renders each record in collection' do
16
+ record = stub(:record)
17
+
18
+ subject.should_receive(:render_record).with(record).twice
19
+ subject.render_each([record, record])
20
+ end
21
+
22
+ it 'uses expressions in format to render each record' do
23
+ expression = stub(:expression)
24
+ format = {stub(:key) => expression}
25
+ record = stub(:record).tap { |p| p.should_receive(:instance_eval).with(expression) }
26
+
27
+ subject.render_record record, format
28
+ end
29
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe BooleanMetric do
4
+ specify { subject.convert(1).should == true }
5
+ specify { subject.convert('abc').should == true }
6
+ specify { subject.convert({}).should == true }
7
+ specify { subject.convert(false).should == false }
8
+ specify { subject.convert(nil).should == false }
9
+ end
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metric do
4
+ specify { subject.convert('1').should eq '1' }
5
+ specify { subject.convert('1abc').should eq '1abc' }
6
+ specify { subject.convert(1.2).should eq 1.2 }
7
+ specify { subject.convert({}).should eq({}) }
8
+
9
+ it 'returns last value' do
10
+ value = stub(:value)
11
+ subject.stub(:values => [stub, stub, stub(:last_value, :value => value)])
12
+ subject.value.should == value
13
+ end
14
+
15
+ it 'returns last updater' do
16
+ user = stub(:user)
17
+ subject.stub(:values => [stub, stub, stub(:last_value, :created_by => user)])
18
+ subject.last_updated_by.should == user
19
+ end
20
+
21
+ it 'returns last update date' do
22
+ date = stub(:date)
23
+ subject.stub(:values => [stub, stub, stub(:last_value, :created_at => date)])
24
+ subject.last_updated_at.should == date
25
+ end
26
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+
3
+ describe NumberMetric do
4
+ specify { subject.convert('1').should == 1 }
5
+ specify { subject.convert('1abc').should == 1 }
6
+ specify { subject.convert(1.2).should == 1.2 }
7
+ specify { subject.convert('abc').should == 0 }
8
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe StringMetric do
4
+ specify { subject.convert(1).should == '1' }
5
+ specify { subject.convert('1abc').should == '1abc' }
6
+ specify { subject.convert(1.2).should == '1.2' }
7
+ end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe ProjectCatalog do
4
+
5
+ subject {
6
+ ProjectCatalog.new.
7
+ add_project(Project.new(name: '1').add_metric(NumberMetric.new(name: 'length')).edit_property('length', 3, stub)).
8
+ add_project(Project.new(name: '3').add_metric(NumberMetric.new(name: 'length')).edit_property('length', 2, stub)).
9
+ add_project(Project.new(name: '2').add_metric(NumberMetric.new(name: 'length')).edit_property('length', 1, stub))
10
+ }
11
+
12
+ it 'searches projects by simple criteria' do
13
+ subject.projects('property("length").value >= 2').should have_exactly(2).items
14
+ end
15
+
16
+ it 'searches projects by complex criteria' do
17
+ subject.projects('property("length").value == 2 || property("length").value == 3').should have_exactly(2).items
18
+ end
19
+
20
+ it 'orders projects by name' do
21
+ subject.projects.collect(&:name).should == %w(1 2 3)
22
+ end
23
+ end
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+
3
+ describe Project do
4
+
5
+ describe 'metrics' do
6
+ it 'describes itself' do
7
+ subject.
8
+ add_metric(Metric.new(:name => stub)).
9
+ add_metric(Metric.new(:name => stub))
10
+
11
+ subject.metrics.should have(2).items
12
+ end
13
+ end
14
+
15
+ describe 'properties' do
16
+ context 'with one metric' do
17
+ let(:name) { stub(:name) }
18
+ let(:metric) { Metric.new(name: name) }
19
+ before { subject.add_metric(metric) }
20
+
21
+ it 'converts value before addition' do
22
+ value = stub
23
+ metric.should_receive(:convert).with(value)
24
+ subject.edit_property(name, value, stub)
25
+ end
26
+
27
+ it 'returns last value of the property history' do
28
+ value = 'v'
29
+ subject.edit_property(name, stub, stub).edit_property(name, value, stub)
30
+ subject.property(name).value.should be value
31
+ end
32
+ end
33
+
34
+ describe 'exceptional cases' do
35
+ it 'do not allow to modify unknown property' do
36
+ name, value = stub, stub
37
+ expect { subject.edit_property(name, value) }.to raise_error
38
+ end
39
+
40
+ it 'returns nil for unknown property' do
41
+ subject.property(stub).should be_nil
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metric do
4
+ it { should be_mongoid_document }
5
+ it { should be_timestamped_document }
6
+
7
+ it { should have_field(:name) }
8
+ it { should be_embedded_in(:project) }
9
+ it { should embed_many(:values).of_type(PropertyValue) }
10
+
11
+ it { should validate_uniqueness_of(:name) }
12
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Project do
4
+ it { should be_mongoid_document }
5
+ it { should be_timestamped_document }
6
+
7
+ it { should have_field(:name) }
8
+ it { should embed_many(:metrics) }
9
+
10
+ it { should validate_uniqueness_of(:name) }
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe PropertyValue do
4
+ it { should be_mongoid_document }
5
+ it { should be_timestamped_document }
6
+
7
+ it { should have_field(:value) }
8
+ it { should have_field(:created_by) }
9
+ it { should validate_presence_of(:created_by) }
10
+ it { should be_embedded_in(:metric) }
11
+ end
@@ -0,0 +1,8 @@
1
+ ENV['RACK_ENV'] = 'test'
2
+
3
+ require 'mongoid-rspec'
4
+ RSpec.configure do |configuration|
5
+ configuration.include Mongoid::Matchers
6
+ end
7
+
8
+ require_relative '../lib/tc'
metadata ADDED
@@ -0,0 +1,313 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: techcor
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Alexander Shestakov
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-06-24 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activesupport
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: mongoid
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 3.0.0.rc
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 3.0.0.rc
46
+ - !ruby/object:Gem::Dependency
47
+ name: bson_ext
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: hirb
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: gli
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: 2.0.0.rc
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 2.0.0.rc
94
+ - !ruby/object:Gem::Dependency
95
+ name: pry
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: rake
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: jeweler
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ - !ruby/object:Gem::Dependency
143
+ name: mongoid
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ~>
148
+ - !ruby/object:Gem::Version
149
+ version: 3.0.0.rc
150
+ type: :runtime
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ~>
156
+ - !ruby/object:Gem::Version
157
+ version: 3.0.0.rc
158
+ - !ruby/object:Gem::Dependency
159
+ name: bson_ext
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :runtime
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ - !ruby/object:Gem::Dependency
175
+ name: hirb
176
+ requirement: !ruby/object:Gem::Requirement
177
+ none: false
178
+ requirements:
179
+ - - ! '>='
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ type: :runtime
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - ! '>='
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ - !ruby/object:Gem::Dependency
191
+ name: gli
192
+ requirement: !ruby/object:Gem::Requirement
193
+ none: false
194
+ requirements:
195
+ - - ~>
196
+ - !ruby/object:Gem::Version
197
+ version: 2.0.0.rc
198
+ type: :runtime
199
+ prerelease: false
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ~>
204
+ - !ruby/object:Gem::Version
205
+ version: 2.0.0.rc
206
+ description: This gem provides 'tc' console utility, which allows to collect and manage
207
+ different metrics on software projects.
208
+ email: Maksar.mail@gmail.com
209
+ executables:
210
+ - tc
211
+ extensions: []
212
+ extra_rdoc_files:
213
+ - README.md
214
+ files:
215
+ - Gemfile
216
+ - Gemfile.lock
217
+ - README.md
218
+ - Rakefile
219
+ - bin/tc
220
+ - config/cucumber.yml
221
+ - config/mongoid.yml
222
+ - config/mongoid.yml.sample
223
+ - db/seed.rb
224
+ - features/add_metric.feature
225
+ - features/add_project.feature
226
+ - features/console_interface.feature
227
+ - features/describe_project.feature
228
+ - features/edit_property.feature
229
+ - features/list_projects.feature
230
+ - features/property_history.feature
231
+ - features/rake.feature
232
+ - features/seeds.feature
233
+ - features/step_definitions/add_project.rb
234
+ - features/step_definitions/console_interface.rb
235
+ - features/step_definitions/list_projects.rb
236
+ - features/step_definitions/property_history.rb
237
+ - features/step_definitions/rake.rb
238
+ - features/support/env.rb
239
+ - lib/commands/add_metric.rb
240
+ - lib/commands/add_project.rb
241
+ - lib/commands/describe_project.rb
242
+ - lib/commands/edit_property.rb
243
+ - lib/commands/gli/add.rb
244
+ - lib/commands/gli/add_metric.rb
245
+ - lib/commands/gli/describe.rb
246
+ - lib/commands/gli/edit_property.rb
247
+ - lib/commands/gli/history.rb
248
+ - lib/commands/gli/hooks.rb
249
+ - lib/commands/gli/list.rb
250
+ - lib/commands/gli/program.rb
251
+ - lib/commands/list_projects.rb
252
+ - lib/commands/view_history.rb
253
+ - lib/console_formatter.rb
254
+ - lib/gli_interface.rb
255
+ - lib/metrics/boolean_metric.rb
256
+ - lib/metrics/metric.rb
257
+ - lib/metrics/number_metric.rb
258
+ - lib/metrics/string_metric.rb
259
+ - lib/project.rb
260
+ - lib/project_catalog.rb
261
+ - lib/property_value.rb
262
+ - lib/storage/metric_mongo.rb
263
+ - lib/storage/project_mongo.rb
264
+ - lib/storage/property_value_mongo.rb
265
+ - lib/tc.rb
266
+ - lib/tc/version.rb
267
+ - spec/integration/mongo_spec.rb
268
+ - spec/lib/commands/add_metric_spec.rb
269
+ - spec/lib/commands/add_project_spec.rb
270
+ - spec/lib/commands/describe_project_spec.rb
271
+ - spec/lib/commands/edit_property_spec.rb
272
+ - spec/lib/commands/list_projects_spec.rb
273
+ - spec/lib/commands/view_history_spec.rb
274
+ - spec/lib/console_formatter_spec.rb
275
+ - spec/lib/metrics/boolean_metric_spec.rb
276
+ - spec/lib/metrics/metric_spec.rb
277
+ - spec/lib/metrics/number_metric_spec.rb
278
+ - spec/lib/metrics/string_metric_spec.rb
279
+ - spec/lib/project_catalog_spec.rb
280
+ - spec/lib/project_spec.rb
281
+ - spec/lib/storage/metric_mongo_spec.rb
282
+ - spec/lib/storage/project_mongo_spec.rb
283
+ - spec/lib/storage/property_value_mongo_spec.rb
284
+ - spec/spec_helper.rb
285
+ homepage: http://github.com/maksar/tc
286
+ licenses:
287
+ - MIT
288
+ post_install_message:
289
+ rdoc_options: []
290
+ require_paths:
291
+ - lib
292
+ required_ruby_version: !ruby/object:Gem::Requirement
293
+ none: false
294
+ requirements:
295
+ - - ! '>='
296
+ - !ruby/object:Gem::Version
297
+ version: '0'
298
+ segments:
299
+ - 0
300
+ hash: 4427700791790727002
301
+ required_rubygems_version: !ruby/object:Gem::Requirement
302
+ none: false
303
+ requirements:
304
+ - - ! '>='
305
+ - !ruby/object:Gem::Version
306
+ version: '0'
307
+ requirements: []
308
+ rubyforge_project:
309
+ rubygems_version: 1.8.24
310
+ signing_key:
311
+ specification_version: 3
312
+ summary: Console tool allowing to perform technical coordination activities
313
+ test_files: []