/
main.go
78 lines (66 loc) · 1.78 KB
/
main.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
package main
import (
"flag"
"fmt"
"log"
"os"
"strings"
repotools "github.com/awslabs/aws-go-multi-module-repository-tools"
"github.com/awslabs/aws-go-multi-module-repository-tools/changelog"
)
// ChangeType is an alias type for changelog.ChangeType to add flag support
type ChangeType changelog.ChangeType
func (c *ChangeType) String() string {
return changelog.ChangeType(*c).String()
}
// Set parses c and sets it to the changelog.ChangeType
func (c *ChangeType) Set(s string) error {
ct := changelog.ParseChangeType(s)
*c = ChangeType(ct)
return nil
}
func init() {
flag.Usage = printHelp
}
func main() {
flag.Parse()
repoRoot, err := repotools.GetRepoRoot()
if err != nil {
log.Fatalf("failed to get repository root: %v", err)
}
arg := flag.Arg(0)
switch {
case strings.EqualFold(arg, createFlagSet.Name()):
err = runCreateCommand(flag.Args()[1:], repoRoot)
case strings.EqualFold(arg, listFlagSet.Name()):
err = runListCommand(flag.Args()[1:], repoRoot)
case strings.EqualFold(arg, viewFlagSet.Name()):
err = runViewCommand(flag.Args()[1:], repoRoot)
case strings.EqualFold(arg, editFlagSet.Name()):
err = runEditCommand(flag.Args()[1:], repoRoot)
case strings.EqualFold(arg, removeFlagSet.Name()):
err = runRemoveCommand(flag.Args()[1:], repoRoot)
case strings.EqualFold(arg, "help") || len(arg) == 0:
fallthrough
default:
printHelp()
return
}
if err != nil {
log.Fatal(err)
}
}
func printHelp() {
var builder strings.Builder
builder.WriteString("Usage:\n\n")
builder.WriteString(createHelpDoc)
builder.WriteRune('\n')
builder.WriteString(listHelpDoc)
builder.WriteRune('\n')
builder.WriteString(editHelpDoc)
builder.WriteRune('\n')
builder.WriteString(viewHelpDoc)
builder.WriteRune('\n')
fmt.Fprint(os.Stderr, builder.String())
os.Exit(0)
}