augmentFromConfig augments `rg` based on configuration in the gitconfig and returns the result. It is not considered an error if there are no usable config entries for the filter.
(configger Configger)
| 78 | // gitconfig and returns the result. It is not considered an error if |
| 79 | // there are no usable config entries for the filter. |
| 80 | func (rg *refGroup) augmentFromConfig(configger Configger) error { |
| 81 | config, err := configger.GetConfig(fmt.Sprintf("refgroup.%s", rg.Symbol)) |
| 82 | if err != nil { |
| 83 | return err |
| 84 | } |
| 85 | |
| 86 | for _, entry := range config.Entries { |
| 87 | switch entry.Key { |
| 88 | case "name": |
| 89 | rg.Name = entry.Value |
| 90 | case "include": |
| 91 | rg.filter = git.Include.Combine( |
| 92 | rg.filter, git.PrefixFilter(entry.Value), |
| 93 | ) |
| 94 | case "includeregexp": |
| 95 | f, err := git.RegexpFilter(entry.Value) |
| 96 | if err != nil { |
| 97 | return fmt.Errorf( |
| 98 | "invalid regular expression for '%s': %w", |
| 99 | config.FullKey(entry.Key), err, |
| 100 | ) |
| 101 | } |
| 102 | rg.filter = git.Include.Combine(rg.filter, f) |
| 103 | case "exclude": |
| 104 | rg.filter = git.Exclude.Combine( |
| 105 | rg.filter, git.PrefixFilter(entry.Value), |
| 106 | ) |
| 107 | case "excluderegexp": |
| 108 | f, err := git.RegexpFilter(entry.Value) |
| 109 | if err != nil { |
| 110 | return fmt.Errorf( |
| 111 | "invalid regular expression for '%s': %w", |
| 112 | config.FullKey(entry.Key), err, |
| 113 | ) |
| 114 | } |
| 115 | rg.filter = git.Exclude.Combine(rg.filter, f) |
| 116 | default: |
| 117 | // Ignore unrecognized keys. |
| 118 | } |
| 119 | } |
| 120 | |
| 121 | return nil |
| 122 | } |
no test coverage detected