hiiro 0.1.157 → 0.1.159

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6a1dfe8868ee27e926e81edb4d93f9dd75bab129a493985a00505a267088e32c
4
- data.tar.gz: c5f7a4fb1aea909d05ebb8e00a737bc28bf7524a19e4f52f7af518aba508d5f0
3
+ metadata.gz: 394980810fd90dc9fdd82383a671502fd78669690479d6b3e6ba0fb4ed6510fc
4
+ data.tar.gz: 189dffc8b1e175751572114424b7ce0078e6eae386aa3c3993ae0d0689c37733
5
5
  SHA512:
6
- metadata.gz: 9dc4b695cbb678fa4ec76e940baba3356c67f6eeb551bcef4dd7f42de63c247fe42b9b98403a08ff7b0af406de0ce109d7bdbac9eda37dee71938b432566f114
7
- data.tar.gz: f16b50413fd3c6e01b206bc385f08157fa504466470ad1dbb84dd9513c0253961f2c5a81f928fff0334241d40ac7fb1d64dd1a3e3e62da835e0ca4ea5b952cc8
6
+ metadata.gz: 6cef595bf8648318ade523cd214a43d76960398543168803fe9a2cb2948dbe4d065e259a5de3aa5ebc60a2e703fa3de21e049b5c9c6295a3c3602c8a5f6524fd
7
+ data.tar.gz: '009cf0ef87a09777f322bba3868bd06197d1b8207f94e580fe7e63ed1437f2a5c965c35b66b7479f3fb819a0cf90dd64d9327f38fc76926053371c7a6b984b7f'
@@ -82,14 +82,8 @@ class Hiiro
82
82
  puts "Starting group '#{group[:name]}'..."
83
83
 
84
84
  # Create one window for the group, split panes for each service
85
- first_member = members.first
86
- first_name = first_member['name'] || first_member[:name]
87
- first_svc = find_service(first_name)
88
- first_base_dir = resolve_base_dir(first_svc&.[](:base_dir))
89
-
90
- # Create a new window for the group
91
- window_target = create_tmux_window(session, group[:name], first_base_dir)
92
- first_pane_id = capture_pane_id(window_target)
85
+ window_target, first_pane_id = create_tmux_window(session, group[:name])
86
+ last_pane_id = first_pane_id
93
87
 
94
88
  members.each_with_index do |member, idx|
95
89
  member_name = member['name'] || member[:name]
@@ -98,14 +92,12 @@ class Hiiro
98
92
  svc = find_service(member_name)
99
93
  next unless svc
100
94
 
101
- base_dir = resolve_base_dir(svc[:base_dir])
102
-
103
95
  if idx == 0
104
- # First service uses the initial pane
105
96
  pane_id = first_pane_id
106
97
  else
107
- # Subsequent services get split panes
108
- pane_id = split_tmux_pane(window_target, base_dir)
98
+ # Split from the last pane so each new pane is distinct
99
+ pane_id = split_tmux_pane(window_target, last_pane_id)
100
+ last_pane_id = pane_id
109
101
  end
110
102
 
111
103
  member_tmux_info = tmux_info.merge(
@@ -203,8 +195,7 @@ class Hiiro
203
195
 
204
196
  if session && !skip_window_creation
205
197
  # Create a new tmux window for this service
206
- window_target = create_tmux_window(session, svc_name, base_dir)
207
- pane_id = capture_pane_id(window_target)
198
+ window_target, pane_id = create_tmux_window(session, svc_name)
208
199
  elsif session && skip_window_creation
209
200
  # Pane already created by start_group
210
201
  pane_id = tmux_info[:pane]
@@ -215,7 +206,7 @@ class Hiiro
215
206
  end
216
207
 
217
208
  if pane_id
218
- system('tmux', 'send-keys', '-t', pane_id, script, 'Enter')
209
+ send_to_pane(pane_id, base_dir, script)
219
210
  else
220
211
  system("cd #{base_dir} && #{script} &")
221
212
  end
@@ -754,7 +745,7 @@ class Hiiro
754
745
  end
755
746
 
756
747
  def write_shell_script(path, cmds)
757
- lines = ["#!/usr/bin/env bash", "set -e"]
748
+ lines = ["#!/usr/bin/env bash"]
758
749
  lines.concat(cmds)
759
750
  File.write(path, lines.join("\n") + "\n")
760
751
  File.chmod(0755, path)
@@ -809,19 +800,20 @@ class Hiiro
809
800
  `tmux display-message -p '#S'`.chomp
810
801
  end
811
802
 
812
- def create_tmux_window(session, name, start_dir)
813
- system('tmux', 'new-window', '-d', '-t', session, '-n', name, '-c', start_dir)
814
- "#{session}:#{name}"
803
+ def create_tmux_window(session, name)
804
+ pane_id = `tmux new-window -d -t #{session} -n #{name} -P -F '\#{pane_id}'`.chomp
805
+ window_target = "#{session}:#{name}"
806
+ [window_target, pane_id]
815
807
  end
816
808
 
817
- def capture_pane_id(window_target)
818
- `tmux list-panes -t #{window_target} -F '\#{pane_id}'`.chomp.split("\n").last
809
+ def split_tmux_pane(window_target, target_pane_id)
810
+ pane_id = `tmux split-window -d -t #{target_pane_id} -P -F '\#{pane_id}'`.chomp
811
+ system('tmux', 'select-layout', '-t', window_target, 'even-vertical')
812
+ pane_id
819
813
  end
820
814
 
821
- def split_tmux_pane(window_target, start_dir)
822
- system('tmux', 'split-window', '-d', '-t', window_target, '-c', start_dir)
823
- system('tmux', 'select-layout', '-t', window_target, 'even-vertical')
824
- `tmux list-panes -t #{window_target} -F '\#{pane_id}'`.chomp.split("\n").last
815
+ def send_to_pane(pane_id, base_dir, script)
816
+ system('tmux', 'send-keys', '-t', pane_id, "cd #{base_dir} && #{script}", 'Enter')
825
817
  end
826
818
 
827
819
  def load_config
data/lib/hiiro/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Hiiro
2
- VERSION = "0.1.157"
2
+ VERSION = "0.1.159"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hiiro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.157
4
+ version: 0.1.159
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Toyota