Blob of vendor/grit/lib/grit/config.rb (raw blob data)

1 module Grit
2
3 class Config
4 def initialize(repo)
5 @repo = repo
6 end
7
8 def []=(key, value)
9 @repo.git.config({}, key, value)
10 @data = nil
11 end
12
13 def [](key)
14 data[key]
15 end
16
17 def fetch(key, default = nil)
18 data[key] || default || raise(IndexError.new("key not found"))
19 end
20
21 def keys
22 data.keys
23 end
24
25 protected
26 def data
27 @data ||= load_config
28 end
29
30 def load_config
31 hash = {}
32 config_lines.map do |line|
33 key, value = line.split(/=/, 2)
34 hash[key] = value
35 end
36 hash
37 end
38
39 def config_lines
40 @repo.git.config(:list => true).split(/\n/)
41 end
42 end # Config
43
44 end # Grit