This repository has been archived by the owner on Jan 4, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathargs.go
79 lines (65 loc) · 1.78 KB
/
args.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package main
import (
"github.com/docopt/docopt-go"
"github.com/pkg/errors"
)
const version = "0.9.1"
const usage = `Gowl.
Usage:
gowl get [-f | --force] [-r | --recursive] [-s | --shallow] [-B | --bitbucket-server]
gowl edit [-e=<editor> | --editor=<editor>]
gowl web
gowl list
gowl purge
gowl -h | --help
gowl -V | --version
Options:
-e --editor=<editor> Use editor [default: default]
-f --force Force remove and reclone if exists
-r --recursive Clone recursively
-s --shallow Use shallow clone
-B --bitbucket-server Use Bitbucket Server
-h --help Show this screen.
-V --version Show version.
`
// Args created by CLI args
type Args struct {
CmdGet bool `docopt:"get"`
CmdEdit bool `docopt:"edit"`
CmdWeb bool `docopt:"web"`
CmdList bool `docopt:"list"`
CmdPurge bool `docopt:"purge"`
Editor string `docopt:"--editor"`
Force bool `docopt:"--force"`
Recursive bool `docopt:"--recursive"`
Shallow bool `docopt:"--shallow"`
BitbucketServer bool `docopt:"--bitbucket-server"`
}
/*
CreateArgs creates Args.
Example:
args, appEnd, err := CreateArgs(usage, os.Args[1:], version)
if err != nil {
log.Fatal(errors.Wrap(err, "Fail to create arguments."))
}
if appEnd {
return
}
fmt.Println(args)
*/
func CreateArgs(usage string, argv []string, version string) (Args, bool, error) {
parser := &docopt.Parser{
HelpHandler: docopt.PrintHelpOnly,
OptionsFirst: false,
}
opts, err := parser.ParseArgs(usage, argv, version)
if err != nil {
return Args{}, false, errors.Wrap(err, "Fail to parse arguments.")
}
if len(opts) == 0 {
return Args{}, true, nil
}
var args Args
opts.Bind(&args)
return args, false, nil
}