hydra/hydra/cli-opts.go

39 lines
1.3 KiB
Go

package hydra
import(
"fmt"
"github.com/jessevdk/go-flags"
"os"
"ur.gs/go-iscsi/common"
)
type Config struct {
TargetName string `short:"n" long:"name" required:"true" description:"Name of the iSCSI target we present."`
TargetListen string `short:"L" long:"listen" required:"true" description:"Address to listen on for incoming connections."`
InitiatorBind string `short:"b" long:"bind" description:"Address connections to the real targets will come from."`
InitiatorAddresses []string `short:"t" long:"target" required:"true" description:"A real target to keep in sync."`
Verbosity []bool `short:"v" long:"verbose" description:"Verbosity. Repeat multiple times to increase."`
Syslog bool `short:"s" long:"syslog" description:"Should we log to syslog? If not, logs go to stdout."`
Logger *common.Logger
}
func ParseCommandLine(argv []string) (*Config, error) {
var config Config
_, err := flags.ParseArgs(&config, argv) ; if err != nil {
return nil, err
}
logPrefix := fmt.Sprintf("iscsi-hydra:%s", config.TargetName)
logger, err := common.NewLogger(logPrefix, config.Syslog, os.Stdout, len(config.Verbosity)) ; if err != nil {
fmt.Fprintln(os.Stderr, "Setting up logging failed: %s", err.Error())
return nil, err
}
config.Logger = logger
return &config, err
}