hiiro 0.1.185 → 0.1.186

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: 2c66d846296a1f1cfe12e3c29ea9f6979fefa936af7ccff85bee6eaa4b86b4a1
4
- data.tar.gz: bd1d34ed26b65b8b6f6e30ab7c684fa17aa129ab88134ac661c84a7032be4770
3
+ metadata.gz: 953d7bc3db7d60c019e39a29356b95371ff6919c1542a4a02f5556176bd6a805
4
+ data.tar.gz: 1eb725bc5b2a9d3d1de8a8aba3e118eec99e49696e2402f4e437f1b4c491a674
5
5
  SHA512:
6
- metadata.gz: a9e2553e2171684adf5044d910509f9f20a8349749941ba8dbdd07091e2993d19d88a9ca37fb111c01d2c6addeb37f452ed64b8d072905a8403ec5019fd53eaf
7
- data.tar.gz: 66594ae31634f48641cbaba4b4ad5b81f91c647e516d15019ffbed51bc944cc00e52b6217281a8c3dd6decd573f8007c5cf88e5a76a0b147a3aaec6ae91f2cc7
6
+ metadata.gz: 9a4a3c3bf2238dc75ea1199303c52e63c821ea8c2685ac579ba55f2ad263fd96b54bb8f51751aa73dbb0642e4f2455cb081a28f90fd8ade5890212394072f7d9
7
+ data.tar.gz: 903c4d38edf20669cfe3645b425c91436333cfd0ea48d436aff419ad6125330855d61259bf2c846e902212cd1437b0a10c0b51a0f91eaea76ba19e8be7d2bd96
data/lib/hiiro/queue.rb CHANGED
@@ -184,13 +184,35 @@ class Hiiro
184
184
  }
185
185
  end
186
186
 
187
- def extract_task_flag(args)
188
- idx = args.index('-t')
189
- return [args, nil] unless idx
187
+ def select_task(hiiro)
188
+ env = Environment.current rescue nil
189
+ return nil unless env
190
+
191
+ tasks = env.all_tasks.sort_by(&:name)
192
+ return nil if tasks.empty?
193
+
194
+ mapping = tasks.each_with_object({}) do |task, h|
195
+ line = format("%-25s tree: %-20s", task.name, task.tree_name || '(none)')
196
+ h[line] = task.name
197
+ end
198
+
199
+ hiiro.fuzzyfind_from_map(mapping)
200
+ end
201
+
202
+ def resolve_task_info(opts, hiiro, default_task_info)
203
+ task_name = if opts.choose
204
+ select_task(hiiro)
205
+ elsif opts.task
206
+ opts.task
207
+ else
208
+ nil
209
+ end
190
210
 
191
- task_name = args[idx + 1]
192
- remaining = args[0...idx] + args[(idx + 2)..]
193
- [remaining, task_name]
211
+ if task_name
212
+ task_info_for(task_name)
213
+ else
214
+ default_task_info
215
+ end
194
216
  end
195
217
 
196
218
  def strip_frontmatter(text)
@@ -403,8 +425,12 @@ class Hiiro
403
425
 
404
426
  h.add_subcmd(:add) { |*args|
405
427
  q.queue_dirs
406
- args, flag_task = q.extract_task_flag(args)
407
- ti = flag_task ? q.task_info_for(flag_task) : task_info
428
+ opts = Hiiro::Options.parse(args) do
429
+ option(:task, short: :t, desc: 'Task name')
430
+ flag(:choose, short: :T, desc: 'Choose task interactively')
431
+ end
432
+ args = opts.args
433
+ ti = q.resolve_task_info(opts, h, task_info)
408
434
 
409
435
  tmpfile = Tempfile.new(['hq-', '.md'])
410
436
  prompt_file = tmpfile.path
@@ -446,8 +472,12 @@ class Hiiro
446
472
  h.add_subcmd(:wip) { |*args|
447
473
  q.queue_dirs
448
474
  editor = ENV['EDITOR'] || 'vim'
449
- args, flag_task = q.extract_task_flag(args)
450
- ti = flag_task ? q.task_info_for(flag_task) : task_info
475
+ opts = Hiiro::Options.parse(args) do
476
+ option(:task, short: :t, desc: 'Task name')
477
+ flag(:choose, short: :T, desc: 'Choose task interactively')
478
+ end
479
+ args = opts.args
480
+ ti = q.resolve_task_info(opts, h, task_info)
451
481
  name = args.first
452
482
 
453
483
  if name.nil?
data/lib/hiiro/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Hiiro
2
- VERSION = "0.1.185"
2
+ VERSION = "0.1.186"
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.185
4
+ version: 0.1.186
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Toyota