| package arguments |
| |
| // View represents the global command-line arguments which configure the view. |
| type View struct { |
| // NoColor is used to disable the use of terminal color codes in all |
| // output. |
| NoColor bool |
| |
| // CompactWarnings is used to coalesce duplicate warnings, to reduce the |
| // level of noise when multiple instances of the same warning are raised |
| // for a configuration. |
| CompactWarnings bool |
| } |
| |
| // ParseView processes CLI arguments, returning a View value and a |
| // possibly-modified slice of arguments. If any of the supported flags are |
| // found, they will be removed from the slice. |
| func ParseView(args []string) (*View, []string) { |
| common := &View{} |
| |
| // Keep track of the length of the returned slice. When we find an |
| // argument we support, i will not be incremented. |
| i := 0 |
| for _, v := range args { |
| switch v { |
| case "-no-color": |
| common.NoColor = true |
| case "-compact-warnings": |
| common.CompactWarnings = true |
| default: |
| // Unsupported argument: move left to the current position, and |
| // increment the index. |
| args[i] = v |
| i++ |
| } |
| } |
| |
| // Reduce the slice to the number of unsupported arguments. Any remaining |
| // to the right of i have already been moved left. |
| args = args[:i] |
| |
| return common, args |
| } |