1package git
 2
 3// ConfigOptions are options for Config.
 4type ConfigOptions struct {
 5	File string
 6	All  bool
 7	Add  bool
 8	CommandOptions
 9}
10
11// Config gets a git configuration.
12func Config(key string, opts ...ConfigOptions) (string, error) {
13	var opt ConfigOptions
14	if len(opts) > 0 {
15		opt = opts[0]
16	}
17	cmd := NewCommand("config")
18	if opt.File != "" {
19		cmd.AddArgs("--file", opt.File)
20	}
21	if opt.All {
22		cmd.AddArgs("--get-all")
23	}
24	for _, a := range opt.Args {
25		cmd.AddArgs(a)
26	}
27	cmd.AddArgs(key)
28	bts, err := cmd.Run()
29	if err != nil {
30		return "", err
31	}
32	return string(bts), nil
33}
34
35// SetConfig sets a git configuration.
36func SetConfig(key string, value string, opts ...ConfigOptions) error {
37	var opt ConfigOptions
38	if len(opts) > 0 {
39		opt = opts[0]
40	}
41	cmd := NewCommand("config")
42	if opt.File != "" {
43		cmd.AddArgs("--file", opt.File)
44	}
45	for _, a := range opt.Args {
46		cmd.AddArgs(a)
47	}
48	cmd.AddArgs(key, value)
49	_, err := cmd.Run()
50	return err
51}