+22
-1
main.go
+22
-1
main.go
···
10
10
"net/http"
11
11
"net/url"
12
12
"os"
13
+
"runtime/debug"
13
14
14
15
"github.com/google/uuid"
15
16
"github.com/klauspost/compress/zstd"
···
25
26
var debugManifestFlag = pflag.Bool("debug-manifest", false, "retrieve site manifest as ProtoJSON, for debugging")
26
27
var serverFlag = pflag.String("server", "", "hostname of server to connect to")
27
28
var verboseFlag = pflag.Bool("verbose", false, "display more information for debugging")
29
+
var versionFlag = pflag.Bool("version", false, "display version information")
28
30
29
31
func singleOperation() bool {
30
32
operations := 0
···
46
48
if *debugManifestFlag {
47
49
operations++
48
50
}
51
+
if *versionFlag {
52
+
operations++
53
+
}
49
54
return operations == 1
50
55
}
51
56
57
+
func versionInfo() string {
58
+
version := "(unknown)"
59
+
if versionOverride != "" {
60
+
version = versionOverride
61
+
} else if buildInfo, ok := debug.ReadBuildInfo(); ok {
62
+
version = buildInfo.Main.Version
63
+
}
64
+
return fmt.Sprintf("git-pages-cli %s", version)
65
+
}
66
+
52
67
func displayFS(root fs.FS) error {
53
68
return fs.WalkDir(root, ".", func(name string, entry fs.DirEntry, err error) error {
54
69
if err != nil {
···
90
105
91
106
func main() {
92
107
pflag.Parse()
93
-
if !singleOperation() || len(pflag.Args()) != 1 {
108
+
if !singleOperation() || (!*versionFlag && len(pflag.Args()) != 1) {
94
109
fmt.Fprintf(os.Stderr,
95
110
"Usage: %s <site-url> [--challenge|--upload-git url|--upload-dir path|--delete]\n",
96
111
os.Args[0],
97
112
)
98
113
os.Exit(125)
114
+
}
115
+
116
+
if *versionFlag {
117
+
fmt.Fprintln(os.Stdout, versionInfo())
118
+
os.Exit(0)
99
119
}
100
120
101
121
var err error
···
182
202
default:
183
203
panic("no operation chosen")
184
204
}
205
+
request.Header.Add("User-Agent", versionInfo())
185
206
if *passwordFlag != "" {
186
207
request.Header.Add("Authorization", fmt.Sprintf("Pages %s", *passwordFlag))
187
208
}