From 5a53775565694ee797475c25d3fd40333b6b4246 Mon Sep 17 00:00:00 2001 From: Shingo Kawamura Date: Sun, 30 Jul 2017 20:17:42 +0900 Subject: [PATCH] Add readable help --- README.md | 6 +++--- option.go | 35 ++++++++++++++++++++++++++++++----- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 326e556..ddb829b 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,6 @@ $ scv is1a ubuntu |Name|Description| |-|-| -|--help|print help| -|--verbose|print debug log| -|--version|print version number| +|-h, --help|print help message and exit| +|-v, --verbose|print debug log| +|-V, --version|print version and exit| diff --git a/option.go b/option.go index 3e99fec..4cfd000 100644 --- a/option.go +++ b/option.go @@ -10,25 +10,50 @@ import ( var version string const expectedArgsSize = 2 +const help = ` +Usage: scv [options] [zone name] [server name] + +Options: + -h, --help print help message and exit + -v, --verbose print debug log + -V, --version print version and exit +` func Run() (result string, err error) { + var optHelp bool + var optLongHelp bool + flag.BoolVar(&optHelp, "h", false, "") + flag.BoolVar(&optLongHelp, "help", false, "") + var optVersion bool - flag.BoolVar(&optVersion, "version", false, "print version number") + var optLongVersion bool + flag.BoolVar(&optVersion, "V", false, "") + flag.BoolVar(&optLongVersion, "version", false, "") var optVerbose bool - flag.BoolVar(&optVerbose, "verbose", false, "print debug log") + var optLongVerbose bool + flag.BoolVar(&optVerbose, "v", false, "") + flag.BoolVar(&optLongVerbose, "verbose", false, "") flag.Parse() - if optVersion { + + if optHelp || optLongHelp { + return fmt.Sprintf("%s", help), err + } + + if optVersion || optLongVersion { return fmt.Sprintf("scv version %s", version), err } + logger := &Logger{} - if optVerbose { + if optVerbose || optLongVerbose { logger.Verbose = true } argsSize := len(flag.Args()) - if argsSize != expectedArgsSize { + if argsSize == 0 { + return fmt.Sprintf("%s", help), err + } else if argsSize != expectedArgsSize { return result, fmt.Errorf("Expected arguments size is %d, but given %d", expectedArgsSize, argsSize) }