tmuxinator 0.9.0 → 0.10.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.
- checksums.yaml +4 -4
- data/bin/tmuxinator +1 -1
- data/lib/tmuxinator.rb +6 -7
- data/lib/tmuxinator/assets/sample.yml +13 -1
- data/lib/tmuxinator/assets/template-stop.erb +11 -0
- data/lib/tmuxinator/assets/template.erb +15 -1
- data/lib/tmuxinator/cli.rb +85 -15
- data/lib/tmuxinator/config.rb +74 -30
- data/lib/tmuxinator/deprecations.rb +8 -0
- data/lib/tmuxinator/doctor.rb +17 -0
- data/lib/tmuxinator/hooks.rb +14 -0
- data/lib/tmuxinator/hooks/project.rb +42 -0
- data/lib/tmuxinator/pane.rb +26 -18
- data/lib/tmuxinator/project.rb +113 -48
- data/lib/tmuxinator/version.rb +1 -1
- data/lib/tmuxinator/wemux_support.rb +18 -9
- data/lib/tmuxinator/window.rb +42 -26
- data/spec/fixtures/TMUXINATOR_CONFIG/TMUXINATOR_CONFIG.yml +0 -0
- data/spec/fixtures/dot-tmuxinator/both.yml +0 -0
- data/spec/fixtures/dot-tmuxinator/dup/local-dup.yml +0 -0
- data/spec/fixtures/dot-tmuxinator/home.yml +0 -0
- data/spec/fixtures/dot-tmuxinator/local-dup.yml +0 -0
- data/spec/fixtures/sample.yml +0 -1
- data/spec/fixtures/xdg-tmuxinator/both.yml +0 -0
- data/spec/fixtures/xdg-tmuxinator/xdg.yml +0 -0
- data/spec/lib/tmuxinator/cli_spec.rb +87 -13
- data/spec/lib/tmuxinator/config_spec.rb +163 -91
- data/spec/lib/tmuxinator/doctor_spec.rb +69 -0
- data/spec/lib/tmuxinator/hooks/project_spec.rb +63 -0
- data/spec/lib/tmuxinator/hooks_spec.rb +31 -0
- data/spec/lib/tmuxinator/pane_spec.rb +24 -1
- data/spec/lib/tmuxinator/project_spec.rb +58 -23
- data/spec/lib/tmuxinator/window_spec.rb +8 -6
- data/spec/spec_helper.rb +2 -1
- metadata +177 -7
@@ -0,0 +1,69 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Tmuxinator::Doctor do
|
4
|
+
describe ".installed?" do
|
5
|
+
context "tmux is installed" do
|
6
|
+
before do
|
7
|
+
allow(Kernel).to receive(:system) { true }
|
8
|
+
end
|
9
|
+
|
10
|
+
it "returns true" do
|
11
|
+
expect(Tmuxinator::Doctor.installed?).to be_truthy
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
context "tmux is not installed" do
|
16
|
+
before do
|
17
|
+
allow(Kernel).to receive(:system) { false }
|
18
|
+
end
|
19
|
+
|
20
|
+
it "returns false" do
|
21
|
+
expect(Tmuxinator::Doctor.installed?).to be_falsey
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe ".editor?" do
|
27
|
+
context "$EDITOR is set" do
|
28
|
+
before do
|
29
|
+
allow(ENV).to receive(:[]).with("EDITOR") { "vim" }
|
30
|
+
end
|
31
|
+
|
32
|
+
it "returns true" do
|
33
|
+
expect(Tmuxinator::Doctor.editor?).to be_truthy
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
context "$EDITOR is not set" do
|
38
|
+
before do
|
39
|
+
allow(ENV).to receive(:[]).with("EDITOR") { nil }
|
40
|
+
end
|
41
|
+
|
42
|
+
it "returns false" do
|
43
|
+
expect(Tmuxinator::Doctor.editor?).to be_falsey
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe ".shell?" do
|
49
|
+
context "$SHELL is set" do
|
50
|
+
before do
|
51
|
+
allow(ENV).to receive(:[]).with("SHELL") { "vim" }
|
52
|
+
end
|
53
|
+
|
54
|
+
it "returns true" do
|
55
|
+
expect(Tmuxinator::Doctor.shell?).to be_truthy
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
context "$SHELL is not set" do
|
60
|
+
before do
|
61
|
+
allow(ENV).to receive(:[]).with("SHELL") { nil }
|
62
|
+
end
|
63
|
+
|
64
|
+
it "returns false" do
|
65
|
+
expect(Tmuxinator::Doctor.shell?).to be_falsey
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
shared_examples_for "a project hook" do
|
4
|
+
let(:project) { FactoryGirl.build(:project) }
|
5
|
+
|
6
|
+
it "calls Hooks.commands_from" do
|
7
|
+
expect(Tmuxinator::Hooks).to receive(:commands_from).
|
8
|
+
with(kind_of(Tmuxinator::Project), hook_name).once
|
9
|
+
project.send("hook_#{hook_name}")
|
10
|
+
end
|
11
|
+
|
12
|
+
context "hook value is string" do
|
13
|
+
before { project.yaml[hook_name] = "echo 'on hook'" }
|
14
|
+
|
15
|
+
it "returns the string" do
|
16
|
+
expect(project.send("hook_#{hook_name}")).to eq("echo 'on hook'")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context "hook value is Array" do
|
21
|
+
before do
|
22
|
+
project.yaml[hook_name] = [
|
23
|
+
"echo 'on hook'",
|
24
|
+
"echo 'another command here'"
|
25
|
+
]
|
26
|
+
end
|
27
|
+
|
28
|
+
it "joins array using ;" do
|
29
|
+
expect(project.send("hook_#{hook_name}")).
|
30
|
+
to eq("echo 'on hook'; echo 'another command here'")
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe Tmuxinator::Hooks::Project do
|
36
|
+
let(:project) { FactoryGirl.build(:project) }
|
37
|
+
|
38
|
+
describe "#hook_on_project_start" do
|
39
|
+
it_should_behave_like "a project hook" do
|
40
|
+
let(:hook_name) { "on_project_start" }
|
41
|
+
end
|
42
|
+
end
|
43
|
+
describe "#hook_on_project_first_start" do
|
44
|
+
it_should_behave_like "a project hook" do
|
45
|
+
let(:hook_name) { "on_project_first_start" }
|
46
|
+
end
|
47
|
+
end
|
48
|
+
describe "#hook_on_project_restart" do
|
49
|
+
it_should_behave_like "a project hook" do
|
50
|
+
let(:hook_name) { "on_project_restart" }
|
51
|
+
end
|
52
|
+
end
|
53
|
+
describe "#hook_on_project_exit" do
|
54
|
+
it_should_behave_like "a project hook" do
|
55
|
+
let(:hook_name) { "on_project_exit" }
|
56
|
+
end
|
57
|
+
end
|
58
|
+
describe "#hook_on_project_stop" do
|
59
|
+
it_should_behave_like "a project hook" do
|
60
|
+
let(:hook_name) { "on_project_stop" }
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Tmuxinator::Hooks do
|
4
|
+
describe "#commands_from" do
|
5
|
+
let(:project) { FactoryGirl.build(:project) }
|
6
|
+
let(:hook_name) { "generic_hook" }
|
7
|
+
|
8
|
+
context "config value is string" do
|
9
|
+
before { project.yaml[hook_name] = "echo 'on hook'" }
|
10
|
+
|
11
|
+
it "returns the string" do
|
12
|
+
expect(subject.commands_from(project, hook_name)).
|
13
|
+
to eq("echo 'on hook'")
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context "config value is Array" do
|
18
|
+
before do
|
19
|
+
project.yaml[hook_name] = [
|
20
|
+
"echo 'on hook'",
|
21
|
+
"echo 'another command here'"
|
22
|
+
]
|
23
|
+
end
|
24
|
+
|
25
|
+
it "joins array using ;" do
|
26
|
+
expect(subject.commands_from(project, hook_name)).
|
27
|
+
to eq("echo 'on hook'; echo 'another command here'")
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -1,7 +1,30 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe Tmuxinator::Pane do
|
4
|
+
let(:klass) { described_class }
|
5
|
+
let(:instance) { klass.new(index, project, window, *commands) }
|
6
|
+
# let(:index) { "vim" }
|
7
|
+
# let(:project) { 0 }
|
8
|
+
# let(:tab) { nil }
|
9
|
+
# let(:commands) { nil }
|
10
|
+
let(:index) { 0 }
|
11
|
+
let(:project) { double }
|
12
|
+
let(:window) { double }
|
13
|
+
let(:commands) { ["vim", "bash"] }
|
14
|
+
|
15
|
+
before do
|
16
|
+
allow(project).to receive(:name).and_return "foo"
|
17
|
+
allow(project).to receive(:base_index).and_return 0
|
18
|
+
|
19
|
+
allow(window).to receive(:project).and_return project
|
20
|
+
allow(window).to receive(:index).and_return 0
|
21
|
+
end
|
22
|
+
|
23
|
+
subject { instance }
|
24
|
+
|
4
25
|
it "creates an instance" do
|
5
|
-
expect(
|
26
|
+
expect(subject).to be_a(Tmuxinator::Pane)
|
6
27
|
end
|
28
|
+
|
29
|
+
it { expect(subject.tmux_window_and_pane_target).to eql "foo:0.0" }
|
7
30
|
end
|
@@ -28,6 +28,10 @@ describe Tmuxinator::Project do
|
|
28
28
|
FactoryGirl.build(:nameless_window_project)
|
29
29
|
end
|
30
30
|
|
31
|
+
it "should include Hooks" do
|
32
|
+
expect(project).to be_kind_of(Tmuxinator::Hooks::Project)
|
33
|
+
end
|
34
|
+
|
31
35
|
describe "#initialize" do
|
32
36
|
context "valid yaml" do
|
33
37
|
it "creates an instance" do
|
@@ -166,14 +170,34 @@ describe Tmuxinator::Project do
|
|
166
170
|
rendered = project_with_literals_as_window_name
|
167
171
|
expect(rendered.windows.map(&:name)).to match_array(
|
168
172
|
%w(222 222333 111222333444555666777 222.3 4e5 4E5
|
169
|
-
true false nil // /sample/)
|
173
|
+
true false nil // /sample/)
|
174
|
+
)
|
170
175
|
end
|
171
176
|
end
|
172
177
|
end
|
173
178
|
|
174
179
|
describe "#pre_window" do
|
175
|
-
|
176
|
-
|
180
|
+
subject(:pre_window) { project.pre_window }
|
181
|
+
|
182
|
+
context "pre_window in yaml is string" do
|
183
|
+
before { project.yaml["pre_window"] = "mysql.server start" }
|
184
|
+
|
185
|
+
it "returns the string" do
|
186
|
+
expect(pre_window).to eq("mysql.server start")
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
context "pre_window in yaml is Array" do
|
191
|
+
before do
|
192
|
+
project.yaml["pre_window"] = [
|
193
|
+
"mysql.server start",
|
194
|
+
"memcached -d"
|
195
|
+
]
|
196
|
+
end
|
197
|
+
|
198
|
+
it "joins array using ;" do
|
199
|
+
expect(pre_window).to eq("mysql.server start; memcached -d")
|
200
|
+
end
|
177
201
|
end
|
178
202
|
|
179
203
|
context "with deprecations" do
|
@@ -268,42 +292,53 @@ describe Tmuxinator::Project do
|
|
268
292
|
end
|
269
293
|
|
270
294
|
describe "#get_pane_base_index" do
|
271
|
-
it "extracts the
|
272
|
-
|
273
|
-
|
295
|
+
it "extracts pane-base-index from the global tmux window options" do
|
296
|
+
allow_any_instance_of(Kernel).to receive(:`).
|
297
|
+
with(Regexp.new("tmux.+ show-window-option -g pane-base-index")).
|
298
|
+
and_return("pane-base-index 3\n")
|
274
299
|
|
275
300
|
expect(project.get_pane_base_index).to eq("3")
|
276
301
|
end
|
277
302
|
end
|
278
303
|
|
279
304
|
describe "#get_base_index" do
|
280
|
-
it "extracts
|
281
|
-
|
282
|
-
|
305
|
+
it "extracts base-index from the global tmux options" do
|
306
|
+
allow_any_instance_of(Kernel).to receive(:`).
|
307
|
+
with(Regexp.new("tmux.+ show-option -g base-index")).
|
308
|
+
and_return("base-index 1\n")
|
283
309
|
|
284
310
|
expect(project.get_base_index).to eq("1")
|
285
311
|
end
|
286
312
|
end
|
287
313
|
|
288
314
|
describe "#base_index" do
|
289
|
-
context "
|
315
|
+
context "when pane_base_index is 1 and base_index is unset" do
|
290
316
|
before do
|
291
317
|
allow(project).to receive_messages(get_pane_base_index: "1")
|
318
|
+
allow(project).to receive_messages(get_base_index: nil)
|
319
|
+
end
|
320
|
+
|
321
|
+
it "gets the tmux default of 0" do
|
322
|
+
expect(project.base_index).to eq(0)
|
323
|
+
end
|
324
|
+
end
|
325
|
+
|
326
|
+
context "base index present" do
|
327
|
+
before do
|
292
328
|
allow(project).to receive_messages(get_base_index: "1")
|
293
329
|
end
|
294
330
|
|
295
|
-
it "gets the
|
331
|
+
it "gets the base index" do
|
296
332
|
expect(project.base_index).to eq 1
|
297
333
|
end
|
298
334
|
end
|
299
335
|
|
300
|
-
context "
|
336
|
+
context "base index not present" do
|
301
337
|
before do
|
302
|
-
allow(project).to receive_messages(
|
303
|
-
allow(project).to receive_messages(get_base_index: "0")
|
338
|
+
allow(project).to receive_messages(get_base_index: nil)
|
304
339
|
end
|
305
340
|
|
306
|
-
it "
|
341
|
+
it "defaults to 0" do
|
307
342
|
expect(project.base_index).to eq 0
|
308
343
|
end
|
309
344
|
end
|
@@ -314,7 +349,7 @@ describe Tmuxinator::Project do
|
|
314
349
|
it "gets the startup window from project config" do
|
315
350
|
project.yaml["startup_window"] = "logs"
|
316
351
|
|
317
|
-
expect(project.startup_window).to eq("logs")
|
352
|
+
expect(project.startup_window).to eq("sample:logs")
|
318
353
|
end
|
319
354
|
end
|
320
355
|
|
@@ -322,7 +357,7 @@ describe Tmuxinator::Project do
|
|
322
357
|
it "returns base index instead" do
|
323
358
|
allow(project).to receive_messages(base_index: 8)
|
324
359
|
|
325
|
-
expect(project.startup_window).to eq
|
360
|
+
expect(project.startup_window).to eq("sample:8")
|
326
361
|
end
|
327
362
|
end
|
328
363
|
end
|
@@ -332,7 +367,7 @@ describe Tmuxinator::Project do
|
|
332
367
|
it "get the startup pane index from project config" do
|
333
368
|
project.yaml["startup_pane"] = 1
|
334
369
|
|
335
|
-
expect(project.startup_pane).to eq(1)
|
370
|
+
expect(project.startup_pane).to eq("sample:0.1")
|
336
371
|
end
|
337
372
|
end
|
338
373
|
|
@@ -340,7 +375,7 @@ describe Tmuxinator::Project do
|
|
340
375
|
it "returns the base pane instead" do
|
341
376
|
allow(project).to receive_messages(pane_base_index: 4)
|
342
377
|
|
343
|
-
expect(project.startup_pane).to eq(4)
|
378
|
+
expect(project.startup_pane).to eq("sample:0.4")
|
344
379
|
end
|
345
380
|
end
|
346
381
|
end
|
@@ -502,7 +537,7 @@ describe Tmuxinator::Project do
|
|
502
537
|
let(:window) { project.windows.first.name }
|
503
538
|
|
504
539
|
context "when first window has a name" do
|
505
|
-
it "returns command to start a new
|
540
|
+
it "returns command to start a new detached session" do
|
506
541
|
expect(project.tmux_new_session_command).to eq command
|
507
542
|
end
|
508
543
|
end
|
@@ -511,7 +546,7 @@ describe Tmuxinator::Project do
|
|
511
546
|
let(:project) { nameless_window_project }
|
512
547
|
let(:command) { "#{project.tmux} new-session -d -s #{project.name} " }
|
513
548
|
|
514
|
-
it "returns command to for new
|
549
|
+
it "returns command to for new detached session without a window name" do
|
515
550
|
expect(project.tmux_new_session_command).to eq command
|
516
551
|
end
|
517
552
|
end
|
@@ -523,7 +558,7 @@ describe Tmuxinator::Project do
|
|
523
558
|
let(:session) { project.name }
|
524
559
|
|
525
560
|
context "when first window has a name" do
|
526
|
-
it "returns command to start a new
|
561
|
+
it "returns command to start a new detached session" do
|
527
562
|
expect(project.tmux_kill_session_command).to eq command
|
528
563
|
end
|
529
564
|
end
|
@@ -541,7 +576,7 @@ describe Tmuxinator::Project do
|
|
541
576
|
expect(File).to receive(:read).with(path) { bad_yaml }
|
542
577
|
expect do
|
543
578
|
described_class.load(path, options)
|
544
|
-
end.to raise_error RuntimeError,
|
579
|
+
end.to raise_error RuntimeError, /\AFailed to parse config file: .+\z/
|
545
580
|
end
|
546
581
|
|
547
582
|
it "should return an instance of the class if the file loads" do
|
@@ -99,11 +99,13 @@ describe Tmuxinator::Window do
|
|
99
99
|
project: project, tab: window
|
100
100
|
)
|
101
101
|
|
102
|
-
expect(window.panes).to match(
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
102
|
+
expect(window.panes).to match(
|
103
|
+
[
|
104
|
+
a_pane.with(index: 0).and_commands("vim"),
|
105
|
+
a_pane.with(index: 1).and_commands("ls"),
|
106
|
+
a_pane.with(index: 2).and_commands("top")
|
107
|
+
]
|
108
|
+
)
|
107
109
|
end
|
108
110
|
end
|
109
111
|
|
@@ -341,7 +343,7 @@ describe Tmuxinator::Window do
|
|
341
343
|
allow(Tmuxinator::Config).to receive(:default_path_option) { path_option }
|
342
344
|
end
|
343
345
|
|
344
|
-
it "
|
346
|
+
it "constructs window command with path, target, and name options" do
|
345
347
|
expect(window.tmux_new_window_command).to eq full_command
|
346
348
|
end
|
347
349
|
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tmuxinator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Allen Bargi
|
@@ -9,8 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2017-09-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: erubis
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '2.6'
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '2.6'
|
14
28
|
- !ruby/object:Gem::Dependency
|
15
29
|
name: thor
|
16
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -32,19 +46,53 @@ dependencies:
|
|
32
46
|
- !ruby/object:Gem::Version
|
33
47
|
version: 0.15.0
|
34
48
|
- !ruby/object:Gem::Dependency
|
35
|
-
name:
|
49
|
+
name: xdg
|
36
50
|
requirement: !ruby/object:Gem::Requirement
|
37
51
|
requirements:
|
38
52
|
- - "~>"
|
39
53
|
- !ruby/object:Gem::Version
|
40
|
-
version: '2.
|
54
|
+
version: '2.2'
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: 2.2.3
|
41
58
|
type: :runtime
|
42
59
|
prerelease: false
|
43
60
|
version_requirements: !ruby/object:Gem::Requirement
|
44
61
|
requirements:
|
45
62
|
- - "~>"
|
46
63
|
- !ruby/object:Gem::Version
|
47
|
-
version: '2.
|
64
|
+
version: '2.2'
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: 2.2.3
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
name: activesupport
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "<"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: 5.0.0
|
75
|
+
type: :development
|
76
|
+
prerelease: false
|
77
|
+
version_requirements: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "<"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: 5.0.0
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
name: awesome_print
|
84
|
+
requirement: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '1.2'
|
89
|
+
type: :development
|
90
|
+
prerelease: false
|
91
|
+
version_requirements: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - "~>"
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '1.2'
|
48
96
|
- !ruby/object:Gem::Dependency
|
49
97
|
name: bundler
|
50
98
|
requirement: !ruby/object:Gem::Requirement
|
@@ -59,6 +107,104 @@ dependencies:
|
|
59
107
|
- - "~>"
|
60
108
|
- !ruby/object:Gem::Version
|
61
109
|
version: '1.3'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: coveralls
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - "~>"
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '0.7'
|
117
|
+
type: :development
|
118
|
+
prerelease: false
|
119
|
+
version_requirements: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - "~>"
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0.7'
|
124
|
+
- !ruby/object:Gem::Dependency
|
125
|
+
name: factory_girl
|
126
|
+
requirement: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - "~>"
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '4.5'
|
131
|
+
type: :development
|
132
|
+
prerelease: false
|
133
|
+
version_requirements: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - "~>"
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '4.5'
|
138
|
+
- !ruby/object:Gem::Dependency
|
139
|
+
name: pry
|
140
|
+
requirement: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - "~>"
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '0.10'
|
145
|
+
type: :development
|
146
|
+
prerelease: false
|
147
|
+
version_requirements: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - "~>"
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '0.10'
|
152
|
+
- !ruby/object:Gem::Dependency
|
153
|
+
name: rake
|
154
|
+
requirement: !ruby/object:Gem::Requirement
|
155
|
+
requirements:
|
156
|
+
- - "~>"
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '10.4'
|
159
|
+
type: :development
|
160
|
+
prerelease: false
|
161
|
+
version_requirements: !ruby/object:Gem::Requirement
|
162
|
+
requirements:
|
163
|
+
- - "~>"
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: '10.4'
|
166
|
+
- !ruby/object:Gem::Dependency
|
167
|
+
name: rspec
|
168
|
+
requirement: !ruby/object:Gem::Requirement
|
169
|
+
requirements:
|
170
|
+
- - "~>"
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: '3.3'
|
173
|
+
type: :development
|
174
|
+
prerelease: false
|
175
|
+
version_requirements: !ruby/object:Gem::Requirement
|
176
|
+
requirements:
|
177
|
+
- - "~>"
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: '3.3'
|
180
|
+
- !ruby/object:Gem::Dependency
|
181
|
+
name: rubocop
|
182
|
+
requirement: !ruby/object:Gem::Requirement
|
183
|
+
requirements:
|
184
|
+
- - "~>"
|
185
|
+
- !ruby/object:Gem::Version
|
186
|
+
version: 0.46.0
|
187
|
+
type: :development
|
188
|
+
prerelease: false
|
189
|
+
version_requirements: !ruby/object:Gem::Requirement
|
190
|
+
requirements:
|
191
|
+
- - "~>"
|
192
|
+
- !ruby/object:Gem::Version
|
193
|
+
version: 0.46.0
|
194
|
+
- !ruby/object:Gem::Dependency
|
195
|
+
name: simplecov
|
196
|
+
requirement: !ruby/object:Gem::Requirement
|
197
|
+
requirements:
|
198
|
+
- - "~>"
|
199
|
+
- !ruby/object:Gem::Version
|
200
|
+
version: 0.11.0
|
201
|
+
type: :development
|
202
|
+
prerelease: false
|
203
|
+
version_requirements: !ruby/object:Gem::Requirement
|
204
|
+
requirements:
|
205
|
+
- - "~>"
|
206
|
+
- !ruby/object:Gem::Version
|
207
|
+
version: 0.11.0
|
62
208
|
description: Create and manage complex tmux sessions easily.
|
63
209
|
email:
|
64
210
|
- allen.bargi@gmail.com
|
@@ -75,11 +221,15 @@ files:
|
|
75
221
|
- completion/tmuxinator.zsh
|
76
222
|
- lib/tmuxinator.rb
|
77
223
|
- lib/tmuxinator/assets/sample.yml
|
224
|
+
- lib/tmuxinator/assets/template-stop.erb
|
78
225
|
- lib/tmuxinator/assets/template.erb
|
79
226
|
- lib/tmuxinator/assets/wemux_template.erb
|
80
227
|
- lib/tmuxinator/cli.rb
|
81
228
|
- lib/tmuxinator/config.rb
|
82
229
|
- lib/tmuxinator/deprecations.rb
|
230
|
+
- lib/tmuxinator/doctor.rb
|
231
|
+
- lib/tmuxinator/hooks.rb
|
232
|
+
- lib/tmuxinator/hooks/project.rb
|
83
233
|
- lib/tmuxinator/pane.rb
|
84
234
|
- lib/tmuxinator/project.rb
|
85
235
|
- lib/tmuxinator/util.rb
|
@@ -87,7 +237,12 @@ files:
|
|
87
237
|
- lib/tmuxinator/wemux_support.rb
|
88
238
|
- lib/tmuxinator/window.rb
|
89
239
|
- spec/factories/projects.rb
|
240
|
+
- spec/fixtures/TMUXINATOR_CONFIG/TMUXINATOR_CONFIG.yml
|
90
241
|
- spec/fixtures/detach.yml
|
242
|
+
- spec/fixtures/dot-tmuxinator/both.yml
|
243
|
+
- spec/fixtures/dot-tmuxinator/dup/local-dup.yml
|
244
|
+
- spec/fixtures/dot-tmuxinator/home.yml
|
245
|
+
- spec/fixtures/dot-tmuxinator/local-dup.yml
|
91
246
|
- spec/fixtures/nameless_window.yml
|
92
247
|
- spec/fixtures/noname.yml
|
93
248
|
- spec/fixtures/noroot.yml
|
@@ -97,8 +252,13 @@ files:
|
|
97
252
|
- spec/fixtures/sample_literals_as_window_name.yml
|
98
253
|
- spec/fixtures/sample_number_as_name.yml
|
99
254
|
- spec/fixtures/sample_wemux.yml
|
255
|
+
- spec/fixtures/xdg-tmuxinator/both.yml
|
256
|
+
- spec/fixtures/xdg-tmuxinator/xdg.yml
|
100
257
|
- spec/lib/tmuxinator/cli_spec.rb
|
101
258
|
- spec/lib/tmuxinator/config_spec.rb
|
259
|
+
- spec/lib/tmuxinator/doctor_spec.rb
|
260
|
+
- spec/lib/tmuxinator/hooks/project_spec.rb
|
261
|
+
- spec/lib/tmuxinator/hooks_spec.rb
|
102
262
|
- spec/lib/tmuxinator/pane_spec.rb
|
103
263
|
- spec/lib/tmuxinator/project_spec.rb
|
104
264
|
- spec/lib/tmuxinator/util_spec.rb
|
@@ -123,7 +283,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
123
283
|
requirements:
|
124
284
|
- - ">="
|
125
285
|
- !ruby/object:Gem::Version
|
126
|
-
version:
|
286
|
+
version: 2.2.7
|
127
287
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
288
|
requirements:
|
129
289
|
- - ">="
|
@@ -131,13 +291,18 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
131
291
|
version: 1.8.23
|
132
292
|
requirements: []
|
133
293
|
rubyforge_project:
|
134
|
-
rubygems_version: 2.6.
|
294
|
+
rubygems_version: 2.6.13
|
135
295
|
signing_key:
|
136
296
|
specification_version: 4
|
137
297
|
summary: Create and manage complex tmux sessions easily.
|
138
298
|
test_files:
|
139
299
|
- spec/factories/projects.rb
|
300
|
+
- spec/fixtures/TMUXINATOR_CONFIG/TMUXINATOR_CONFIG.yml
|
140
301
|
- spec/fixtures/detach.yml
|
302
|
+
- spec/fixtures/dot-tmuxinator/both.yml
|
303
|
+
- spec/fixtures/dot-tmuxinator/dup/local-dup.yml
|
304
|
+
- spec/fixtures/dot-tmuxinator/home.yml
|
305
|
+
- spec/fixtures/dot-tmuxinator/local-dup.yml
|
141
306
|
- spec/fixtures/nameless_window.yml
|
142
307
|
- spec/fixtures/noname.yml
|
143
308
|
- spec/fixtures/noroot.yml
|
@@ -147,8 +312,13 @@ test_files:
|
|
147
312
|
- spec/fixtures/sample_literals_as_window_name.yml
|
148
313
|
- spec/fixtures/sample_number_as_name.yml
|
149
314
|
- spec/fixtures/sample_wemux.yml
|
315
|
+
- spec/fixtures/xdg-tmuxinator/both.yml
|
316
|
+
- spec/fixtures/xdg-tmuxinator/xdg.yml
|
150
317
|
- spec/lib/tmuxinator/cli_spec.rb
|
151
318
|
- spec/lib/tmuxinator/config_spec.rb
|
319
|
+
- spec/lib/tmuxinator/doctor_spec.rb
|
320
|
+
- spec/lib/tmuxinator/hooks/project_spec.rb
|
321
|
+
- spec/lib/tmuxinator/hooks_spec.rb
|
152
322
|
- spec/lib/tmuxinator/pane_spec.rb
|
153
323
|
- spec/lib/tmuxinator/project_spec.rb
|
154
324
|
- spec/lib/tmuxinator/util_spec.rb
|