consular 1.0.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +5 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +28 -0
- data/LICENSE +20 -0
- data/README.md +437 -0
- data/Rakefile +9 -0
- data/Termfile +7 -0
- data/bin/consular +13 -0
- data/consular.gemspec +40 -0
- data/lib/consular/cli.rb +220 -0
- data/lib/consular/core.rb +65 -0
- data/lib/consular/dsl.rb +220 -0
- data/lib/consular/version.rb +3 -0
- data/lib/consular.rb +68 -0
- data/lib/templates/consularc.tt +9 -0
- data/lib/templates/example.term.tt +21 -0
- data/lib/templates/example.yml.tt +16 -0
- data/spec/cli_spec.rb +194 -0
- data/spec/consular_spec.rb +30 -0
- data/spec/core_spec.rb +19 -0
- data/spec/dsl_spec.rb +76 -0
- data/spec/fixtures/bar.term +32 -0
- data/spec/fixtures/foo.yml +10 -0
- data/spec/spec_helper.rb +54 -0
- data/spec.watchr +67 -0
- metadata +172 -0
data/spec/cli_spec.rb
ADDED
@@ -0,0 +1,194 @@
|
|
1
|
+
require File.expand_path('../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
class FakeCore < Consular::Core
|
4
|
+
|
5
|
+
def self.valid_system?
|
6
|
+
true
|
7
|
+
end
|
8
|
+
|
9
|
+
def process!; puts('process'); end
|
10
|
+
def setup!; puts('setup'); end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe Consular::CLI do
|
14
|
+
|
15
|
+
before do
|
16
|
+
@template = File.read File.expand_path('../../lib/templates/example.yml.tt', __FILE__)
|
17
|
+
FakeFS.activate!
|
18
|
+
FileUtils.mkdir_p Consular.global_path
|
19
|
+
end
|
20
|
+
|
21
|
+
after do
|
22
|
+
FakeFS.deactivate!
|
23
|
+
Consular.instance_variable_set(:@global_path, nil)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "displays help" do
|
27
|
+
output = capture_io { Consular::CLI.start ['-h'] }.join('')
|
28
|
+
|
29
|
+
assert_match /start \[PROJECT\]/, output
|
30
|
+
assert_match /init/, output
|
31
|
+
assert_match /edit \[PROJECT\]/, output
|
32
|
+
end
|
33
|
+
|
34
|
+
it "lists out all global scripts" do
|
35
|
+
File.open(Consular.global_path('foo.yml'), "w") { |f| f.puts @template }
|
36
|
+
File.open(Consular.global_path('bar.term'), "w") { |f| f.puts @template }
|
37
|
+
File.open(Consular.global_path('bar.term~'), "w") { |f| f.puts @template }
|
38
|
+
output = capture_io { Consular::CLI.start ['list'] }.join('')
|
39
|
+
|
40
|
+
assert_match /foo\.yml - COMMENT OF SCRIPT HERE/, output
|
41
|
+
assert_match /bar - COMMENT OF SCRIPT HERE/, output
|
42
|
+
refute_match /bar\.term - COMMENT OF SCRIPT HERE/, output
|
43
|
+
refute_match /bar\.term~/, output
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "start command" do
|
47
|
+
before do
|
48
|
+
FileUtils.mkdir_p '/tmp'
|
49
|
+
FileUtils.touch '/tmp/Termfile'
|
50
|
+
FileUtils.touch Consular.global_path('foo.term')
|
51
|
+
FileUtils.touch Consular.global_path('foo.yml')
|
52
|
+
Consular.add_core FakeCore
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should start a Termfile" do
|
56
|
+
output = capture_io { Consular::CLI.start ['start', '-r=/tmp'] }.join('')
|
57
|
+
assert_match /process/, output
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should start a global term script" do
|
61
|
+
output = capture_io { Consular::CLI.start ['start', 'foo'] }.join('')
|
62
|
+
assert_match /process/, output
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should start a global yaml script" do
|
66
|
+
output = capture_io { Consular::CLI.start ['start', 'foo.yml'] }.join('')
|
67
|
+
assert_match /process/, output
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should return an error message if it doesn't exist" do
|
71
|
+
output = capture_io { Consular::CLI.start ['start', 'barr'] }.join('')
|
72
|
+
assert_match /does not exist/, output
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe "setup command" do
|
77
|
+
before do
|
78
|
+
FileUtils.mkdir_p '/tmp'
|
79
|
+
FileUtils.touch '/tmp/Termfile'
|
80
|
+
FileUtils.touch Consular.global_path('foo.term')
|
81
|
+
FileUtils.touch Consular.global_path('foo.yml')
|
82
|
+
Consular.add_core FakeCore
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should setup a Termfile" do
|
86
|
+
output = capture_io { Consular::CLI.start ['setup', '-r=/tmp'] }.join('')
|
87
|
+
assert_match /setup/, output
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should setup a global term script" do
|
91
|
+
output = capture_io { Consular::CLI.start ['setup', 'foo'] }.join('')
|
92
|
+
assert_match /setup/, output
|
93
|
+
end
|
94
|
+
|
95
|
+
it "should setup a global yaml script" do
|
96
|
+
output = capture_io { Consular::CLI.start ['setup', 'foo.yml'] }.join('')
|
97
|
+
assert_match /setup/, output
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should return an error message if it doesn't exist" do
|
101
|
+
output = capture_io { Consular::CLI.start ['setup', 'barr'] }.join('')
|
102
|
+
assert_match /does not exist/, output
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
it "init creates a new global script directory and consularc" do
|
107
|
+
FileUtils.rm_rf Consular.global_path
|
108
|
+
capture_io { Consular::CLI.start ['init'] }.join('')
|
109
|
+
|
110
|
+
assert File.exists?(Consular.global_path), "global script directory exists"
|
111
|
+
end
|
112
|
+
|
113
|
+
describe "delete command" do
|
114
|
+
|
115
|
+
it "removes Termfile" do
|
116
|
+
FileUtils.mkdir_p '/tmp/sample_project'
|
117
|
+
FileUtils.touch "/tmp/sample_project/Termfile"
|
118
|
+
capture_io { Consular::CLI.start ['delete',"-r=/tmp/sample_project"] }
|
119
|
+
|
120
|
+
refute File.exists?("/tmp/sample_project/Termfile"), 'deletes Termfile'
|
121
|
+
end
|
122
|
+
|
123
|
+
it "removes .yml files" do
|
124
|
+
FileUtils.touch Consular.global_path('foo.yml')
|
125
|
+
capture_io { Consular::CLI.start ['delete','foo.yml'] }
|
126
|
+
|
127
|
+
refute File.exists?(Consular.global_path('foo.yml')), 'deletes .yml files'
|
128
|
+
end
|
129
|
+
|
130
|
+
it "removes .term file" do
|
131
|
+
FileUtils.touch Consular.global_path('delete_this.term')
|
132
|
+
capture_io { Consular::CLI.start ['delete','delete_this'] }
|
133
|
+
|
134
|
+
refute File.exists?(Consular.global_path('delete_this.term')), 'deletes .term file'
|
135
|
+
end
|
136
|
+
|
137
|
+
it "removes .term file" do
|
138
|
+
output = capture_io { Consular::CLI.start ['delete','barr'] }.join('')
|
139
|
+
|
140
|
+
assert_match /does not exist/, output
|
141
|
+
end
|
142
|
+
|
143
|
+
end
|
144
|
+
|
145
|
+
describe "edit command" do
|
146
|
+
before do
|
147
|
+
FakeFS.deactivate!
|
148
|
+
@path = File.join ENV['HOME'], '.config', 'consular'
|
149
|
+
@yaml = File.join @path, 'foobar.yml'
|
150
|
+
@term = File.join @path, 'foobar.term'
|
151
|
+
`rm -f #{@yaml}`
|
152
|
+
`rm -f #{@term}`
|
153
|
+
`rm -f /tmp/Termfile`
|
154
|
+
end
|
155
|
+
|
156
|
+
after do
|
157
|
+
`rm -f #{@yaml}`
|
158
|
+
`rm -f #{@term}`
|
159
|
+
`rm -f /tmp/Termfile`
|
160
|
+
end
|
161
|
+
|
162
|
+
it "edits yaml files" do
|
163
|
+
FakeFS.deactivate!
|
164
|
+
Consular::CLI.any_instance.expects(:open_in_editor).with(@yaml, nil).returns(true)
|
165
|
+
output = capture_io { Consular::CLI.start ['edit', 'foobar.yml'] }.join('')
|
166
|
+
|
167
|
+
assert_match /create/, output
|
168
|
+
assert_match /foobar\.yml/, output
|
169
|
+
assert_match /- tab1/, File.read(@yaml)
|
170
|
+
end
|
171
|
+
|
172
|
+
it "edits .term file" do
|
173
|
+
FakeFS.deactivate!
|
174
|
+
Consular::CLI.any_instance.expects(:open_in_editor).with(@term, nil).returns(true)
|
175
|
+
output = capture_io { Consular::CLI.start ['edit', 'foobar'] }.join('')
|
176
|
+
|
177
|
+
assert_match /create/, output
|
178
|
+
assert_match /foobar\.term/, output
|
179
|
+
assert_match /setup/, File.read(@term)
|
180
|
+
end
|
181
|
+
|
182
|
+
it "edits a Termfile" do
|
183
|
+
FakeFS.deactivate!
|
184
|
+
Consular::CLI.any_instance.expects(:open_in_editor).with('/tmp/Termfile', nil).returns(true)
|
185
|
+
output = capture_io { Consular::CLI.start ['edit', '-r=/tmp'] }.join('')
|
186
|
+
|
187
|
+
assert_match /create/, output
|
188
|
+
assert_match /Termfile/, output
|
189
|
+
assert_match /setup/, File.read('/tmp/Termfile')
|
190
|
+
end
|
191
|
+
|
192
|
+
end
|
193
|
+
|
194
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require File.expand_path('../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe Consular do
|
4
|
+
|
5
|
+
after do
|
6
|
+
Consular.instance_variable_set(:@cores,[])
|
7
|
+
Consular.instance_variable_set(:@global_path,nil)
|
8
|
+
end
|
9
|
+
|
10
|
+
it "can add cores" do
|
11
|
+
Consular.add_core Consular::Core
|
12
|
+
assert_equal 1, Consular.cores.size
|
13
|
+
end
|
14
|
+
|
15
|
+
it "has default configurations" do
|
16
|
+
assert_equal File.join(ENV['HOME'],'.config','consular',''), Consular.global_path
|
17
|
+
end
|
18
|
+
|
19
|
+
it "can be configured" do
|
20
|
+
Consular.configure do |c|
|
21
|
+
c.global_path = '/tmp/'
|
22
|
+
c.default_editor = 'vim'
|
23
|
+
end
|
24
|
+
|
25
|
+
assert_equal '/tmp/', Consular.global_path
|
26
|
+
assert_equal 'vim', Consular.default_editor
|
27
|
+
assert_equal '/tmp/Termfile', Consular.global_path('Termfile')
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
data/spec/core_spec.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require File.expand_path('../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe Consular::Core do
|
4
|
+
before do
|
5
|
+
@core = Consular::Core.new File.expand_path('../fixtures/bar.term', __FILE__)
|
6
|
+
end
|
7
|
+
|
8
|
+
it "on .initialize assigns the right values" do
|
9
|
+
refute_nil @core.termfile
|
10
|
+
end
|
11
|
+
|
12
|
+
it "stubs out the methods that need to be defined" do
|
13
|
+
assert_raises(NotImplementedError) { @core.class.valid_system? }
|
14
|
+
assert_raises(NotImplementedError) { @core.class.capture! }
|
15
|
+
assert_raises(NotImplementedError) { @core.setup! }
|
16
|
+
assert_raises(NotImplementedError) { @core.process! }
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
data/spec/dsl_spec.rb
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
require File.expand_path('../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe Consular::DSL do
|
4
|
+
before do
|
5
|
+
@dsl = Consular::DSL.new File.expand_path('../fixtures/bar.term', __FILE__)
|
6
|
+
@yaml = Consular::DSL.new File.expand_path('../fixtures/foo.yml', __FILE__)
|
7
|
+
end
|
8
|
+
|
9
|
+
it "on .initialize setup some variables" do
|
10
|
+
refute_nil @dsl._setup
|
11
|
+
refute_nil @dsl._windows
|
12
|
+
refute_nil @dsl._context
|
13
|
+
end
|
14
|
+
|
15
|
+
describe ".to_hash with DSL" do
|
16
|
+
before do
|
17
|
+
@result = @dsl.to_hash
|
18
|
+
end
|
19
|
+
|
20
|
+
it "returns the initial setup" do
|
21
|
+
assert_equal @result[:setup], ['setup']
|
22
|
+
end
|
23
|
+
|
24
|
+
it "returns the first window" do
|
25
|
+
@window1 = @result[:windows]['window1']
|
26
|
+
@tab1 = @window1[:tabs]
|
27
|
+
|
28
|
+
assert_equal @window1[:before], ['before']
|
29
|
+
assert_equal @window1[:options], :size => [70, 30]
|
30
|
+
|
31
|
+
assert_equal @tab1['default'][:commands], ['whoami && who && ls']
|
32
|
+
assert_equal @tab1['tab1'][:commands], ['first-tab', 'motion &', 'foo']
|
33
|
+
|
34
|
+
assert_equal @tab1['tab2'][:options], :settings => 'Grass', :name => 'second'
|
35
|
+
assert_equal @tab1['tab2'][:commands], ['second-tab','second-tab:ls']
|
36
|
+
|
37
|
+
assert_equal @tab1['tab3'][:options], :settings => 'Pro', :name => 'third'
|
38
|
+
assert_equal @tab1['tab3'][:commands], ['third-tab', "(mvim &) && (gitx &) && uptime"]
|
39
|
+
|
40
|
+
assert_equal @tab1['tab4'][:options], :settings => 'Grass', :name => 'fourth'
|
41
|
+
assert_equal @tab1['tab4'][:commands], ['fourth-tab']
|
42
|
+
end
|
43
|
+
|
44
|
+
it "returns the second window" do
|
45
|
+
@window2 = @result[:windows]['window2']
|
46
|
+
@tab2 = @window2[:tabs]
|
47
|
+
|
48
|
+
assert_equal @window2[:before], ['name:before']
|
49
|
+
assert_equal @window2[:options], :name => 'name'
|
50
|
+
|
51
|
+
assert_equal @tab2['tab1'][:commands], ['name:tab']
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
describe ".to_hash with YAML" do
|
57
|
+
before do
|
58
|
+
@result = @yaml.to_hash
|
59
|
+
end
|
60
|
+
|
61
|
+
it "returns no setup" do
|
62
|
+
assert_equal @result[:setup], nil
|
63
|
+
end
|
64
|
+
|
65
|
+
it "returns the default window" do
|
66
|
+
@tabs = @result[:windows]['default'][:tabs]
|
67
|
+
|
68
|
+
assert_equal @tabs['tab1'][:commands], ['cd /foo/bar', 'gitx']
|
69
|
+
assert_equal @tabs['tab1'][:options], {}
|
70
|
+
|
71
|
+
assert_equal @tabs['tab2'][:commands], ['ls', 'mate .']
|
72
|
+
assert_equal @tabs['tab2'][:options], {}
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
setup 'setup'
|
2
|
+
|
3
|
+
tab 'default', 'default-tab'
|
4
|
+
|
5
|
+
window :size => [70,30] do
|
6
|
+
|
7
|
+
before 'before'
|
8
|
+
|
9
|
+
run 'whoami', 'who', 'ls'
|
10
|
+
|
11
|
+
tab 'first-tab', 'motion &', 'foo'
|
12
|
+
|
13
|
+
tab 'second', :settings => 'Grass' do
|
14
|
+
run 'second-tab'
|
15
|
+
run 'second-tab:ls'
|
16
|
+
end
|
17
|
+
|
18
|
+
tab 'third', :settings => 'Pro' do
|
19
|
+
run 'third-tab'
|
20
|
+
run 'mvim &', 'gitx &', 'uptime'
|
21
|
+
end
|
22
|
+
|
23
|
+
tab 'fourth', :settings => 'Grass' do
|
24
|
+
run 'fourth-tab'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
window 'name' do
|
29
|
+
before { run 'name:before' }
|
30
|
+
|
31
|
+
tab 'name:tab'
|
32
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
gem 'minitest'
|
3
|
+
require 'minitest/autorun'
|
4
|
+
require 'fakefs/safe'
|
5
|
+
require 'mocha'
|
6
|
+
require File.expand_path('../../lib/consular', __FILE__)
|
7
|
+
|
8
|
+
|
9
|
+
class ColoredIO
|
10
|
+
ESC = "\e["
|
11
|
+
NND = "#{ESC}0m"
|
12
|
+
|
13
|
+
def initialize(io)
|
14
|
+
@io = io
|
15
|
+
end
|
16
|
+
|
17
|
+
def print(o)
|
18
|
+
case o
|
19
|
+
when "."
|
20
|
+
@io.send(:print, "#{ESC}32m#{o}#{NND}")
|
21
|
+
when "E"
|
22
|
+
@io.send(:print, "#{ESC}33m#{o}#{NND}")
|
23
|
+
when "F"
|
24
|
+
@io.send(:print, "#{ESC}31m#{o}#{NND}")
|
25
|
+
else
|
26
|
+
@io.send(:print, o)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def puts(*o)
|
31
|
+
super
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
MiniTest::Unit.output = ColoredIO.new(MiniTest::Unit.output)
|
36
|
+
|
37
|
+
# This is to silence the 'task' warning for the mocks.
|
38
|
+
#
|
39
|
+
class Thor
|
40
|
+
class << self
|
41
|
+
def create_task(meth) #:nodoc:
|
42
|
+
if @usage && @desc
|
43
|
+
base_class = @hide ? Thor::HiddenTask : Thor::Task
|
44
|
+
tasks[meth] = base_class.new(meth, @desc, @long_desc, @usage, method_options)
|
45
|
+
@usage, @desc, @long_desc, @method_options, @hide = nil
|
46
|
+
true
|
47
|
+
elsif self.all_tasks[meth] || meth == "method_missing"
|
48
|
+
true
|
49
|
+
else
|
50
|
+
false
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
data/spec.watchr
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
ENV["WATCHR"] = "1"
|
2
|
+
system 'clear'
|
3
|
+
|
4
|
+
def growl(message)
|
5
|
+
growlnotify = `which growlnotify`.chomp
|
6
|
+
if not growlnotify.empty?
|
7
|
+
title = "Watchr Test Results"
|
8
|
+
image = message.include?('0 failures, 0 errors') ? "~/.watchr_images/passed.png" : "~/.watchr_images/failed.png"
|
9
|
+
options = "-w -n Watchr --image '#{File.expand_path(image)}' -m '#{message}' '#{title}'"
|
10
|
+
system %(#{growlnotify} #{options} &)
|
11
|
+
else
|
12
|
+
puts message
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def run(cmd)
|
17
|
+
puts(cmd)
|
18
|
+
`#{cmd}`
|
19
|
+
end
|
20
|
+
|
21
|
+
def run_test_file(file)
|
22
|
+
system('clear')
|
23
|
+
result = run(%Q(ruby -I"lib:test" -rubygems #{file}))
|
24
|
+
growl result.split("\n").last rescue nil
|
25
|
+
puts result
|
26
|
+
end
|
27
|
+
|
28
|
+
def run_all_tests
|
29
|
+
system('clear')
|
30
|
+
result = run "rake spec"
|
31
|
+
growl result.split("\n").last rescue nil
|
32
|
+
puts result
|
33
|
+
end
|
34
|
+
|
35
|
+
def related_test_files(path)
|
36
|
+
Dir['spec/**/*.rb'].select { |file| file =~ /#{File.basename(path).split(".").first}_spec.rb/ }
|
37
|
+
end
|
38
|
+
|
39
|
+
def run_suite
|
40
|
+
run_all_tests
|
41
|
+
end
|
42
|
+
|
43
|
+
watch('spec/spec_helper\.rb') { run_all_tests }
|
44
|
+
watch('spec/(.*).*_spec\.rb') { |m| run_test_file(m[0]) }
|
45
|
+
watch('lib/.*/.*\.rb') { |m| related_test_files(m[0]).map {|tf| run_test_file(tf) } }
|
46
|
+
|
47
|
+
# Ctrl-\
|
48
|
+
Signal.trap 'QUIT' do
|
49
|
+
puts " --- Running all tests ---\n\n"
|
50
|
+
run_all_tests
|
51
|
+
end
|
52
|
+
|
53
|
+
@interrupted = false
|
54
|
+
|
55
|
+
# Ctrl-C
|
56
|
+
Signal.trap 'INT' do
|
57
|
+
if @interrupted then
|
58
|
+
@wants_to_quit = true
|
59
|
+
abort("\n")
|
60
|
+
else
|
61
|
+
puts "Interrupt a second time to quit"
|
62
|
+
@interrupted = true
|
63
|
+
Kernel.sleep 1.5
|
64
|
+
# raise Interrupt, nil # let the run loop catch it
|
65
|
+
run_suite
|
66
|
+
end
|
67
|
+
end
|
metadata
ADDED
@@ -0,0 +1,172 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: consular
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 15424055
|
5
|
+
prerelease: 6
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 0
|
9
|
+
- 0
|
10
|
+
- rc
|
11
|
+
- 1
|
12
|
+
version: 1.0.0.rc1
|
13
|
+
platform: ruby
|
14
|
+
authors:
|
15
|
+
- Arthur Chiu
|
16
|
+
autorequire:
|
17
|
+
bindir: bin
|
18
|
+
cert_chain: []
|
19
|
+
|
20
|
+
date: 2011-10-09 00:00:00 -07:00
|
21
|
+
default_executable:
|
22
|
+
dependencies:
|
23
|
+
- !ruby/object:Gem::Dependency
|
24
|
+
name: thor
|
25
|
+
prerelease: false
|
26
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
27
|
+
none: false
|
28
|
+
requirements:
|
29
|
+
- - ">="
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
hash: 3
|
32
|
+
segments:
|
33
|
+
- 0
|
34
|
+
version: "0"
|
35
|
+
type: :runtime
|
36
|
+
version_requirements: *id001
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: activesupport
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
hash: 3
|
46
|
+
segments:
|
47
|
+
- 0
|
48
|
+
version: "0"
|
49
|
+
type: :runtime
|
50
|
+
version_requirements: *id002
|
51
|
+
- !ruby/object:Gem::Dependency
|
52
|
+
name: minitest
|
53
|
+
prerelease: false
|
54
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
hash: 3
|
60
|
+
segments:
|
61
|
+
- 0
|
62
|
+
version: "0"
|
63
|
+
type: :development
|
64
|
+
version_requirements: *id003
|
65
|
+
- !ruby/object:Gem::Dependency
|
66
|
+
name: mocha
|
67
|
+
prerelease: false
|
68
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
hash: 3
|
74
|
+
segments:
|
75
|
+
- 0
|
76
|
+
version: "0"
|
77
|
+
type: :development
|
78
|
+
version_requirements: *id004
|
79
|
+
- !ruby/object:Gem::Dependency
|
80
|
+
name: fakefs
|
81
|
+
prerelease: false
|
82
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ">="
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
hash: 3
|
88
|
+
segments:
|
89
|
+
- 0
|
90
|
+
version: "0"
|
91
|
+
type: :development
|
92
|
+
version_requirements: *id005
|
93
|
+
description: Terminal Automation to get you on your projects quickly
|
94
|
+
email:
|
95
|
+
- mr.arthur.chiu@gmail.com
|
96
|
+
executables:
|
97
|
+
- consular
|
98
|
+
extensions: []
|
99
|
+
|
100
|
+
extra_rdoc_files: []
|
101
|
+
|
102
|
+
files:
|
103
|
+
- .gitignore
|
104
|
+
- Gemfile
|
105
|
+
- Gemfile.lock
|
106
|
+
- LICENSE
|
107
|
+
- README.md
|
108
|
+
- Rakefile
|
109
|
+
- Termfile
|
110
|
+
- bin/consular
|
111
|
+
- consular.gemspec
|
112
|
+
- lib/consular.rb
|
113
|
+
- lib/consular/cli.rb
|
114
|
+
- lib/consular/core.rb
|
115
|
+
- lib/consular/dsl.rb
|
116
|
+
- lib/consular/version.rb
|
117
|
+
- lib/templates/consularc.tt
|
118
|
+
- lib/templates/example.term.tt
|
119
|
+
- lib/templates/example.yml.tt
|
120
|
+
- spec.watchr
|
121
|
+
- spec/cli_spec.rb
|
122
|
+
- spec/consular_spec.rb
|
123
|
+
- spec/core_spec.rb
|
124
|
+
- spec/dsl_spec.rb
|
125
|
+
- spec/fixtures/bar.term
|
126
|
+
- spec/fixtures/foo.yml
|
127
|
+
- spec/spec_helper.rb
|
128
|
+
has_rdoc: true
|
129
|
+
homepage: http://www.github.com/achiu/consular
|
130
|
+
licenses: []
|
131
|
+
|
132
|
+
post_install_message: "********************************************************************************\n\n Consular has been installed! Please run:\n\n consular init\n\n This will create a directory at ~/.config/consular which will hold all your global scripts.\n Also a .consularc file will be generated in your HOME directory which you can further configure\n Consular.\n\n\
|
133
|
+
********************************************************************************\n "
|
134
|
+
rdoc_options: []
|
135
|
+
|
136
|
+
require_paths:
|
137
|
+
- lib
|
138
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
139
|
+
none: false
|
140
|
+
requirements:
|
141
|
+
- - ">="
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
hash: 3
|
144
|
+
segments:
|
145
|
+
- 0
|
146
|
+
version: "0"
|
147
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
148
|
+
none: false
|
149
|
+
requirements:
|
150
|
+
- - ">"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
hash: 25
|
153
|
+
segments:
|
154
|
+
- 1
|
155
|
+
- 3
|
156
|
+
- 1
|
157
|
+
version: 1.3.1
|
158
|
+
requirements: []
|
159
|
+
|
160
|
+
rubyforge_project: consular
|
161
|
+
rubygems_version: 1.6.2
|
162
|
+
signing_key:
|
163
|
+
specification_version: 3
|
164
|
+
summary: Quickly setup your terminal windows for your projects
|
165
|
+
test_files:
|
166
|
+
- spec/cli_spec.rb
|
167
|
+
- spec/consular_spec.rb
|
168
|
+
- spec/core_spec.rb
|
169
|
+
- spec/dsl_spec.rb
|
170
|
+
- spec/fixtures/bar.term
|
171
|
+
- spec/fixtures/foo.yml
|
172
|
+
- spec/spec_helper.rb
|