wasm-pkg-loader 0.4.0

Wasm package loader
Documentation
# Wasm Package Loader

A minimal Package Registry interface for read-only consumers.

## CLI

`wasm-pkg-loader` is intended to be used primarily as a library, but it also
provides a simple CLI interface:

```console
$ wasm-pkg-loader wasi:preview1-command-adapter
Package: wasi:preview1-command-adapter
Versions:
  0.2.0
$ wasm-pkg-loader wasi:preview-command-adapter fetch 0.2.0
Fetching release details for wasi:preview1-command-adapter@0.2.0...
Downloading content to "wasi-preview1-command-adapter-0.2.0.wasm"...
```

## Running Tests

The e2e tests require:
- The [`oras`]https://github.com/oras-project/oras CLI tool to be available in
  your local `PATH`
- An [OCI Distribution Spec]https://github.com/opencontainers/distribution-spec-compliant
  registry to be running at `localhost:5000`. An ephemeral registry can be run with:

  ```console
  $ docker run --rm -p 5000:5000 distribution/distribution:edge
  ```

The e2e tests themselves are in the separate [`tests/e2e`](./tests/e2e/) crate:

```console
$ cd tests/e2e
$ cargo run
```

## Publishing to OCI

Until publisher tooling is developed, the [`oras`](https://github.com/oras-project/oras)
CLI tool can be used to publish packages:

> Note: The details of this process (like MIME type) are still being worked on.

```console
$ oras push \
    "${OCI_REGISTRY}/${WARG_NAMESPACE}/${PACKAGE_MAME}:${SEMVER}" \
    "${WASM_FILE}:application/wasm"

# e.g. to push `component.wasm` as "my-namespace:my-pkg@1.0.0" to `localhost:5000`:
$ oras push \
    localhost:5000/my-namespace/my-pkg:1.0.0 \
    component.wasm:application/wasm
```

> Note: Some registry implementations may require `--image-spec v1.0` for
> compatibility with this example.