aboutsummaryrefslogtreecommitdiff
path: root/stop.rb
blob: fff5744602a048c5e4f3458055951b4af5225c12 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
"""
This file is part of cassiopeia and licensed
under the GNU Public License 3.0 (or later)

cassiopeia-stop - stop working on an account

This file is included and run from cass(1)
"""

require "time"
require_relative "time_util"

def stop(account, round, file = [])
  rel = file.select { |i| i[:title].to_s.include? account }

  # This is a kind of fuzzy find
  account = rel[0][:title].to_s[0..-2]

  jobs = rel.select { |i| i[:stop] == nil }
  if jobs.length == 0
    STDERR.puts "No unfinished accounts for '#{account}'!"
    exit 2
  end

  STDERR.puts "[Warn]: More than one dangling account!" unless jobs.length == 1
  job = jobs[0]
  line, _ = job[:title].line_and_column

  # We return the line number too, so that we can inset correctly
  return line, "#{account}:\
    #{job[:start]} - #{round ? Time.now.round : Time.now}"
end