cli: adds version command (#950)
Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user