use anyhow::Result;
use wasm_encoder::{ComponentBuilder, ComponentType};
use wit_parser::{PackageId, Resolve, WorldId};
mod v1;
mod v2;
const ENCODE_V2_BY_DEFAULT: bool = false;
fn use_v2_encoding() -> bool {
match std::env::var("WIT_COMPONENT_ENCODING_V2") {
Ok(s) => s == "1",
Err(_) => ENCODE_V2_BY_DEFAULT,
}
}
pub fn encode(use_v2: Option<bool>, resolve: &Resolve, package: PackageId) -> Result<Vec<u8>> {
if use_v2.unwrap_or_else(use_v2_encoding) {
v2::encode(resolve, package)
} else {
v1::encode(resolve, package)
}
}
pub fn encode_component(
use_v2: Option<bool>,
resolve: &Resolve,
package: PackageId,
) -> Result<ComponentBuilder> {
if use_v2.unwrap_or_else(use_v2_encoding) {
v2::encode_component(resolve, package)
} else {
v1::encode_component(resolve, package)
}
}
pub fn encode_world(
use_v2: Option<bool>,
resolve: &Resolve,
world_id: WorldId,
) -> Result<ComponentType> {
if use_v2.unwrap_or_else(use_v2_encoding) {
v2::encode_world(resolve, world_id)
} else {
v1::encode_world(resolve, world_id)
}
}