Платформа ЦРНП "Мирокод" для разработки проектов
https://git.mirocod.ru
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
781 B
34 lines
781 B
// Copyright 2018 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) |
|
} |
|
} |
|
}
|
|
|