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}