posh/pkg/readline/flags.go
2023-03-20 11:40:09 +01:00

38 lines
642 B
Go

package readline
import (
"github.com/spf13/pflag"
)
type Flags []*pflag.Flag
func (f Flags) Remove(name string) (*pflag.Flag, Flags) {
for i, v := range f {
if v.Name == name {
return v, f.Splice(i, 1)
}
}
return nil, f
}
func (f Flags) Slice(start, end int) Flags {
return append(f[:start], f[end:]...)
}
func (f Flags) Splice(start, num int) Flags {
return append(f[:start], f[start+num:]...)
}
func (f Flags) Args() Args {
var ret Args
for _, v := range f {
switch v.Value.Type() {
case "bool":
ret = append(ret, "--"+v.Name)
default:
ret = append(ret, "--"+v.Name, v.Value.String())
}
}
return ret
}