hiiro 0.1.188 → 0.1.190

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: 2cb2bdb3a7ee7ccb6df2a00fe53543b333ffcd296851173dee6d5b9ba0288d1b
4
- data.tar.gz: 6d4a22d736e4be81ae24db5c1307bf0e9848805887db258e9d504367448a4c04
3
+ metadata.gz: 40ab3fcde780b920c3f1ce71f90c0545bb7d7b81ad469abcc03c0d1bb663fcad
4
+ data.tar.gz: 5528cb4426cb749e241efcec029a2b8e0aa9197743b684c216b7394e9f4c8052
5
5
  SHA512:
6
- metadata.gz: 0ee1134f16b018c694fd1b65552016ca9e6851b24f18985cc9e0f636f92426fe1d2c0c3023fbfb4c394017c2f0c7766fa9824b34c48b60b0d77e7ea13a646877
7
- data.tar.gz: 4d513beb3137c09df0cd8b29d09cd21b632e39e1ffbc50ab7a57f91cac6608a8f0761da31935ce4d6b60ccbbbace95be66d686041ed93195bd757f78fa946aaa
6
+ metadata.gz: 796b245499c2ceb2ac1afae24e5e729c8f5404009f104285fffb826126c44f673714f32d44c93d71eea0a88fee41fe9db9a41955e1bdf8063a80eb760d6b2296
7
+ data.tar.gz: 3c65112758d952b7492aa5c1c0956f6acb4091050da3839648f077c59fc95e9f750c52ccedeb87bfb6301910a92d20cc688ac147a70172ec92a0c3e21b55734a
data/lib/hiiro/tasks.rb CHANGED
@@ -185,30 +185,44 @@ class Hiiro
185
185
  puts "#{label}:"
186
186
  puts
187
187
 
188
+ # Collect rows as {prefix, name, tree, branch, session} so we can
189
+ # compute max column widths before rendering.
190
+ rows = []
188
191
  items.each do |task|
189
192
  marker = (current && current.name == task.name) ? "*" : " "
190
- line = task.display_line(scope: scope, environment: environment)
191
- puts "#{marker} #{line}"
193
+ rows << { prefix: "#{marker} ", **task.display_data(scope: scope, environment: environment) }
192
194
 
193
195
  if scope == :task
194
- subs = subtasks(task)
195
- subs.each do |st|
196
+ subtasks(task).each do |st|
196
197
  sub_marker = (current && current.name == st.name) ? "*" : " "
197
- sub_line = st.display_line(scope: :subtask, environment: environment)
198
- puts "#{sub_marker} - #{sub_line}"
198
+ rows << { prefix: "#{sub_marker} - ", **st.display_data(scope: :subtask, environment: environment) }
199
199
  end
200
200
  end
201
201
  end
202
202
 
203
+ # Column widths: the name column absorbs the variable-length prefix so
204
+ # that tree/branch/session always start at the same position.
205
+ name_col = rows.map { |r| r[:prefix].length + r[:name].length }.max
206
+ tree_col = rows.map { |r| r[:tree].length }.max
207
+ branch_col = rows.map { |r| r[:branch].length }.max
208
+
209
+ rows.each do |r|
210
+ name_pad = name_col - r[:prefix].length
211
+ print r[:prefix]
212
+ puts format("%-#{name_pad}s %-#{tree_col}s %-#{branch_col}s %s",
213
+ r[:name], r[:tree], r[:branch], r[:session])
214
+ end
215
+
203
216
  available = environment.all_trees.reject { |t|
204
217
  environment.all_tasks.any? { |task| task.tree_name == t.name }
205
218
  }
206
219
 
207
220
  if available.any?
208
221
  puts
222
+ avail_name_col = [available.map { |t| t.name.length }.max, name_col].max
209
223
  available.each do |tree|
210
- branch_str = tree.branch ? " [#{tree.branch}]" : tree.detached? ? " [(detached)]" : ""
211
- puts format(" %-25s (available)%s", tree.name, branch_str)
224
+ branch_str = tree.branch ? "[#{tree.branch}]" : tree.detached? ? "[(detached)]" : ""
225
+ puts format(" %-#{avail_name_col}s (available) %s", tree.name, branch_str).rstrip
212
226
  end
213
227
  end
214
228
  end
@@ -364,9 +378,15 @@ class Hiiro
364
378
 
365
379
  mapping = {}
366
380
 
367
- task_list.each do |task|
381
+ all_data = task_list.map { |t| [t, t.display_data(scope: scope, environment: environment)] }
382
+ name_col = all_data.map { |_, d| d[:name].length }.max || 0
383
+ tree_col = all_data.map { |_, d| d[:tree].length }.max || 0
384
+ branch_col = all_data.map { |_, d| d[:branch].length }.max || 0
385
+
386
+ all_data.each do |task, d|
368
387
  display_name = scope == :subtask ? task.short_name : task.name
369
- line = task.display_line(scope: scope, environment: environment)
388
+ line = format("%-#{name_col}s %-#{tree_col}s %-#{branch_col}s %s",
389
+ d[:name], d[:tree], d[:branch], d[:session])
370
390
  mapping[line] = { type: :task, name: display_name }
371
391
  end
372
392
 
@@ -957,17 +977,16 @@ class Hiiro
957
977
  h
958
978
  end
959
979
 
960
- def display_line(scope: :task, environment:)
980
+ def display_data(scope: :task, environment:)
961
981
  display_name = (scope == :subtask) ? short_name : name
962
982
  tree = environment.find_tree(tree_name)
963
983
  branch = tree&.branch || (tree&.detached? ? '(detached)' : '(none)')
964
- session = session_name || '(none)'
965
-
966
- format("%-25s tree: %-20s branch: %-20s session: %s",
967
- display_name,
968
- tree_name || '(none)',
969
- branch,
970
- session)
984
+ {
985
+ name: display_name,
986
+ tree: tree_name || '(none)',
987
+ branch: "[#{branch}]",
988
+ session: "(#{session_name || '(none)'})"
989
+ }
971
990
  end
972
991
  end
973
992
 
data/lib/hiiro/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Hiiro
2
- VERSION = "0.1.188"
2
+ VERSION = "0.1.190"
3
3
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hiiro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.188
4
+ version: 0.1.190
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Toyota
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2026-03-07 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: pry
@@ -186,7 +185,6 @@ metadata:
186
185
  homepage_uri: https://github.com/unixsuperhero/hiiro
187
186
  source_code_uri: https://github.com/unixsuperhero/hiiro
188
187
  changelog_uri: https://github.com/unixsuperhero/hiiro/blob/main/CHANGELOG.md
189
- post_install_message:
190
188
  rdoc_options: []
191
189
  require_paths:
192
190
  - lib
@@ -201,8 +199,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
201
199
  - !ruby/object:Gem::Version
202
200
  version: '0'
203
201
  requirements: []
204
- rubygems_version: 3.3.7
205
- signing_key:
202
+ rubygems_version: 4.0.3
206
203
  specification_version: 4
207
204
  summary: A lightweight CLI framework for Ruby
208
205
  test_files: []