1+ // sharepoint-go/cmd/sharepoint-client/main.go
2+
13package main
24
35import (
@@ -10,6 +12,7 @@ import (
1012 "net/http"
1113 "net/url"
1214 "os"
15+ "runtime"
1316 "sort"
1417 "strings"
1518 "time"
@@ -20,8 +23,17 @@ import (
2023 edgeondemand "sharepoint-go/strategies/edgeondemand"
2124)
2225
23- // versão interna do binário
24- const Version = "v1.0.0"
26+ // Nome e versão por omissão (podem ser sobrepostos por ldflags no build)
27+ const appName = "sharepoint-client"
28+ const defaultVersion = "v1.0.0"
29+
30+ // Estes três são **injetados** pelo build (ldflags -X main.buildVersion=... etc.)
31+ // Valores de fallback para execuções locais (go run / go build sem ldflags).
32+ var (
33+ buildVersion = defaultVersion
34+ buildCommit = "dev"
35+ buildDate = ""
36+ )
2537
2638func main () {
2739 // Logger "limpo": sem timestamps/flags default, e sempre em stderr.
@@ -66,9 +78,19 @@ func main() {
6678
6779 flag .Parse ()
6880
69- // caso --version seja passado, mostramos e saímos logo
81+ // --version: mostra metadados de build em JSON e sai
7082 if * versionFlag {
71- fmt .Println (Version )
83+ v := map [string ]string {
84+ "name" : appName ,
85+ "version" : buildVersion ,
86+ "commit" : buildCommit ,
87+ "date" : buildDate ,
88+ "go" : runtime .Version (),
89+ "os" : runtime .GOOS ,
90+ "arch" : runtime .GOARCH ,
91+ }
92+ b , _ := json .MarshalIndent (v , "" , " " )
93+ fmt .Println (string (b ))
7294 os .Exit (0 )
7395 }
7496
0 commit comments