hiiro 0.1.62 → 0.1.63

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: 64e567473d1f22a48e6a9dddca4584e1c6accce026dedf317e566c9d5e573faf
4
- data.tar.gz: 1720931f9d35a2eadf0660038eddf092b80732594352d523900a6e791ef93932
3
+ metadata.gz: c505661bb1e4b879e297ae88561006366b956e544a20e1442c050eab22fb0b09
4
+ data.tar.gz: d337405e4dbf36553e20959ce2d321551901f56b28458561ef47bfee6e960053
5
5
  SHA512:
6
- metadata.gz: 39a5eef676bf3a3a19ae08203a224ad207ee6f13933e446de05f3c35218cc9335a765e9048464e1e0b9ffa4cd000d58eccb06ab36be4b1eb4688e2fdc9ba2fb6
7
- data.tar.gz: d43e3a2c7746da724c70c48be1e14bd59a99634936cf6ab7b987d3fc7a4e3e3b9b393a175028ff02454ca3564564dc3a0d21170ae88175dd1ac41b1f14cb9c2c
6
+ metadata.gz: d49b68d063f8e294e2803dab97182f79f3722d5ffca0d63a11839001e7a9ea99d20811749b5c7b718a55192e3276d24300370aa80bc0d3d58d0d938d7e1c7919
7
+ data.tar.gz: 41cdea8ce3225a72df6ade9a76192c9e41a5d435afa525263741981bb5a2bfb5a7976be1169d7f996703fa20650e703bfdc13a5a983bb6580de149e85fc0a197
data/bin/h-branch CHANGED
@@ -225,7 +225,7 @@ hiiro.add_subcmd(:select) do |*args|
225
225
  end
226
226
  end
227
227
 
