tmuxinator 0.9.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/bin/tmuxinator +1 -1
  3. data/lib/tmuxinator.rb +6 -7
  4. data/lib/tmuxinator/assets/sample.yml +13 -1
  5. data/lib/tmuxinator/assets/template-stop.erb +11 -0
  6. data/lib/tmuxinator/assets/template.erb +15 -1
  7. data/lib/tmuxinator/cli.rb +85 -15
  8. data/lib/tmuxinator/config.rb +74 -30
  9. data/lib/tmuxinator/deprecations.rb +8 -0
  10. data/lib/tmuxinator/doctor.rb +17 -0
  11. data/lib/tmuxinator/hooks.rb +14 -0
  12. data/lib/tmuxinator/hooks/project.rb +42 -0
  13. data/lib/tmuxinator/pane.rb +26 -18
  14. data/lib/tmuxinator/project.rb +113 -48
  15. data/lib/tmuxinator/version.rb +1 -1
  16. data/lib/tmuxinator/wemux_support.rb +18 -9
  17. data/lib/tmuxinator/window.rb +42 -26
  18. data/spec/fixtures/TMUXINATOR_CONFIG/TMUXINATOR_CONFIG.yml +0 -0
  19. data/spec/fixtures/dot-tmuxinator/both.yml +0 -0
  20. data/spec/fixtures/dot-tmuxinator/dup/local-dup.yml +0 -0
  21. data/spec/fixtures/dot-tmuxinator/home.yml +0 -0
  22. data/spec/fixtures/dot-tmuxinator/local-dup.yml +0 -0
  23. data/spec/fixtures/sample.yml +0 -1
  24. data/spec/fixtures/xdg-tmuxinator/both.yml +0 -0
  25. data/spec/fixtures/xdg-tmuxinator/xdg.yml +0 -0
  26. data/spec/lib/tmuxinator/cli_spec.rb +87 -13
  27. data/spec/lib/tmuxinator/config_spec.rb +163 -91
  28. data/spec/lib/tmuxinator/doctor_spec.rb +69 -0
  29. data/spec/lib/tmuxinator/hooks/project_spec.rb +63 -0
  30. data/spec/lib/tmuxinator/hooks_spec.rb +31 -0
  31. data/spec/lib/tmuxinator/pane_spec.rb +24 -1
  32. data/spec/lib/tmuxinator/project_spec.rb +58 -23
  33. data/spec/lib/tmuxinator/window_spec.rb +8 -6
  34. data/spec/spec_helper.rb +2 -1
  35. 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(Tmuxinator::Pane.new("vim", 0, nil, nil)).to be_a(Tmuxinator::Pane)
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
- it "gets the pre_window command" do
176
- expect(project.pre_window).to eq "rbenv shell 2.0.0-p247"
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 pane_base_index from tmux_options" do
272
- allow(project).to \
273
- receive_messages(show_tmux_options: tmux_config(pane_base_index: 3))
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 the base index from options" do
281
- allow(project).to \
282
- receive_messages(show_tmux_options: tmux_config(base_index: 1))
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 "pane base index present" do
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 pane base index" do
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 "pane base index no present" do
336
+ context "base index not present" do
301
337
  before do
302
- allow(project).to receive_messages(get_pane_base_index: nil)
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 "gets the base index" do
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 8
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 detatched session" do
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 detatched session without a window name" do
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 detatched session" do
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, %r{Failed.to.parse.config.file}
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
- a_pane.with(index: 0).and_commands("vim"),
104
- a_pane.with(index: 1).and_commands("ls"),
105
- a_pane.with(index: 2).and_commands("top")
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 "contstructs window command with path, target, and name options" do
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
 
@@ -1,6 +1,7 @@
1
1
  require "coveralls"
2
- require "simplecov"
3
2
  require "pry"
3
+ require "simplecov"
4
+ require "xdg"
4
5
 
5
6
  formatters = [
6
7
  SimpleCov::Formatter::HTMLFormatter,
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.9.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: 2016-10-08 00:00:00.000000000 Z
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: erubis
49
+ name: xdg
36
50
  requirement: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
- version: '2.6'
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.6'
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: 1.9.3
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.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