hiiro 0.1.179 → 0.1.180

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: af6333d158a119c0231a4e5087b32c0a8c4fec56d25cfe2c513e4941c1d2ca9e
4
- data.tar.gz: 36aa8f6219a0f424671974008389f554490669e0da7e72d20b5c6854d2086153
3
+ metadata.gz: f20a871c83c5a99f070239f734a5b03bff64f88229f16292cee6b80618a7b6c1
4
+ data.tar.gz: 713f2256fb0378a9de8b1888c0e2a1a2e945a7fef7746fc8b5b3b9061ac11ff6
5
5
  SHA512:
6
- metadata.gz: 123dbebf89e634a3be0555298b186383345d98a3eb57da5c69c4037d2517aa8a709995979649e88d6bd581a930908ed8cfabed68e19a9f93a2cbe0822b1ab41c
7
- data.tar.gz: 8815f9e6a37b1c19360cb948d68ae1baf8241a5e220c32c32134d849adca07dbdbccf4c3d1b61b13741c8765b6275cec4422af10c1f62ced875a2a77530ba0c5
6
+ metadata.gz: 8768803a7e31dda94c85e6ed0cc60c88ff1cee45a635bf7cc7530b4c52f804077f37006ed4cf5d228ce70c8069039a1a8f947232124b180131445f59dc513b22
7
+ data.tar.gz: 00d19f60ce67545fa54d5cb7cc1ac9eab52216b358c4e68f3d1b66fbcfb1fd879bcd29370509d6571d4b90b135708c154933b8057f6c024163d0fd001d595d54
data/lib/hiiro/tasks.rb CHANGED
@@ -351,15 +351,29 @@ class Hiiro
351
351
  else
352
352
  environment.all_tasks.sort_by(&:name)
353
353
  end
354
- return nil if task_list.empty?
355
354
 
356
- mapping = task_list.each_with_object({}) do |task, h|
355
+ mapping = {}
356
+
357
+ task_list.each do |task|
357
358
  display_name = scope == :subtask ? task.short_name : task.name
358
359
  line = task.display_line(scope: scope, environment: environment)
359
- h[line] = display_name
360
+ mapping[line] = { type: :task, name: display_name }
360
361
  end
361
362
 
362
- hiiro.fuzzyfind_from_map(mapping)
363
+ # Add non-task tmux sessions (exclude sessions that belong to tasks)
364
+ if scope == :task
365
+ task_session_names = environment.all_tasks.map(&:session_name)
366
+ extra_sessions = environment.all_sessions.reject { |s| task_session_names.include?(s.name) }
367
+ extra_sessions.sort_by(&:name).each do |session|
368
+ line = format("%-25s (tmux session)", session.name)
369
+ mapping[line] = { type: :session, name: session.name }
370
+ end
371
+ end
372
+
373
+ return nil if mapping.empty?
374
+
375
+ selected = hiiro.fuzzyfind_from_map(mapping)
376
+ selected
363
377
  end
364
378
 
365
379
  def value_for_task(task_name = nil, &block)
@@ -559,10 +573,34 @@ class Hiiro
559
573
 
560
574
  h.add_subcmd(:switch) do |task_name=nil, app_name=nil|
561
575
  if task_name.nil?
562
- task_name = tm.select_task_interactive
563
- next unless task_name
576
+ selected = tm.select_task_interactive
577
+ next unless selected
578
+
579
+ if selected.is_a?(Hash)
580
+ if selected[:type] == :session
581
+ h.start_tmux_session(selected[:name])
582
+ puts "Switched to session '#{selected[:name]}'"
583
+ next
584
+ else
585
+ task_name = selected[:name]
586
+ end
587
+ else
588
+ task_name = selected
589
+ end
564
590
  end
591
+
565
592
  task = tm.task_by_name(task_name)
593
+
594
+ # If no task found, check for a matching tmux session
595
+ unless task
596
+ session = tm.environment.find_session(task_name)
597
+ if session
598
+ h.start_tmux_session(session.name)
599
+ puts "Switched to session '#{session.name}'"
600
+ next
601
+ end
602
+ end
603
+
566
604
  tm.switch_to_task(task, app_name: app_name)
567
605
  end
568
606
 
data/lib/hiiro/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Hiiro
2
- VERSION = "0.1.179"
2
+ VERSION = "0.1.180"
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.179
4
+ version: 0.1.180
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Toyota