hiiro 0.1.201 → 0.1.202
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/lib/hiiro/queue.rb +60 -40
- data/lib/hiiro/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: cb51c411e28d0ce3d0b7d9374b8de629de59442a34baa0428b1eec6198f3a661
|
|
4
|
+
data.tar.gz: 815b50958a7f9d12fa80523ff234a548ace880e722d6c34f5e5461877e2a0e11
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 995d28e52ef80c890d3356112236b53eb4a0ee2a0cf7a09a560573fa45c1c8ba970d75d4405309c00542a4412b7eaf3b5d21d4c8603781ee87acd478c8b5e935
|
|
7
|
+
data.tar.gz: 5c41177b7ccb01d40f4cd56e7a7b2319be8993f89e54fe0d11e10a707e671c1ecb76f4e60844d39d1d5786152f882d5ac0cfc29615397e778b78cedd8f78825c
|
data/lib/hiiro/queue.rb
CHANGED
|
@@ -40,6 +40,50 @@ class Hiiro
|
|
|
40
40
|
Dir.glob(File.join(dir, '*.md')).sort.map { |f| File.basename(f, '.md') }
|
|
41
41
|
end
|
|
42
42
|
|
|
43
|
+
def tasks_in_sorted(status)
|
|
44
|
+
dir = queue_dirs[status]
|
|
45
|
+
Dir.glob(File.join(dir, '*.md')).map { |f|
|
|
46
|
+
{ name: File.basename(f, '.md'), mtime: File.mtime(f) }
|
|
47
|
+
}.sort_by { |t| -t[:mtime].to_i }
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def format_mtime(mtime)
|
|
51
|
+
now = Time.now
|
|
52
|
+
mtime.year == now.year ? mtime.strftime("%m-%d %H:%M") : mtime.strftime("%Y-%m-%d %H:%M")
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def list_lines(all: false)
|
|
56
|
+
lines = []
|
|
57
|
+
STATUSES.each do |status|
|
|
58
|
+
tasks = tasks_in_sorted(status.to_sym)
|
|
59
|
+
next if tasks.empty?
|
|
60
|
+
|
|
61
|
+
display = all ? tasks : tasks.first(10)
|
|
62
|
+
display.each do |t|
|
|
63
|
+
ts = format_mtime(t[:mtime])
|
|
64
|
+
line = "%-10s %-12s %s" % [status, ts, t[:name]]
|
|
65
|
+
meta = meta_for(t[:name], status.to_sym)
|
|
66
|
+
if meta && status == 'running'
|
|
67
|
+
started = meta['started_at']
|
|
68
|
+
if started
|
|
69
|
+
elapsed = Time.now - Time.parse(started)
|
|
70
|
+
mins = (elapsed / 60).to_i
|
|
71
|
+
line += " (#{mins}m)"
|
|
72
|
+
end
|
|
73
|
+
line += " [#{meta['tmux_session']}:#{meta['tmux_window']}]" if meta['tmux_session']
|
|
74
|
+
end
|
|
75
|
+
preview = task_preview(t[:name], status.to_sym)
|
|
76
|
+
line += " #{preview}" if preview
|
|
77
|
+
lines << line
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
if !all && tasks.size > 10
|
|
81
|
+
lines << " ... and #{tasks.size - 10} more"
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
lines
|
|
85
|
+
end
|
|
86
|
+
|
|
43
87
|
def all_tasks
|
|
44
88
|
STATUSES.flat_map do |status|
|
|
45
89
|
tasks_in(status.to_sym).map { |name| { name: name, status: status } }
|
|
@@ -315,54 +359,30 @@ class Hiiro
|
|
|
315
359
|
end
|
|
316
360
|
}
|
|
317
361
|
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
puts "No tasks"
|
|
322
|
-
next
|
|
323
|
-
end
|
|
324
|
-
tasks.each do |t|
|
|
325
|
-
line = "%-10s %s" % [t[:status], t[:name]]
|
|
326
|
-
meta = q.meta_for(t[:name], t[:status].to_sym)
|
|
327
|
-
if meta && t[:status] == 'running'
|
|
328
|
-
started = meta['started_at']
|
|
329
|
-
if started
|
|
330
|
-
elapsed = Time.now - Time.parse(started)
|
|
331
|
-
mins = (elapsed / 60).to_i
|
|
332
|
-
line += " (#{mins}m)"
|
|
333
|
-
end
|
|
334
|
-
line += " [#{meta['tmux_session']}:#{meta['tmux_window']}]" if meta['tmux_session']
|
|
335
|
-
end
|
|
336
|
-
preview = q.task_preview(t[:name], t[:status].to_sym)
|
|
337
|
-
line += " #{preview}" if preview
|
|
338
|
-
puts line
|
|
362
|
+
list_cmd = proc { |*args|
|
|
363
|
+
opts = Hiiro::Options.parse(args) do
|
|
364
|
+
flag(:all, short: :a, desc: 'Show all tasks without limit; use pager if output exceeds terminal height')
|
|
339
365
|
end
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
h.add_subcmd(:list) {
|
|
343
|
-
tasks = q.all_tasks
|
|
344
|
-
if tasks.empty?
|
|
366
|
+
lines = q.list_lines(all: opts.all)
|
|
367
|
+
if lines.empty?
|
|
345
368
|
puts "No tasks"
|
|
346
369
|
next
|
|
347
370
|
end
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
elapsed = Time.now - Time.parse(started)
|
|
355
|
-
mins = (elapsed / 60).to_i
|
|
356
|
-
line += " (#{mins}m)"
|
|
357
|
-
end
|
|
358
|
-
line += " [#{meta['tmux_session']}:#{meta['tmux_window']}]" if meta['tmux_session']
|
|
371
|
+
if opts.all
|
|
372
|
+
terminal_lines = ENV['LINES']&.to_i || 24
|
|
373
|
+
if lines.size > terminal_lines
|
|
374
|
+
IO.popen(ENV['PAGER'] || 'less', 'w') { |io| io.puts lines }
|
|
375
|
+
else
|
|
376
|
+
puts lines
|
|
359
377
|
end
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
puts line
|
|
378
|
+
else
|
|
379
|
+
puts lines
|
|
363
380
|
end
|
|
364
381
|
}
|
|
365
382
|
|
|
383
|
+
h.add_subcmd(:ls, &list_cmd)
|
|
384
|
+
h.add_subcmd(:list, &list_cmd)
|
|
385
|
+
|
|
366
386
|
h.add_subcmd(:status) {
|
|
367
387
|
tasks = q.all_tasks
|
|
368
388
|
if tasks.empty?
|
data/lib/hiiro/version.rb
CHANGED