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 +4 -4
- data/bin/h-branch +8 -2
- data/exe/h +0 -5
- data/lib/hiiro/version.rb +1 -1
- data/lib/hiiro.rb +5 -0
- data/plugins/tasks.rb +68 -19
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c505661bb1e4b879e297ae88561006366b956e544a20e1442c050eab22fb0b09
|
|
4
|
+
data.tar.gz: d337405e4dbf36553e20959ce2d321551901f56b28458561ef47bfee6e960053
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
-
|
|
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(:
|
|
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
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.
|
|
795
|
-
h.add_subcmd(:
|
|
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
|
-
|
|
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 =
|
|
848
|
+
task_name = tm.select_task_interactive
|
|
804
849
|
next unless task_name
|
|
805
850
|
end
|
|
806
|
-
task =
|
|
807
|
-
|
|
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 =
|
|
813
|
-
app_name =
|
|
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
|
-
|
|
861
|
+
tm.open_app(app_name)
|
|
817
862
|
end
|
|
818
863
|
|
|
819
|
-
h.add_subcmd(:apps) {
|
|
864
|
+
h.add_subcmd(:apps) { tm.list_apps }
|
|
820
865
|
|
|
821
866
|
h.add_subcmd(:cd) do |app_name=nil|
|
|
822
|
-
|
|
867
|
+
tm.cd_to_app(app_name)
|
|
823
868
|
end
|
|
824
869
|
|
|
825
870
|
h.add_subcmd(:path) do |app_name=nil|
|
|
826
|
-
|
|
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) {
|
|
830
|
-
h.add_subcmd(:st) {
|
|
878
|
+
h.add_subcmd(:status) { tm.status }
|
|
879
|
+
h.add_subcmd(:st) { tm.status }
|
|
831
880
|
|
|
832
|
-
h.add_subcmd(: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 =
|
|
885
|
+
task_name = tm.select_task_interactive
|
|
837
886
|
next unless task_name
|
|
838
887
|
end
|
|
839
|
-
task =
|
|
840
|
-
|
|
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.
|
|
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-
|
|
11
|
+
date: 2026-02-10 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: pry
|