228
- hiiro.add_subcmd(:checkout, :co) { |branch = nil, *args|
228
+ checkout_branch = lambda { |branch = nil, *args|
229
229
  unless branch
230
230
  # Use sk to select a branch
231
231
  branches = hiiro.git.branches(sort_by: 'authordate', ignore_case: true)
@@ -241,7 +241,10 @@ hiiro.add_subcmd(:checkout, :co) { |branch = nil, *args|
241
241
  system('git', 'checkout', branch, *args)
242
242
  }
243
243
 
244
- hiiro.add_subcmd(:rm, :remove) { |branch = nil, *args|
244
+ hiiro.add_subcmd(:checkout, checkout_branch)
245
+ hiiro.add_subcmd(:co, checkout_branch)
246
+
247
+ remove_branch = lambda { |branch = nil, *args|
245
248
  unless branch
246
249
  # Use sk to select a branch
247
250
  branches = hiiro.git.branches(sort_by: 'authordate', ignore_case: true)
@@ -257,6 +260,9 @@ hiiro.add_subcmd(:rm, :remove) { |branch = nil, *args|
257
260
  system('git', 'branch', '-d', branch, *args)
258
261
  }
259
262
 
263
+ hiiro.add_subcmd(:remove, &remove_branch)
264
+ hiiro.add_subcmd(:rm, &remove_branch)
265
+
260
266
  hiiro.add_subcmd(:duplicate) { |new_name = nil, source = nil|
261
267
  unless new_name
262
268
  puts "Usage: h branch duplicate <new_name> [source_branch]"
data/exe/h CHANGED
@@ -2,17 +2,12 @@
2
2
 
3
3
  require "hiiro"
4
4
  require "fileutils"
5
- require "pry"
6
5
 
7
6
  Hiiro.run(*ARGV, cwd: Dir.pwd, plugins: [Tasks]) do
8
7
  add_subcommand(:version) { |*args|
9
8
  puts Hiiro::VERSION
10
9
  }
11
10
 
12
- add_subcommand(:pry) { |*args|
13
- binding.pry
14
- }
15
-
16
11
  add_subcommand(:ping) { |*args|
17
12
  puts "pong"
18
13
  }
data/lib/hiiro/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Hiiro
2
- VERSION = "0.1.62"
2
+ VERSION = "0.1.63"
3
3
  end
data/lib/hiiro.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require "fileutils"
2
2
  require "yaml"
3
3
  require "shellwords"
4
+ require "pry"
4
5
 
5
6
  require_relative "hiiro/version"
6
7
  require_relative "hiiro/prefix_matcher"
@@ -39,6 +40,10 @@ class Hiiro
39
40
  History.load(hiiro)
40
41
  hiiro.load_plugins(*plugins)
41
42
 
43
+ hiiro.add_subcommand(:pry) { |*args|
44
+ binding.pry
45
+ }
46
+
42
47
  hiiro.add_subcmd(:edit, **values) { |*args|
43
48
  system(ENV['EDITOR'] || 'nvim', hiiro.bin)
44
49
  }
data/plugins/tasks.rb CHANGED
@@ -100,6 +100,14 @@ class Task
100
100
  !subtask?
101
101
  end
102
102
 
103
+ def tree
104
+ @task ||= Environment.current&.find_tree(tree_name)
105
+ end
106
+
107
+ def branch
108
+ tree&.branch
109
+ end
110
+
103
111
  def ==(other)
104
112
  other.is_a?(Task) && name == other.name
105
113
  end
@@ -505,6 +513,30 @@ class TaskManager
505
513
  end
506
514
  end
507
515
 
516
+ def branch(task_name = nil)
517
+ branch_name = nil
518
+
519
+ if task_name.nil?
520
+ selected_task = select_branch_interactive
521
+ return unless selected_task
522
+ task_name, branch_name = selected_task.split(/\s\s*[|]\s\s*/)
523
+ end
524
+
525
+ task = task_by_name(task_name)
526
+ unless task
527
+ puts "Task not found: #{task_name}"
528
+ return
529
+ end
530
+
531
+ if task.branch
532
+ print task.branch
533
+ elsif task.tree&.detached?
534
+ puts "(detached HEAD)"
535
+ else
536
+ puts "(no branch)"
537
+ end
538
+ end
539
+
508
540
  def cd_to_task(task)
509
541
  unless task
510
542
  puts "Task not found"
@@ -574,6 +606,7 @@ class TaskManager
574
606
  puts " list, ls List #{scope_name}s"
575
607
  puts " start NAME [APP] Start a new #{scope_name}"
576
608
  puts " switch [NAME] Switch to a #{scope_name} (interactive if no name)"
609
+ puts " branch [NAME] Print git branch for a #{scope_name} (interactive if no name)"
577
610
  puts " app [APP_NAME] Open app in new tmux window (interactive if no name)"
578
611
  puts " apps List configured apps"
579
612
  puts " cd [APP_NAME] Change directory to app"
@@ -596,6 +629,17 @@ class TaskManager
596
629
  sk_select(names.sort)
597
630
  end
598
631
 
632
+ def select_branch_interactive(prompt = nil)
633
+ names = if scope == :subtask
634
+ tasks.map { |t| format('%-25s | %s', t.short_name, t.branch) }
635
+ else
636
+ environment.all_tasks.map { |t| format('%-25s | %s', t.name, t.branch) }
637
+ end
638
+ return nil if names.empty?
639
+
640
+ sk_select(names.sort)
641
+ end
642
+
599
643
  # --- Private helpers ---
600
644
 
601
645
  private
@@ -790,54 +834,59 @@ module Tasks
790
834
  def self.build_hiiro(parent_hiiro, mgr)
791
835
  bin_name = [parent_hiiro.bin, parent_hiiro.subcmd || ''].join('-')
792
836
 
793
- Hiiro.init(bin_name:, args: parent_hiiro.args) do |h|
794
- h.add_subcmd(:list) { mgr.list }
795
- h.add_subcmd(:ls) { mgr.list }
837
+ Hiiro.init(bin_name:, args: parent_hiiro.args, task_manager: mgr) do |h|
838
+ tm = h.get_value(:task_manager)
839
+ h.add_subcmd(:list) { tm.list }
840
+ h.add_subcmd(:ls) { tm.list }
796
841
 
797
842
  h.add_subcmd(:start) do |task_name, app_name=nil|
798
- mgr.start_task(task_name, app_name: app_name)
843
+ tm.start_task(task_name, app_name: app_name)
799
844
  end
800
845
 
801
846
  h.add_subcmd(:switch) do |task_name=nil, app_name=nil|
802
847
  if task_name.nil?
803
- task_name = mgr.select_task_interactive
848
+ task_name = tm.select_task_interactive
804
849
  next unless task_name
805
850
  end
806
- task = mgr.task_by_name(task_name)
807
- mgr.switch_to_task(task, app_name: app_name)
851
+ task = tm.task_by_name(task_name)
852
+ tm.switch_to_task(task, app_name: app_name)
808
853
  end
809
854
 
810
855
  h.add_subcmd(:app) do |app_name=nil|
811
856
  if app_name.nil?
812
- names = mgr.environment.all_apps.map(&:name)
813
- app_name = mgr.send(:sk_select, names)
857
+ names = tm.environment.all_apps.map(&:name)
858
+ app_name = tm.send(:sk_select, names)
814
859
  next unless app_name
815
860
  end
816
- mgr.open_app(app_name)
861
+ tm.open_app(app_name)
817
862
  end
818
863
 
819
- h.add_subcmd(:apps) { mgr.list_apps }
864
+ h.add_subcmd(:apps) { tm.list_apps }
820
865
 
821
866
  h.add_subcmd(:cd) do |app_name=nil|
822
- mgr.cd_to_app(app_name)
867
+ tm.cd_to_app(app_name)
823
868
  end
824
869
 
825
870
  h.add_subcmd(:path) do |app_name=nil|
826
- mgr.app_path(app_name)
871
+ tm.app_path(app_name)
872
+ end
873
+
874
+ h.add_subcmd(:branch) do |task_name=nil|
875
+ tm.branch(task_name)
827
876
  end
828
877
 
829
- h.add_subcmd(:status) { mgr.status }
830
- h.add_subcmd(:st) { mgr.status }
878
+ h.add_subcmd(:status) { tm.status }
879
+ h.add_subcmd(:st) { tm.status }
831
880
 
832
- h.add_subcmd(:save) { mgr.save }
881
+ h.add_subcmd(:save) { tm.save }
833
882
 
834
883
  h.add_subcmd(:stop) do |task_name=nil|
835
884
  if task_name.nil?
836
- task_name = mgr.select_task_interactive
885
+ task_name = tm.select_task_interactive
837
886
  next unless task_name
838
887
  end
839
- task = mgr.task_by_name(task_name)
840
- mgr.stop_task(task)
888
+ task = tm.task_by_name(task_name)
889
+ tm.stop_task(task)
841
890
  end
842
891
 
843
892
  h.add_subcmd(:edit) do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hiiro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.62
4
+ version: 0.1.63
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Toyota
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-02-09 00:00:00.000000000 Z
11
+ date: 2026-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry