techcor 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -1
- data/Gemfile.lock +11 -6
- data/config/mongoid.yml +1 -5
- data/config/mongoid.yml.sample +1 -5
- data/lib/commands/describe_project.rb +4 -4
- data/lib/commands/gli/describe.rb +1 -1
- data/lib/commands/gli/list.rb +1 -1
- data/lib/commands/list_projects.rb +4 -4
- data/lib/console_formatter.rb +3 -14
- data/lib/formatter.rb +14 -0
- data/lib/techcor/version.rb +1 -1
- data/lib/techcor.rb +2 -1
- data/spec/lib/commands/describe_project_spec.rb +12 -7
- data/spec/lib/commands/list_projects_spec.rb +11 -8
- data/spec/lib/console_formatter_spec.rb +3 -16
- data/spec/lib/formatter_spec.rb +25 -0
- metadata +8 -6
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
GIT
|
2
|
+
remote: https://github.com/mongoid/mongoid.git
|
3
|
+
revision: 216839d66c7a7017a7e07e4fa8126ca686ca191e
|
4
|
+
specs:
|
5
|
+
mongoid (3.0.0.rc)
|
6
|
+
activemodel (~> 3.1)
|
7
|
+
moped (~> 1.0.0.rc)
|
8
|
+
origin (~> 1.0.1)
|
9
|
+
tzinfo (~> 0.3.22)
|
10
|
+
|
1
11
|
GEM
|
2
12
|
remote: http://rubygems.org/
|
3
13
|
specs:
|
@@ -42,11 +52,6 @@ GEM
|
|
42
52
|
rdoc
|
43
53
|
json (1.7.3)
|
44
54
|
method_source (0.7.1)
|
45
|
-
mongoid (3.0.0.rc)
|
46
|
-
activemodel (~> 3.1)
|
47
|
-
moped (~> 1.0.0.rc)
|
48
|
-
origin (~> 1.0.0.rc)
|
49
|
-
tzinfo (~> 0.3.22)
|
50
55
|
mongoid-rspec (1.4.6)
|
51
56
|
mongoid (>= 3.0.0.rc)
|
52
57
|
rake
|
@@ -88,7 +93,7 @@ DEPENDENCIES
|
|
88
93
|
gli (~> 2.0.0.rc)
|
89
94
|
hirb
|
90
95
|
jeweler
|
91
|
-
mongoid
|
96
|
+
mongoid!
|
92
97
|
mongoid-rspec
|
93
98
|
pry
|
94
99
|
rake
|
data/config/mongoid.yml
CHANGED
@@ -21,11 +21,7 @@ test:
|
|
21
21
|
production:
|
22
22
|
sessions:
|
23
23
|
default:
|
24
|
-
|
25
|
-
- <%= ENV['MONGOID_HOST'] || 'localhost' %>:<%= ENV['MONGOID_PORT'] || '27017' %>
|
26
|
-
database: <%= ENV['MONGOID_DATABASE'] || 'techcor_production' %>
|
27
|
-
username: <%= ENV['MONGOID_USERNAME'] %>
|
28
|
-
password: <%= ENV['MONGOID_PASSWORD'] %>
|
24
|
+
uri: <%= ENV['MONGOHQ_URL'] %>
|
29
25
|
logger: false
|
30
26
|
options:
|
31
27
|
raise_not_found_error: false
|
data/config/mongoid.yml.sample
CHANGED
@@ -21,11 +21,7 @@ test:
|
|
21
21
|
production:
|
22
22
|
sessions:
|
23
23
|
default:
|
24
|
-
|
25
|
-
- <%= ENV['MONGOID_HOST'] || 'localhost' %>:<%= ENV['MONGOID_PORT'] || '27017' %>
|
26
|
-
database: <%= ENV['MONGOID_DATABASE'] || 'techcor_production' %>
|
27
|
-
username: <%= ENV['MONGOID_USERNAME'] %>
|
28
|
-
password: <%= ENV['MONGOID_PASSWORD'] %>
|
24
|
+
uri: mongodb://localhost:27017/techcor_production
|
29
25
|
logger: false
|
30
26
|
options:
|
31
27
|
raise_not_found_error: false
|
@@ -1,6 +1,6 @@
|
|
1
1
|
class DescribeProject < Struct.new :project_name, :date_format
|
2
|
-
def call
|
3
|
-
formatter.present records
|
2
|
+
def call formatter_class = ConsoleFormatter, records = records
|
3
|
+
formatter(formatter_class).present records
|
4
4
|
end
|
5
5
|
|
6
6
|
def project project_name = project_name
|
@@ -11,8 +11,8 @@ class DescribeProject < Struct.new :project_name, :date_format
|
|
11
11
|
project.metrics
|
12
12
|
end
|
13
13
|
|
14
|
-
def formatter format = format
|
15
|
-
|
14
|
+
def formatter formatter_class, format = format
|
15
|
+
formatter_class.new format
|
16
16
|
end
|
17
17
|
|
18
18
|
def format date_format = date_format
|
@@ -9,7 +9,7 @@ class TechcorCli
|
|
9
9
|
command.flag :df, :date_format
|
10
10
|
|
11
11
|
command.action do |global, options, args|
|
12
|
-
puts DescribeProject.new(args.first, options[:date_format]).call
|
12
|
+
puts DescribeProject.new(args.first, options[:date_format]).call ConsoleFormatter
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
data/lib/commands/gli/list.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
class ListProjects < Struct.new :format, :criteria
|
2
|
-
def call
|
3
|
-
formatter.present projects
|
2
|
+
def call formatter_class = formatter_class, projects = projects
|
3
|
+
formatter(formatter_class).present projects
|
4
4
|
end
|
5
5
|
|
6
6
|
def projects catalog = ProjectCatalog.load, criteria = criteria
|
7
7
|
catalog.projects criteria
|
8
8
|
end
|
9
9
|
|
10
|
-
def formatter(format = format.present? ? eval(format) : default_format)
|
11
|
-
|
10
|
+
def formatter(formatter_class, format = format.present? ? eval(format) : default_format)
|
11
|
+
formatter_class.new format
|
12
12
|
end
|
13
13
|
|
14
14
|
def default_format projects = projects
|
data/lib/console_formatter.rb
CHANGED
@@ -1,18 +1,7 @@
|
|
1
1
|
class ConsoleFormatter < Struct.new :format
|
2
|
+
include Formatter
|
2
3
|
|
3
|
-
def present records
|
4
|
-
Hirb::Helpers::AutoTable.render(render_each(records), fields: format.keys, resize: false)
|
5
|
-
end
|
6
|
-
|
7
|
-
def render_each records
|
8
|
-
records.map { |record|
|
9
|
-
render_record record
|
10
|
-
}
|
11
|
-
end
|
12
|
-
|
13
|
-
def render_record record, format = format
|
14
|
-
format.merge(format) do |_, expression|
|
15
|
-
record.instance_eval expression
|
16
|
-
end
|
4
|
+
def present records
|
5
|
+
Hirb::Helpers::AutoTable.render(render_each(records, format), fields: format.keys, resize: false)
|
17
6
|
end
|
18
7
|
end
|
data/lib/formatter.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
module Formatter
|
2
|
+
def render_each records, format
|
3
|
+
records.map { |record|
|
4
|
+
render_record record, format
|
5
|
+
}
|
6
|
+
end
|
7
|
+
|
8
|
+
def render_record record, format
|
9
|
+
format.merge(format) do |_, expression|
|
10
|
+
record.instance_eval expression
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
data/lib/techcor/version.rb
CHANGED
data/lib/techcor.rb
CHANGED
@@ -11,6 +11,7 @@ $: << File.expand_path(File.dirname(File.realpath(__FILE__)) + '/../lib')
|
|
11
11
|
require 'project'
|
12
12
|
require 'property_value'
|
13
13
|
require 'project_catalog'
|
14
|
+
require 'formatter'
|
14
15
|
require 'console_formatter'
|
15
16
|
require 'metrics/metric'
|
16
17
|
require 'metrics/number_metric'
|
@@ -25,4 +26,4 @@ require 'commands/describe_project'
|
|
25
26
|
require 'storage/metric_mongo'
|
26
27
|
require 'storage/project_mongo'
|
27
28
|
require 'storage/property_value_mongo'
|
28
|
-
require 'techcor/seed'
|
29
|
+
require 'techcor/seed'
|
@@ -1,20 +1,25 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe DescribeProject do
|
4
|
-
it 'presents properties to table view' do
|
5
|
-
result = stub(:result)
|
6
4
|
|
5
|
+
class DummyDescribeFormatter < Struct.new :format
|
6
|
+
def present records
|
7
|
+
records
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
it 'presents properties to table view' do
|
7
13
|
records = stub(:records)
|
8
|
-
formatter = stub(:formatter).tap { |f| f.should_receive(:present).with(records) { result } }
|
9
14
|
|
10
|
-
subject.call(
|
15
|
+
subject.call(DummyDescribeFormatter, records).should == records
|
11
16
|
end
|
12
17
|
|
13
|
-
it 'passes format to
|
18
|
+
it 'passes format to formatter class' do
|
14
19
|
format = stub(:format)
|
15
|
-
|
20
|
+
formatter = stub.tap { |f| f.should_receive(:new).with(format) }
|
16
21
|
|
17
|
-
subject.formatter(format)
|
22
|
+
subject.formatter(formatter, format)
|
18
23
|
end
|
19
24
|
|
20
25
|
it 'collects metrics from project' do
|
@@ -1,11 +1,17 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe ListProjects do
|
4
|
-
|
4
|
+
|
5
|
+
class DummyListFormatter < Struct.new :format
|
6
|
+
def present records
|
7
|
+
records
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'passes format to formatter class' do
|
5
12
|
format = '42'
|
6
|
-
ConsoleFormatter.should_receive(:new).with(eval(format))
|
7
13
|
|
8
|
-
ListProjects.new(format).formatter
|
14
|
+
ListProjects.new(format).formatter(DummyListFormatter).format.should == 42
|
9
15
|
end
|
10
16
|
|
11
17
|
it 'gets list of projects from catalog according to criteria' do
|
@@ -18,12 +24,9 @@ describe ListProjects do
|
|
18
24
|
end
|
19
25
|
|
20
26
|
it 'presents projects to table view' do
|
21
|
-
result = stub(:result)
|
22
|
-
|
23
27
|
projects = stub(:projects)
|
24
|
-
formatter = stub(:formatter).tap { |f| f.should_receive(:present).with(projects) { result } }
|
25
28
|
|
26
|
-
|
29
|
+
ListProjects.new('42').call(DummyListFormatter, projects).should == projects
|
27
30
|
end
|
28
31
|
|
29
32
|
it 'uses default format if no format string was specified' do
|
@@ -32,7 +35,7 @@ describe ListProjects do
|
|
32
35
|
command = ListProjects.new(nil)
|
33
36
|
command.should_receive(:default_format) { result }
|
34
37
|
|
35
|
-
command.formatter
|
38
|
+
command.formatter(DummyListFormatter)
|
36
39
|
end
|
37
40
|
|
38
41
|
it 'builds default format as list of all metrics for all projects' do
|
@@ -5,25 +5,12 @@ describe ConsoleFormatter do
|
|
5
5
|
format = stub(:format, :keys => stub(:format_keys))
|
6
6
|
records = stub(:records)
|
7
7
|
|
8
|
-
|
8
|
+
formatter = ConsoleFormatter.new(format)
|
9
|
+
formatter.stub(:render_each => records)
|
9
10
|
|
10
11
|
Hirb::Helpers::AutoTable.should_receive(:render).with(records, fields: format.keys, resize: false)
|
11
12
|
|
12
|
-
|
13
|
+
formatter.present(records)
|
13
14
|
end
|
14
15
|
|
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
16
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Formatter do
|
4
|
+
subject {
|
5
|
+
class DummyFormatter
|
6
|
+
include Formatter
|
7
|
+
end.new
|
8
|
+
}
|
9
|
+
it 'renders each record in collection' do
|
10
|
+
record = stub(:record)
|
11
|
+
format = stub(:format)
|
12
|
+
|
13
|
+
subject.should_receive(:render_record).with(record, format).twice
|
14
|
+
subject.render_each([record, record], format)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'uses expressions in format to render each record' do
|
18
|
+
expression = stub(:expression)
|
19
|
+
format = {stub(:key) => expression}
|
20
|
+
record = stub(:record).tap { |p| p.should_receive(:instance_eval).with(expression) }
|
21
|
+
|
22
|
+
subject.render_record record, format
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: techcor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -32,17 +32,17 @@ dependencies:
|
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
none: false
|
34
34
|
requirements:
|
35
|
-
- -
|
35
|
+
- - ! '>='
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version:
|
37
|
+
version: '0'
|
38
38
|
type: :runtime
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
|
-
- -
|
43
|
+
- - ! '>='
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version:
|
45
|
+
version: '0'
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
47
|
name: bson_ext
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -251,6 +251,7 @@ files:
|
|
251
251
|
- lib/commands/list_projects.rb
|
252
252
|
- lib/commands/view_history.rb
|
253
253
|
- lib/console_formatter.rb
|
254
|
+
- lib/formatter.rb
|
254
255
|
- lib/gli_interface.rb
|
255
256
|
- lib/metrics/boolean_metric.rb
|
256
257
|
- lib/metrics/metric.rb
|
@@ -273,6 +274,7 @@ files:
|
|
273
274
|
- spec/lib/commands/list_projects_spec.rb
|
274
275
|
- spec/lib/commands/view_history_spec.rb
|
275
276
|
- spec/lib/console_formatter_spec.rb
|
277
|
+
- spec/lib/formatter_spec.rb
|
276
278
|
- spec/lib/metrics/boolean_metric_spec.rb
|
277
279
|
- spec/lib/metrics/metric_spec.rb
|
278
280
|
- spec/lib/metrics/number_metric_spec.rb
|
@@ -298,7 +300,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
298
300
|
version: '0'
|
299
301
|
segments:
|
300
302
|
- 0
|
301
|
-
hash:
|
303
|
+
hash: -809524545492569509
|
302
304
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
303
305
|
none: false
|
304
306
|
requirements:
|