Description
Currently running into a little issue with an SDK I'm writing. This SDK wraps, among other things, the wasi:cli and the wasi:http interfaces. The setup is something as follows.
WIT:
package jamesstocktonj1:componentize-sdk;
world http {
export wasi:http/incoming-handler@0.2.6;
}
world cli {
export wasi:cli/run@0.2.6;
}
world all {
include sdk;
include http;
include cli;
}
Componentize Go Toml:
wit_paths = ["./wit"]
worlds = [
"sdk",
"http",
"cli"
]
Issue 1
When I import this package (for example the net/wasihttp path), it builds a component which exports BOTH wasi:http and wasi:cli and then same is true when trying to write a CLI application.
I've tried splitting the gen/wit_exports file into gen/wit_exports_cli and gen/wit_exports_http but componentize-go complains that:
Error: failed to encode component from module
Caused by:
0: failed to decode world from module
1: module was not valid
2: failed to find export of interface `wasi:cli/run@0.2.6` function `run`
Issue 2
We also have a scenario where we want to export neither CLI or HTTP but instead just want to use the http.Client interface. This again causes the component to export both interface although neither are needed.
Summary
- How can we make certain wit interfaces optional?
- Would it be possible to have optional exports depending on what Go module path is imported?
- Having a
go.mod and componentize-go.toml for each path would be possible but quite wasteful
- Can this be done without having to specify a specific interface? e.g.
componentize-go --world foo build ...
- Can we fix this in the Componentize Go build side?
For more context this is the SDK in question:
https://github.com/jamesstocktonj1/componentize-sdk
Description
Currently running into a little issue with an SDK I'm writing. This SDK wraps, among other things, the
wasi:cliand thewasi:httpinterfaces. The setup is something as follows.WIT:
Componentize Go Toml:
Issue 1
When I import this package (for example the
net/wasihttppath), it builds a component which exports BOTHwasi:httpandwasi:cliand then same is true when trying to write a CLI application.I've tried splitting the
gen/wit_exportsfile intogen/wit_exports_cliandgen/wit_exports_httpbutcomponentize-gocomplains that:Issue 2
We also have a scenario where we want to export neither CLI or HTTP but instead just want to use the
http.Clientinterface. This again causes the component to export both interface although neither are needed.Summary
go.modandcomponentize-go.tomlfor each path would be possible but quite wastefulcomponentize-go --world foo build ...For more context this is the SDK in question:
https://github.com/jamesstocktonj1/componentize-sdk