class GitWakaTime::Controller

Extract Duration Data from Heartbeats for the WAKATIME API

Attributes

heartbeats[RW]
project[RW]
relevant_commits[RW]
time_range[RW]

Public Class Methods

new(path: '.', date: nil) click to toggle source
# File lib/gitwakatime/controller.rb, line 6
def initialize(path: '.', date: nil)
  @path = path
  GitWakaTime.config.setup_local_db
  GitWakaTime.config.root = path
  GitWakaTime.config.load_config_yaml
  GitWakaTime.config.git = Git.open(path)
  GitWakaTime::Query.new(date, Date.today, @project).call

  @git_map = Mapper.new(start_at: date)
  @project = File.basename(GitWakaTime.config.git.dir.path)
  @relevant_commits = Commit.where(
    'project = ?', @project
  )

  # Scope by date if one has been passed
  @relevant_commits = @relevant_commits.where('date > ? ', date) if date

  @files = CommitedFile.where(
    'commit_id IN ?', @relevant_commits.select_map(:id)
  ).where('project = ?', @project)
end

Public Instance Methods

timer() click to toggle source
# File lib/gitwakatime/controller.rb, line 28
def timer
  Timer.new(
    @relevant_commits.all, Heartbeat
  ).process
end