-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
80 lines (66 loc) · 1.58 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
79
80
package main
import (
"fmt"
"io"
"log"
"os"
"strings"
flag "github.com/spf13/pflag"
"github.com/ToshihitoKon/codename-generator/utils"
v1 "github.com/ToshihitoKon/codename-generator/v1"
)
var GeneratorVersions = map[int]utils.CodenameGenerator{
1: v1.New(),
}
func printAvailableVersions() {
var versions []int
for v, _ := range GeneratorVersions {
versions = append(versions, v)
}
fmt.Fprintln(os.Stderr, "available generator versions:", versions)
}
func main() {
var text string
var generator utils.CodenameGenerator
var optGeneratorVersion *int = flag.IntP("generator-version", "g", -1, "Generator Version")
var optList *bool = flag.BoolP("list", "l", false, "List generator versions")
var optHelp *bool = flag.BoolP("help", "h", false, "show help")
flag.Parse()
if *optHelp {
flag.Usage()
os.Exit(0)
}
if *optList {
printAvailableVersions()
os.Exit(0)
}
generator, ok := GeneratorVersions[*optGeneratorVersion]
if !ok {
if *optGeneratorVersion < 0 {
fmt.Fprintln(os.Stderr, "error: --generator-version is required")
} else {
fmt.Fprintf(os.Stderr, "error: invalid Generator Version: %d\n", *optGeneratorVersion)
}
printAvailableVersions()
os.Exit(1)
}
args := flag.Args()
if 0 < len(args) {
text = args[0]
} else {
f := os.Stdin
buffer, err := io.ReadAll(f)
if err != nil {
log.Printf("error: %s", err)
os.Exit(1)
}
text = string(buffer)
text = strings.TrimSuffix(text, "\n")
}
codename, err := generator.GenerateCodename(text)
if err != nil {
fmt.Fprintf(os.Stderr, "error: %s", err)
os.Exit(1)
}
fmt.Printf(codename)
}