Class: GitTracking::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/git_tracking/config.rb

Instance Method Summary collapse

Constructor Details

#initializeConfig

Returns a new instance of Config.



3
4
5
6
7
8
9
10
11
12
13
# File 'lib/git_tracking/config.rb', line 3

def initialize
  @config = {
    :raise_on_incomplete_merge => true,
    :raise_on_debugger => true,
    :authors => [],
    :keys => {}
  }
  if File.exists? ".git_tracking"
    @config.merge! YAML.load_file(".git_tracking")
  end
end

Instance Method Details

#authorObject



42
43
44
# File 'lib/git_tracking/config.rb', line 42

def author
  `git config user.name`.chomp
end

#author=(new_author) ⇒ Object



50
51
52
53
54
# File 'lib/git_tracking/config.rb', line 50

def author=(new_author)
  @config[:authors].push(new_author).uniq!
  write_to_file
  system "git config user.name '#{new_author}'"
end

#authorsObject



46
47
48
# File 'lib/git_tracking/config.rb', line 46

def authors
  @config[:authors]
end

#commits_for_last_storyObject



35
36
37
38
39
40
# File 'lib/git_tracking/config.rb', line 35

def commits_for_last_story
  commits = `git log --grep='#{self.last_story_id}'`.split(/^commit /).map{|c| c.split("\n")}
  commits.each do |cl|
    cl.map!(&:strip).reject!{|c| c == "" || c.match(/^\W*$|^Author|^Date|^\[#\d{6,7}\]/) }
  end.flatten.join("\n")
end

#emailsObject



23
24
25
# File 'lib/git_tracking/config.rb', line 23

def emails
  @config[:keys].keys
end

#key_for_email(email, key = nil) ⇒ Object



67
68
69
70
71
72
# File 'lib/git_tracking/config.rb', line 67

def key_for_email(email, key=nil)
  return (self.last_api_key = @config[:keys][email]) if key.nil?
  self.last_api_key = key
  @config[:keys][email] = key
  write_to_file
end

#last_emailObject



27
28
29
# File 'lib/git_tracking/config.rb', line 27

def last_email
  @config[:keys].invert[last_api_key]
end

#last_story_completed?Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/git_tracking/config.rb', line 31

def last_story_completed?
  !!`git log -n 1`.match(/complete|finish/i)
end

#project_id(id = nil) ⇒ Object



74
75
76
77
78
79
# File 'lib/git_tracking/config.rb', line 74

def project_id(id=nil)
  return @config[:project_id] if id.nil?
  @config[:project_id] = id
  write_to_file
  id
end

#raise_on_debuggerObject



15
16
17
# File 'lib/git_tracking/config.rb', line 15

def raise_on_debugger
  @config[:raise_on_debugger]
end

#raise_on_incomplete_mergeObject



19
20
21
# File 'lib/git_tracking/config.rb', line 19

def raise_on_incomplete_merge
  @config[:raise_on_incomplete_merge]
end

#write_to_fileObject



81
82
83
84
85
# File 'lib/git_tracking/config.rb', line 81

def write_to_file
  File.open(".git_tracking", "w") do |file|
    YAML.dump(@config, file)
  end
end