lib/herodot/commands.rb in herodot-0.2.0 vs lib/herodot/commands.rb in herodot-0.2.1
- old
+ new
@@ -1,75 +1,77 @@
require 'date'
require 'chronic'
require 'fileutils'
-class Herodot::Commands
- SCRIPT = "#!/bin/sh\nherodot track $(pwd)".freeze
+module Herodot
+ class Commands
+ SCRIPT = "#!/bin/sh\nherodot track $(pwd)".freeze
- DEFAULT_RANGE = 'this week'.freeze
+ DEFAULT_RANGE = 'this week'.freeze
- def self.show(args, config, opts = {})
- subject = args.empty? ? DEFAULT_RANGE : args.join(' ')
- range = Chronic.parse(subject, guess: false, context: :past)
- abort "Date not parsable: #{args.join(' ')}" unless range
- worklog = Herodot::Parser.parse(range, config)
- decorated_worklog = Herodot::ProjectLink.new(worklog)
- output = Herodot::Output.print(decorated_worklog.totals, opts)
- puts output
- end
+ def self.show(args, config, opts = {})
+ subject = args.empty? ? DEFAULT_RANGE : args.join(' ')
+ range = Chronic.parse(subject, guess: false, context: :past)
+ abort "Date not parsable: #{args.join(' ')}" unless range
+ worklog = Parser.parse(range, config)
+ decorated_worklog = ProjectLink.new(worklog)
+ output = Output.print(decorated_worklog.totals, opts)
+ puts output
+ end
- def self.init(path, config)
- path = '.' if path.nil?
- puts "Start tracking of `#{File.expand_path(path)}` into `#{config.worklog_file}`."
- hooks = "#{path}/.git/hooks"
- abort('Path is not a git repository.') unless File.exist?(hooks)
- %w(post-checkout post-commit).each do |name|
- File.open("#{hooks}/#{name}", 'w') { |file| file.write(SCRIPT) }
- File.chmod(0o755, "#{hooks}/#{name}")
- FileUtils.touch(config.worklog_file)
+ def self.init(path, config)
+ path = '.' if path.nil?
+ puts "Start tracking of `#{File.expand_path(path)}` into `#{config.worklog_file}`."
+ hooks = "#{path}/.git/hooks"
+ abort('Path is not a git repository.') unless File.exist?(hooks)
+ %w[post-checkout post-commit].each do |name|
+ File.open("#{hooks}/#{name}", 'w') { |file| file.write(SCRIPT) }
+ File.chmod(0o755, "#{hooks}/#{name}")
+ FileUtils.touch(config.worklog_file)
+ end
end
- end
- def self.track(path, config)
- puts 'Logging into worklog'
- File.open(config.worklog_file, 'a') do |worklog|
- datestr = DateTime.now.strftime("%a %b %e %H:%M:%S %z %Y")
- branch = `(cd #{path} && git rev-parse --abbrev-ref HEAD)`.strip
- line = [datestr, path, branch].join(";")
- worklog.puts(line)
+ def self.track(path, config)
+ puts 'Logging into worklog'
+ File.open(config.worklog_file, 'a') do |worklog|
+ datestr = Time.now.strftime('%a %b %e %H:%M:%S %z %Y')
+ branch = `(cd #{path} && git rev-parse --abbrev-ref HEAD)`.strip
+ line = [datestr, path, branch].join(';')
+ worklog.puts(line)
+ end
end
- end
- def self.link(path)
- path = '.' if path.nil?
- choose do |menu|
- menu.prompt = 'What tracker do you want to link to?'
- menu.choice(:jira) { link_jira(path) }
- menu.choice(:github) { link_github(path) }
- menu.choice(:gitlab) { link_gitlab(path) }
- menu.choices(:other) { link_other(path) }
- menu.default = :other
+ def self.link(path)
+ path = '.' if path.nil?
+ choose do |menu|
+ menu.prompt = 'What tracker do you want to link to?'
+ menu.choice(:jira) { link_jira(path) }
+ menu.choice(:github) { link_github(path) }
+ menu.choice(:gitlab) { link_gitlab(path) }
+ menu.choices(:other) { link_other(path) }
+ menu.default = :other
+ end
end
- end
- def self.link_jira(path)
- prefix = ask('Jira URL prefix (something for https://something.atlassian.net)?')
- pattern = ask('Ticket prefix (ABCD for tickets like ABCD-123)')
- Herodot::ProjectLink.link(path, "http://#{prefix}.atlassian.net/browse/", "#{pattern}-\\d+")
- end
+ def self.link_jira(path)
+ prefix = ask('Jira URL prefix (something for https://something.atlassian.net)?')
+ pattern = ask('Ticket prefix (ABCD for tickets like ABCD-123)')
+ ProjectLink.link(path, "http://#{prefix}.atlassian.net/browse/", "#{pattern}-\\d+")
+ end
- def self.link_github(path)
- handle = ask('Github handle (something/something for https://github.com/something/something)?')
- Herodot::ProjectLink.link(path, "https://github.com/#{handle}/issues/", '\\d+')
- end
+ def self.link_github(path)
+ handle = ask('Github handle (something/something for https://github.com/something/something)?')
+ ProjectLink.link(path, "https://github.com/#{handle}/issues/", '\\d+')
+ end
- def self.link_gitlab(path)
- handle = ask('GitLab handle (something/something for https://gitlab.com/something/something)?')
- Herodot::ProjectLink.link(path, "https://gitlab.com/#{handle}/issues/", '\\d+')
- end
+ def self.link_gitlab(path)
+ handle = ask('GitLab handle (something/something for https://gitlab.com/something/something)?')
+ ProjectLink.link(path, "https://gitlab.com/#{handle}/issues/", '\\d+')
+ end
- def self.link_other(path)
- url = ask('URL to issue tracker:')
- pattern = ask('Ticket regex pattern (ruby):')
- Herodot::ProjectLink.link(path, url, pattern)
+ def self.link_other(path)
+ url = ask('URL to issue tracker:')
+ pattern = ask('Ticket regex pattern (ruby):')
+ ProjectLink.link(path, url, pattern)
+ end
end
end