cli: adds version command (#950)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>
This commit is contained in:
Takeshi Yoneda
2022-12-21 13:59:10 +09:00
committed by GitHub
parent 2e4f207191
commit 100725dd1c
3 changed files with 29 additions and 1 deletions

View File

@@ -14,6 +14,7 @@ import (
"github.com/tetratelabs/wazero"
"github.com/tetratelabs/wazero/experimental"
"github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1"
"github.com/tetratelabs/wazero/internal/version"
"github.com/tetratelabs/wazero/sys"
)
@@ -47,6 +48,9 @@ func doMain(stdOut io.Writer, stdErr io.Writer, exit func(code int)) {
doCompile(flag.Args()[1:], stdErr, exit)
case "run":
doRun(flag.Args()[1:], stdOut, stdErr, exit)
case "version":
fmt.Fprintln(stdOut, version.GetWazeroVersion())
exit(0)
default:
fmt.Fprintln(stdErr, "invalid command")
printUsage(stdErr)
@@ -260,6 +264,7 @@ func printUsage(stdErr io.Writer) {
fmt.Fprintln(stdErr, "Commands:")
fmt.Fprintln(stdErr, " compile\tPre-compiles a WebAssembly binary")
fmt.Fprintln(stdErr, " run\t\tRuns a WebAssembly binary")
fmt.Fprintln(stdErr, " version\tDisplays the version of wazero CLI")
}
func printCompileUsage(stdErr io.Writer, flags *flag.FlagSet) {

View File

@@ -13,6 +13,7 @@ import (
"testing"
"github.com/tetratelabs/wazero/internal/testing/require"
"github.com/tetratelabs/wazero/internal/version"
)
//go:embed testdata/wasi_arg.wasm
@@ -281,6 +282,13 @@ func TestRun(t *testing.T) {
}
}
func TestVersion(t *testing.T) {
exitCode, stdOut, stdErr := runMain(t, []string{"version"})
require.Equal(t, 0, exitCode)
require.Equal(t, version.GetWazeroVersion()+"\n", stdOut)
require.Equal(t, "", stdErr)
}
func TestRun_Errors(t *testing.T) {
wasmPath := filepath.Join(t.TempDir(), "test.wasm")
require.NoError(t, os.WriteFile(wasmPath, wasmWasiArg, 0o700))
@@ -332,7 +340,17 @@ func TestRun_Errors(t *testing.T) {
func TestHelp(t *testing.T) {
exitCode, _, stdErr := runMain(t, []string{"-h"})
require.Equal(t, 0, exitCode)
require.Contains(t, stdErr, "wazero CLI\n\nUsage:")
fmt.Println(stdErr)
require.Equal(t, `wazero CLI
Usage:
wazero <command>
Commands:
compile Pre-compiles a WebAssembly binary
run Runs a WebAssembly binary
version Displays the version of wazero CLI
`, stdErr)
}
func runMain(t *testing.T, args []string) (int, string, string) {

View File

@@ -25,6 +25,11 @@ func GetWazeroVersion() (ret string) {
ret = dep.Version
}
}
// In wazero CLI, wazero is a main module, so we have to get the version info from info.Main.
if ret == "dev" {
ret = info.Main.Version
}
}
return
}