terminitor 0.2.2 → 0.3.0
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.
- data/.gitignore +1 -0
- data/Gemfile.lock +6 -6
- data/README.md +57 -13
- data/lib/terminitor/abstract_core.rb +13 -7
- data/lib/terminitor/cores/mac_core.rb +7 -4
- data/lib/terminitor/dsl.rb +39 -37
- data/lib/terminitor/version.rb +1 -1
- data/terminitor.gemspec +2 -2
- data/test/abstract_core_test.rb +119 -60
- data/test/cli_test.rb +116 -83
- data/test/cores/mac_core_test.rb +110 -116
- data/test/dsl_test.rb +17 -3
- data/test/fixtures/bar.term +13 -1
- data/test/runner_test.rb +140 -152
- data/test/teststrap.rb +20 -2
- metadata +7 -17
data/test/dsl_test.rb
CHANGED
@@ -11,9 +11,23 @@ context "Dsl" do
|
|
11
11
|
setup { @yaml.to_hash }
|
12
12
|
asserts_topic.equivalent_to :setup=>["echo \"setup\""],
|
13
13
|
:windows=>{
|
14
|
-
"window1"=>{:tabs=>{"
|
15
|
-
|
16
|
-
|
14
|
+
"window1"=>{:tabs=>{"tab2"=>{:commands=>["echo 'named tab'", "ls"],
|
15
|
+
:options => {:name => "named tab", :settings=>"Grass"}},
|
16
|
+
"tab1"=>{:commands=>["echo 'first tab'", "echo 'of window'", "echo 'than now'"]},
|
17
|
+
"tab3"=>{:commands=>["top"],
|
18
|
+
:options =>{:name => "a tab", :settings => "Pro"}},
|
19
|
+
"default"=>{:commands=>['whoami']}
|
20
|
+
},
|
21
|
+
:before => ['cd /path'],
|
22
|
+
:options => {:size=>[70,30]}},
|
23
|
+
"window2"=>{:tabs=>{"tab1"=>{:commands=>["uptime"]},
|
24
|
+
"default"=>{:commands=>[]}
|
25
|
+
},
|
26
|
+
:before => ['whoami'],
|
27
|
+
:options => {:name => 'server'}},
|
28
|
+
"default"=>{:tabs=>{"tab1"=>{:commands=>["echo 'default'", "echo 'default tab'", "ok", "for real"]},
|
29
|
+
"default"=>{:commands=>[]}
|
30
|
+
}}}
|
17
31
|
end
|
18
32
|
|
19
33
|
end
|
data/test/fixtures/bar.term
CHANGED
@@ -6,12 +6,24 @@ setup 'echo "setup"'
|
|
6
6
|
tab "echo 'default'", "echo 'default tab'", "ok", "for real"
|
7
7
|
|
8
8
|
window :size => [70,30] do
|
9
|
+
|
10
|
+
before 'cd /path'
|
11
|
+
|
12
|
+
run "whoami"
|
9
13
|
tab "echo 'first tab'", "echo 'of window'", "echo 'than now'"
|
10
14
|
|
11
|
-
tab "named tab", :settings => "Grass" do
|
15
|
+
tab :name => "named tab", :settings => "Grass" do
|
12
16
|
run "echo 'named tab'"
|
13
17
|
run "ls"
|
14
18
|
end
|
19
|
+
|
20
|
+
tab :name => "a tab", :settings => "Pro" do
|
21
|
+
run "top"
|
22
|
+
end
|
15
23
|
end
|
16
24
|
|
25
|
+
window :name => 'server' do
|
26
|
+
before { run 'whoami' }
|
27
|
+
tab "uptime"
|
28
|
+
end
|
17
29
|
|
data/test/runner_test.rb
CHANGED
@@ -18,221 +18,209 @@ class TestItem
|
|
18
18
|
end
|
19
19
|
|
20
20
|
context "Runner" do
|
21
|
-
setup
|
22
|
-
|
23
|
-
|
24
|
-
|
21
|
+
setup do
|
22
|
+
@yaml = File.read(File.expand_path('../fixtures/foo.yml', __FILE__))
|
23
|
+
@template = File.read(File.expand_path('../../lib/templates/example.yml.tt', __FILE__))
|
24
|
+
@test_runner = TestRunner.new
|
25
|
+
FakeFS.activate!
|
26
|
+
end
|
25
27
|
teardown { FakeFS.deactivate! }
|
26
28
|
|
27
29
|
|
28
|
-
context "find_core" do
|
29
|
-
|
30
|
-
setup { @test_runner.find_core('darwin') }
|
31
|
-
asserts_topic.equals Terminitor::MacCore
|
32
|
-
end
|
30
|
+
context "#find_core" do
|
31
|
+
should("have Darwin") { @test_runner.find_core('darwin') }.equals Terminitor::MacCore
|
33
32
|
|
34
33
|
if platform?('linux') # TODO Gotta be a better way.
|
35
|
-
|
36
|
-
setup { @test_runner.find_core('linux') }
|
37
|
-
asserts_topic.equals Terminitor::KonsoleCore
|
38
|
-
end
|
34
|
+
should("have KDE") { @test_runner.find_core('linux') }.equals Terminitor::KonsoleCore
|
39
35
|
end
|
40
36
|
end
|
41
37
|
|
42
|
-
context "capture_core" do
|
43
|
-
|
44
|
-
setup { @test_runner.capture_core('darwin') }
|
45
|
-
asserts_topic.equals Terminitor::MacCapture
|
46
|
-
end
|
38
|
+
context "#capture_core" do
|
39
|
+
should("have Darwin") { @test_runner.capture_core('darwin') }.equals Terminitor::MacCapture
|
47
40
|
end
|
48
41
|
|
49
|
-
context "open_in_editor" do
|
50
|
-
context "using $EDITOR" do
|
51
|
-
setup { ENV['EDITOR'] = 'mate' }
|
52
|
-
setup { mock(@test_runner).system("mate /tmp/sample_project/foo.yml").returns {true}.once }
|
53
|
-
asserts("calls") { capture(:stdout) { @test_runner.open_in_editor("/tmp/sample_project/foo.yml") } }
|
54
|
-
end
|
42
|
+
context "#open_in_editor" do
|
55
43
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
asserts("calls") { capture(:stdout) { @test_runner.open_in_editor("/tmp/sample_project/foo.yml")} }
|
44
|
+
should "use $EDITOR" do
|
45
|
+
ENV['EDITOR'] = 'mate'
|
46
|
+
mock(@test_runner).system("mate /tmp/sample_project/foo.yml").returns {true}.once
|
47
|
+
capture(:stdout) { @test_runner.open_in_editor("/tmp/sample_project/foo.yml") }
|
61
48
|
end
|
62
49
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
asserts_topic.matches %r{please set}
|
50
|
+
should "use $TERM_EDITOR" do
|
51
|
+
ENV['TERM_EDITOR'] = 'vim'
|
52
|
+
ENV['EDITOR'] = 'jack'
|
53
|
+
mock(@test_runner).system("vim /tmp/sample_project/foo.yml").returns {true}.once
|
54
|
+
capture(:stdout) { @test_runner.open_in_editor("/tmp/sample_project/foo.yml") }
|
69
55
|
end
|
70
56
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
57
|
+
should "return a message without any editor that" do
|
58
|
+
ENV['TERM_EDITOR'] = nil
|
59
|
+
ENV['EDITOR'] = nil
|
60
|
+
mock(@test_runner).system("open /tmp/sample_project/foo.yml").returns {true}.once
|
61
|
+
capture(:stdout) { @test_runner.open_in_editor("/tmp/sample_project/foo.yml")}
|
62
|
+
end.matches %r{please set}
|
63
|
+
|
64
|
+
should "accept an editor" do
|
65
|
+
ENV['TERM_EDITOR'] = 'vim'
|
66
|
+
ENV['EDITOR'] = 'jack'
|
67
|
+
mock(@test_runner).system("nano /tmp/sample_project/foo.yml").returns {true}.once
|
68
|
+
capture(:stdout) { @test_runner.open_in_editor("/tmp/sample_project/foo.yml","nano") }
|
76
69
|
end
|
77
70
|
|
78
71
|
end
|
79
72
|
|
80
|
-
context "resolve_path" do
|
73
|
+
context "#resolve_path" do
|
81
74
|
setup { FileUtils.mkdir_p(File.join(ENV['HOME'],'.terminitor')) }
|
82
75
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
end
|
76
|
+
should "return yaml" do
|
77
|
+
FileUtils.touch(File.join(ENV['HOME'],'.terminitor','test.yml'))
|
78
|
+
@test_runner.resolve_path('test')
|
79
|
+
end.equals File.join(ENV['HOME'],'.terminitor','test.yml')
|
88
80
|
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
end
|
81
|
+
should "return term" do
|
82
|
+
FileUtils.touch(File.join(ENV['HOME'],'.terminitor','test.term'))
|
83
|
+
FileUtils.rm(File.join(ENV['HOME'],'.terminitor','test.yml'))
|
84
|
+
@test_runner.resolve_path('test')
|
85
|
+
end.equals File.join(ENV['HOME'],'.terminitor','test.term')
|
95
86
|
|
96
|
-
context "with Termfile" do
|
97
|
-
setup { FileUtils.rm(File.join(ENV['HOME'],'.terminitor','test.yml')) }
|
98
|
-
setup { FileUtils.rm(File.join(ENV['HOME'],'.terminitor','test.term')) }
|
99
|
-
setup { FileUtils.touch("Termfile") }
|
100
|
-
setup { mock(@test_runner).options { {:root => '.'} } }
|
101
|
-
setup { @test_runner.resolve_path("") }
|
102
|
-
asserts_topic.equals "./Termfile"
|
103
|
-
end
|
104
87
|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
88
|
+
should "return Termfile" do
|
89
|
+
FileUtils.rm(File.join(ENV['HOME'],'.terminitor','test.yml'))
|
90
|
+
FileUtils.rm(File.join(ENV['HOME'],'.terminitor','test.term'))
|
91
|
+
FileUtils.touch("Termfile")
|
92
|
+
mock(@test_runner).options { {:root => '.'} }
|
93
|
+
@test_runner.resolve_path("")
|
94
|
+
end.equals "./Termfile"
|
109
95
|
|
110
|
-
context "with a project" do
|
111
|
-
setup { @test_runner.resolve_path('hey') }
|
112
|
-
asserts_topic.nil
|
113
|
-
end
|
114
96
|
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
97
|
+
context "with nothing" do
|
98
|
+
setup do
|
99
|
+
FileUtils.rm(File.join(ENV['HOME'],'.terminitor','test.yml'))
|
100
|
+
FileUtils.rm(File.join(ENV['HOME'],'.terminitor','test.term'))
|
101
|
+
FileUtils.rm("Termfile")
|
119
102
|
end
|
120
|
-
|
103
|
+
|
104
|
+
should("have path with a project") { @test_runner.resolve_path('hey') }.nil
|
121
105
|
|
122
|
-
|
106
|
+
should("have path without a project") do
|
107
|
+
mock(@test_runner).options.returns(:root => '.')
|
108
|
+
@test_runner.resolve_path ""
|
109
|
+
end.nil
|
123
110
|
|
124
|
-
context "config_path" do
|
125
|
-
context "for yaml" do
|
126
|
-
setup { @test_runner.config_path('test',:yml) }
|
127
|
-
asserts_topic.equals File.join(ENV['HOME'],'.terminitor','test.yml')
|
128
111
|
end
|
129
112
|
|
130
|
-
|
131
|
-
setup { @test_runner.config_path('test', :term) }
|
132
|
-
asserts_topic.equals File.join(ENV['HOME'],'.terminitor', 'test.term')
|
133
|
-
end
|
113
|
+
end
|
134
114
|
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
115
|
+
context "config_path" do
|
116
|
+
should("have yaml") { @test_runner.config_path('test',:yml) }.equals File.join(ENV['HOME'],'.terminitor','test.yml')
|
117
|
+
should("have term") { @test_runner.config_path('test', :term) }.equals File.join(ENV['HOME'],'.terminitor', 'test.term')
|
118
|
+
|
119
|
+
should "have Termfile" do
|
120
|
+
mock(@test_runner).options { {:root => '/tmp'} }
|
121
|
+
@test_runner.config_path ""
|
122
|
+
end.equals '/tmp/Termfile'
|
140
123
|
|
141
124
|
end
|
142
125
|
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
end
|
126
|
+
asserts "#grab_comment_for_file executes" do
|
127
|
+
File.open('foo.yml','w') { |f| f.puts @yaml }
|
128
|
+
@test_runner.grab_comment_for_file('foo.yml')
|
129
|
+
end.matches %r{- Foo.yml}
|
148
130
|
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
131
|
+
|
132
|
+
context "#return_error_message" do
|
133
|
+
|
134
|
+
should "return message with project" do
|
135
|
+
mock(@test_runner).say(%r{'hi' doesn't exist}) { true }
|
136
|
+
@test_runner.return_error_message('hi')
|
153
137
|
end
|
154
|
-
|
155
|
-
|
156
|
-
|
138
|
+
|
139
|
+
should "return message without project" do
|
140
|
+
mock(@test_runner).say(%r{Termfile}) { true }
|
141
|
+
@test_runner.return_error_message('')
|
157
142
|
end
|
143
|
+
|
158
144
|
end
|
159
145
|
|
160
|
-
context "execute_core" do
|
146
|
+
context "#execute_core" do
|
161
147
|
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
148
|
+
should "have error message with no path" do
|
149
|
+
mock(@test_runner).resolve_path('project') { nil }
|
150
|
+
mock(@test_runner).return_error_message('project') { true }
|
151
|
+
@test_runner.execute_core(:process!,'project')
|
166
152
|
end
|
167
153
|
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
154
|
+
should "have error message with no core" do
|
155
|
+
mock(@test_runner).resolve_path('project') { true }
|
156
|
+
mock(@test_runner).find_core(anything) { nil }
|
157
|
+
mock(@test_runner).say(/No suitable/) { true }
|
158
|
+
@test_runner.execute_core(:process!,'project')
|
173
159
|
end
|
174
160
|
|
175
161
|
context "with found core" do
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
end
|
183
|
-
mock(@test_runner).find_core(anything) { Terminitor::AbstractCore }
|
162
|
+
|
163
|
+
should "call #process!" do
|
164
|
+
mock(@test_runner).resolve_path('project') { '/path/to' }
|
165
|
+
any_instance_of(Terminitor::AbstractCore) do |core|
|
166
|
+
stub(core).load_termfile('/path/to') { true }
|
167
|
+
stub(core).process! { true }
|
184
168
|
end
|
185
|
-
|
169
|
+
mock(@test_runner).find_core(anything) { Terminitor::AbstractCore }
|
170
|
+
@test_runner.execute_core(:process!, 'project')
|
186
171
|
end
|
187
172
|
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
stub(core).setup! { true }
|
194
|
-
end
|
195
|
-
mock(@test_runner).find_core(anything) { Terminitor::AbstractCore }
|
173
|
+
should "call #setup!" do
|
174
|
+
mock(@test_runner).resolve_path('project') { '/path/to' }
|
175
|
+
any_instance_of(Terminitor::AbstractCore) do |core|
|
176
|
+
stub(core).load_termfile('/path/to') { true }
|
177
|
+
stub(core).setup! { true }
|
196
178
|
end
|
197
|
-
|
179
|
+
mock(@test_runner).find_core(anything) { Terminitor::AbstractCore }
|
180
|
+
@test_runner.execute_core(:setup!, 'project')
|
198
181
|
end
|
182
|
+
|
199
183
|
end
|
200
184
|
end
|
201
185
|
|
202
|
-
context "github_clone" do
|
186
|
+
context "#github_clone" do
|
187
|
+
|
203
188
|
context "with github" do
|
204
189
|
setup { stub(@test_runner).__double_definition_create__.call(:`,'which github') { "github" } }
|
205
|
-
|
206
|
-
|
207
|
-
|
190
|
+
|
191
|
+
should "invoke ssh with read/write priv" do
|
192
|
+
mock(@test_runner).system("github clone achiu terminitor --ssh") { true }
|
193
|
+
@test_runner.github_clone('achiu','terminitor')
|
208
194
|
end
|
209
195
|
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
196
|
+
should "invoke git:// with read only" do
|
197
|
+
mock(@test_runner).system("github clone achiu terminitor --ssh") { false }
|
198
|
+
mock(@test_runner).system("github clone achiu terminitor") { true }
|
199
|
+
@test_runner.github_clone('achiu', 'terminitor')
|
214
200
|
end
|
201
|
+
|
215
202
|
end
|
203
|
+
|
216
204
|
end
|
217
205
|
|
218
206
|
context "github_repo" do
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
end
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
end
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
207
|
+
should "invoke setup" do
|
208
|
+
mock(@test_runner).github_clone('achiu','terminitor') { true }
|
209
|
+
mock(FileUtils).cd(File.join(Dir.pwd,'terminitor')) { true }
|
210
|
+
mock(@test_runner).invoke(:setup, []) { true }
|
211
|
+
@test_runner.github_repo('achiu','terminitor', :setup => true)
|
212
|
+
end
|
213
|
+
|
214
|
+
should "invoke without setup" do
|
215
|
+
mock(@test_runner).github_clone('achiu','terminitor') { true }
|
216
|
+
mock(FileUtils).cd(File.join(Dir.pwd,'terminitor')) { true }
|
217
|
+
@test_runner.github_repo('achiu','terminitor')
|
218
|
+
end.nil
|
219
|
+
|
220
|
+
should "return a message on a failed repo" do
|
221
|
+
mock(@test_runner).github_clone('achiu','terminitor') { false }
|
222
|
+
mock(@test_runner).say("could not fetch repo!") { true }
|
223
|
+
@test_runner.github_repo('achiu', 'terminitor')
|
236
224
|
end
|
237
225
|
|
238
226
|
end
|
data/test/teststrap.rb
CHANGED
@@ -16,7 +16,7 @@ def platform?(platform)
|
|
16
16
|
RUBY_PLATFORM.downcase.include?(platform)
|
17
17
|
end
|
18
18
|
|
19
|
-
|
19
|
+
module Kernel
|
20
20
|
def capture(stream)
|
21
21
|
begin
|
22
22
|
stream = stream.to_s
|
@@ -28,4 +28,22 @@ class Object
|
|
28
28
|
end
|
29
29
|
result
|
30
30
|
end
|
31
|
-
end
|
31
|
+
end
|
32
|
+
|
33
|
+
# This is to silence the 'task' warning for the mocks.
|
34
|
+
class Thor
|
35
|
+
class << self
|
36
|
+
def create_task(meth) #:nodoc:
|
37
|
+
if @usage && @desc
|
38
|
+
base_class = @hide ? Thor::HiddenTask : Thor::Task
|
39
|
+
tasks[meth] = base_class.new(meth, @desc, @long_desc, @usage, method_options)
|
40
|
+
@usage, @desc, @long_desc, @method_options, @hide = nil
|
41
|
+
true
|
42
|
+
elsif self.all_tasks[meth] || meth == "method_missing"
|
43
|
+
true
|
44
|
+
else
|
45
|
+
false
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: terminitor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 19
|
5
4
|
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
7
|
+
- 3
|
8
|
+
- 0
|
9
|
+
version: 0.3.0
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Arthur Chiu
|
@@ -16,7 +15,7 @@ autorequire:
|
|
16
15
|
bindir: bin
|
17
16
|
cert_chain: []
|
18
17
|
|
19
|
-
date: 2010-
|
18
|
+
date: 2010-12-01 00:00:00 -08:00
|
20
19
|
default_executable:
|
21
20
|
dependencies:
|
22
21
|
- !ruby/object:Gem::Dependency
|
@@ -27,7 +26,6 @@ dependencies:
|
|
27
26
|
requirements:
|
28
27
|
- - ">="
|
29
28
|
- !ruby/object:Gem::Version
|
30
|
-
hash: 3
|
31
29
|
segments:
|
32
30
|
- 0
|
33
31
|
version: "0"
|
@@ -41,7 +39,6 @@ dependencies:
|
|
41
39
|
requirements:
|
42
40
|
- - ~>
|
43
41
|
- !ruby/object:Gem::Version
|
44
|
-
hash: 39
|
45
42
|
segments:
|
46
43
|
- 0
|
47
44
|
- 14
|
@@ -57,7 +54,6 @@ dependencies:
|
|
57
54
|
requirements:
|
58
55
|
- - ~>
|
59
56
|
- !ruby/object:Gem::Version
|
60
|
-
hash: 5
|
61
57
|
segments:
|
62
58
|
- 0
|
63
59
|
- 4
|
@@ -73,7 +69,6 @@ dependencies:
|
|
73
69
|
requirements:
|
74
70
|
- - ~>
|
75
71
|
- !ruby/object:Gem::Version
|
76
|
-
hash: 23
|
77
72
|
segments:
|
78
73
|
- 1
|
79
74
|
- 0
|
@@ -89,12 +84,11 @@ dependencies:
|
|
89
84
|
requirements:
|
90
85
|
- - ~>
|
91
86
|
- !ruby/object:Gem::Version
|
92
|
-
hash: 51
|
93
87
|
segments:
|
94
88
|
- 0
|
95
|
-
-
|
89
|
+
- 12
|
96
90
|
- 0
|
97
|
-
version: 0.
|
91
|
+
version: 0.12.0
|
98
92
|
type: :development
|
99
93
|
version_requirements: *id005
|
100
94
|
- !ruby/object:Gem::Dependency
|
@@ -103,9 +97,8 @@ dependencies:
|
|
103
97
|
requirement: &id006 !ruby/object:Gem::Requirement
|
104
98
|
none: false
|
105
99
|
requirements:
|
106
|
-
- -
|
100
|
+
- - ~>
|
107
101
|
- !ruby/object:Gem::Version
|
108
|
-
hash: 23
|
109
102
|
segments:
|
110
103
|
- 1
|
111
104
|
- 0
|
@@ -121,7 +114,6 @@ dependencies:
|
|
121
114
|
requirements:
|
122
115
|
- - ">="
|
123
116
|
- !ruby/object:Gem::Version
|
124
|
-
hash: 3
|
125
117
|
segments:
|
126
118
|
- 0
|
127
119
|
version: "0"
|
@@ -190,7 +182,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
190
182
|
requirements:
|
191
183
|
- - ">="
|
192
184
|
- !ruby/object:Gem::Version
|
193
|
-
hash: 3
|
194
185
|
segments:
|
195
186
|
- 0
|
196
187
|
version: "0"
|
@@ -199,7 +190,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
199
190
|
requirements:
|
200
191
|
- - ">="
|
201
192
|
- !ruby/object:Gem::Version
|
202
|
-
hash: 23
|
203
193
|
segments:
|
204
194
|
- 1
|
205
195
|
- 3
|