cli: removes experimental-workdir-inherit flag (#1242)
Signed-off-by: Adrian Cole <adrian@tetrate.io>
This commit is contained in:
@@ -18,6 +18,7 @@ import (
|
|||||||
"github.com/tetratelabs/wazero/experimental/gojs"
|
"github.com/tetratelabs/wazero/experimental/gojs"
|
||||||
"github.com/tetratelabs/wazero/experimental/logging"
|
"github.com/tetratelabs/wazero/experimental/logging"
|
||||||
"github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1"
|
"github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1"
|
||||||
|
"github.com/tetratelabs/wazero/internal/platform"
|
||||||
"github.com/tetratelabs/wazero/internal/version"
|
"github.com/tetratelabs/wazero/internal/version"
|
||||||
"github.com/tetratelabs/wazero/sys"
|
"github.com/tetratelabs/wazero/sys"
|
||||||
)
|
)
|
||||||
@@ -128,12 +129,6 @@ func doRun(args []string, stdOut io.Writer, stdErr logging.Writer, exit func(cod
|
|||||||
"inherits any environment variables from the calling process. "+
|
"inherits any environment variables from the calling process. "+
|
||||||
"Variables specified with the <env> flag are appended to the inherited list.")
|
"Variables specified with the <env> flag are appended to the inherited list.")
|
||||||
|
|
||||||
var workdirInherit bool
|
|
||||||
flags.BoolVar(&workdirInherit, "experimental-workdir-inherit", false,
|
|
||||||
"inherits the working directory from the calling process. "+
|
|
||||||
"Note: This only applies to wasm compiled with `GOARCH=wasm GOOS=js` a.k.a. gojs. "+
|
|
||||||
"In windows, the working directory must be on the same volume as the root mount.")
|
|
||||||
|
|
||||||
var mounts sliceFlag
|
var mounts sliceFlag
|
||||||
flags.Var(&mounts, "mount",
|
flags.Var(&mounts, "mount",
|
||||||
"filesystem path to expose to the binary in the form of <path>[:<wasm path>][:ro]. "+
|
"filesystem path to expose to the binary in the form of <path>[:<wasm path>][:ro]. "+
|
||||||
@@ -192,7 +187,7 @@ func doRun(args []string, stdOut io.Writer, stdErr logging.Writer, exit func(cod
|
|||||||
env = append(env, fields[0], fields[1])
|
env = append(env, fields[0], fields[1])
|
||||||
}
|
}
|
||||||
|
|
||||||
fsConfig := validateMounts(mounts, stdErr, exit)
|
rootPath, fsConfig := validateMounts(mounts, stdErr, exit)
|
||||||
|
|
||||||
wasm, err := os.ReadFile(wasmPath)
|
wasm, err := os.ReadFile(wasmPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -269,7 +264,14 @@ func doRun(args []string, stdOut io.Writer, stdErr logging.Writer, exit func(cod
|
|||||||
gojs.MustInstantiate(ctx, rt)
|
gojs.MustInstantiate(ctx, rt)
|
||||||
|
|
||||||
config := gojs.NewConfig(conf)
|
config := gojs.NewConfig(conf)
|
||||||
if workdirInherit {
|
|
||||||
|
// Strip the volume of the path, for example C:\
|
||||||
|
rootDir := rootPath[len(filepath.VolumeName(rootPath)):]
|
||||||
|
|
||||||
|
// If the user mounted the entire filesystem, try to inherit the CWD.
|
||||||
|
// This is better than introducing a flag just for GOOS=js, especially
|
||||||
|
// as removing flags breaks syntax compat.
|
||||||
|
if platform.ToPosixPath(rootDir) == "/" {
|
||||||
config = config.WithOSWorkdir()
|
config = config.WithOSWorkdir()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -294,7 +296,7 @@ func doRun(args []string, stdOut io.Writer, stdErr logging.Writer, exit func(cod
|
|||||||
exit(0)
|
exit(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
func validateMounts(mounts sliceFlag, stdErr logging.Writer, exit func(code int)) (config wazero.FSConfig) {
|
func validateMounts(mounts sliceFlag, stdErr logging.Writer, exit func(code int)) (rootPath string, config wazero.FSConfig) {
|
||||||
config = wazero.NewFSConfig()
|
config = wazero.NewFSConfig()
|
||||||
for _, mount := range mounts {
|
for _, mount := range mounts {
|
||||||
if len(mount) == 0 {
|
if len(mount) == 0 {
|
||||||
@@ -342,6 +344,10 @@ func validateMounts(mounts sliceFlag, stdErr logging.Writer, exit func(code int)
|
|||||||
} else {
|
} else {
|
||||||
config = config.WithDirMount(dir, guestPath)
|
config = config.WithDirMount(dir, guestPath)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if guestPath == "/" {
|
||||||
|
rootPath = dir
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -361,7 +361,6 @@ func TestRun(t *testing.T) {
|
|||||||
wazeroOpts: []string{
|
wazeroOpts: []string{
|
||||||
// --mount=X:\:/ on Windows, --mount=/:/ everywhere else
|
// --mount=X:\:/ on Windows, --mount=/:/ everywhere else
|
||||||
"--mount=" + filepath.VolumeName(bearDir) + string(os.PathSeparator) + ":/",
|
"--mount=" + filepath.VolumeName(bearDir) + string(os.PathSeparator) + ":/",
|
||||||
"--experimental-workdir-inherit=true",
|
|
||||||
},
|
},
|
||||||
workdir: bearDir,
|
workdir: bearDir,
|
||||||
wasmArgs: []string{"bear.txt"},
|
wasmArgs: []string{"bear.txt"},
|
||||||
|
|||||||
Reference in New Issue
Block a user