33package main
44
55import (
6+ "runtime"
7+ "runtime/debug"
68 "syscall/js"
79
10+ "github.com/hashicorp/go-version"
11+ "github.com/scaleway/scaleway-cli/v2/internal/core"
812 "github.com/scaleway/scaleway-cli/v2/internal/jshelpers"
913 "github.com/scaleway/scaleway-cli/v2/internal/wasm"
1014)
1115
16+ var (
17+ // Version is updated by goreleaser
18+ Version = "" // ${BUILD_VERSION:-`git describe --tags --dirty --always`}"
19+
20+ // These are initialized by the build script
21+
22+ BuildDate = "unknown" // date -u '+%Y-%m-%d_%I:%M:%S%p'
23+ GitBranch = "unknown" // git symbolic-ref -q --short HEAD || echo HEAD"
24+ GitCommit = "unknown" // git rev-parse --short HEAD
25+
26+ // These are GO constants
27+
28+ GoVersion = runtime .Version ()
29+ GoOS = runtime .GOOS
30+ GoArch = runtime .GOARCH
31+ )
32+
33+ func buildVersion () string {
34+ if Version == "" {
35+ buildInfos , ok := debug .ReadBuildInfo ()
36+ if ok && buildInfos .Main .Version != "(devel)" && buildInfos .Main .Version != "" {
37+ return buildInfos .Main .Version
38+ }
39+ return "v2+dev"
40+ }
41+ return Version
42+ }
43+
1244func main () {
1345 stopChan := make (chan struct {})
1446 stop := func (_ js.Value , args []js.Value ) (any , error ) {
@@ -17,11 +49,20 @@ func main() {
1749 }
1850
1951 args := getArgs ()
52+ buildInfo := & core.BuildInfo {
53+ Version : version .Must (version .NewSemver (buildVersion ())),
54+ BuildDate : BuildDate ,
55+ GoVersion : GoVersion ,
56+ GitBranch : GitBranch ,
57+ GitCommit : GitCommit ,
58+ GoArch : GoArch ,
59+ GoOS : GoOS ,
60+ }
2061
2162 if args .targetObject != "" {
2263 cliPackage := js .ValueOf (map [string ]any {})
23- cliPackage .Set ("run" , js .FuncOf (jshelpers .AsPromise (wasm .Run )))
24- cliPackage .Set ("complete" , js .FuncOf (jshelpers .AsPromise (wasm .Autocomplete )))
64+ cliPackage .Set ("run" , js .FuncOf (jshelpers .AsPromise (wasm .RunWithBuildInfo ( buildInfo ) )))
65+ cliPackage .Set ("complete" , js .FuncOf (jshelpers .AsPromise (wasm .AutocompleteWithBuildInfo ( buildInfo ) )))
2566 cliPackage .Set ("configureOutput" , js .FuncOf (jshelpers .AsPromise (wasm .ConfigureOutput )))
2667 cliPackage .Set ("stop" , js .FuncOf (jshelpers .AsyncJsFunc (stop )))
2768 js .Global ().Set (args .targetObject , cliPackage )
0 commit comments