go-pgp-tool/libs/flag.go

45 lines
1.0 KiB
Go

package libs
import (
"flag"
"reflect"
)
// Flags - flag values struct
type Flags struct {
Help bool
Decrypt bool
Encrypt bool
SrcFile string
DstFile string
KeyFile string
Override bool
Password string
}
// RegFlag - Register flag to main
func RegFlag(f *Flags) {
flag.BoolVar(&f.Help, "h", false, "show usage help")
flag.BoolVar(&f.Decrypt, "d", false, "decrypt file")
flag.BoolVar(&f.Encrypt, "e", false, "encrypt file")
flag.StringVar(&f.SrcFile, "i", "", "input source `file path`")
flag.StringVar(&f.DstFile, "o", "", "output `[file path|-]`")
flag.StringVar(&f.KeyFile, "k", "", "key `file path`")
flag.BoolVar(&f.Override, "y", false, "if output file exists override")
flag.StringVar(&f.Password, "p", "", "private key password")
}
// ToMap - flags struct to map
func (f *Flags) ToMap() map[string]interface{} {
t := reflect.ValueOf(f).Elem()
smap := make(map[string]interface{})
for i := 0; i < t.NumField(); i++ {
f := t.Field(i)
smap[t.Type().Field(i).Name] = f.Interface()
}
return smap
}