|  | // Copyright 2017 Frank Schroeder. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style | 
|  | // license that can be found in the LICENSE file. | 
|  |  | 
|  | package properties | 
|  |  | 
|  | import "flag" | 
|  |  | 
|  | // MustFlag sets flags that are skipped by dst.Parse when p contains | 
|  | // the respective key for flag.Flag.Name. | 
|  | // | 
|  | // It's use is recommended with command line arguments as in: | 
|  | // 	flag.Parse() | 
|  | // 	p.MustFlag(flag.CommandLine) | 
|  | func (p *Properties) MustFlag(dst *flag.FlagSet) { | 
|  | m := make(map[string]*flag.Flag) | 
|  | dst.VisitAll(func(f *flag.Flag) { | 
|  | m[f.Name] = f | 
|  | }) | 
|  | dst.Visit(func(f *flag.Flag) { | 
|  | delete(m, f.Name) // overridden | 
|  | }) | 
|  |  | 
|  | for name, f := range m { | 
|  | v, ok := p.Get(name) | 
|  | if !ok { | 
|  | continue | 
|  | } | 
|  |  | 
|  | if err := f.Value.Set(v); err != nil { | 
|  | ErrorHandler(err) | 
|  | } | 
|  | } | 
|  | } |