diff --git a/.github/workflows/check-witx.yaml b/.github/workflows/check-witx.yaml new file mode 100644 index 0000000..d4b71e2 --- /dev/null +++ b/.github/workflows/check-witx.yaml @@ -0,0 +1,26 @@ +name: Check Witx + +on: [push, pull_request] + +jobs: + Witx: + name: "Check Witx" + runs-on: ubuntu-latest + timeout-minutes: 10 + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Generate markdown + uses: NodeFactoryIo/witx-md-generator-action@master + with: + witxGlobPath: spec/witx/**/*.witx + + - name: Check if there are changes + id: changes + uses: UnicornGlobal/has-changes-action@v1.0.11 + + - name: Process changes + if: steps.changes.outputs.changed == 1 + run: exit 1 diff --git a/spec/witx/README.md b/spec/witx/README.md new file mode 100644 index 0000000..8f4beee --- /dev/null +++ b/spec/witx/README.md @@ -0,0 +1,15 @@ +## Generating Markdown + +Generating Markdown is done via tool from WASI [repo](https://github.com/WebAssembly/WASI/tree/master/tools/witx): + +```bash +cargo run witx docs "path/**/*.witx" +``` + +### Docker + +Also available is a docker image with prepackaged cli: + +```bash +docker run -v /path:/usr/src/witx nodefactory/witx docs "path/**/*.witx" +``` diff --git a/spec/witx/w3.md b/spec/witx/w3.md new file mode 100644 index 0000000..1353777 --- /dev/null +++ b/spec/witx/w3.md @@ -0,0 +1,123 @@ +# Types +# Modules +## w3 +### Imports +### Functions + +--- + +#### `_w3_init()` +Init w3 + +##### Params +##### Results + +--- + +#### `_w3_invoke(name_size: u64, args_size: u32)` +Invoke call + +##### Params +- `name_size`: `u64` + +- `args_size`: `u32` + +##### Results + +--- + +#### `__w3_invoke_args(name_ptr: s32, args_ptr: s32)` +Get Invoke Arguments + +##### Params +- `name_ptr`: `s32` + +- `args_ptr`: `s32` + +##### Results + +--- + +#### `__w3_invoke_result(ptr: s32, len: u64)` +Set Invoke Arguments + +##### Params +- `ptr`: `s32` + +- `len`: `u64` + +##### Results + +--- + +#### `__w3_invoke_error(ptr: s32, len: u64)` +Set Invoke Error + +##### Params +- `ptr`: `s32` + +- `len`: `u64` + +##### Results + +--- + +#### `__w3_query(uri_ptr: s32, uri_len: u64, query_ptr: s32, query_len: u64, args_ptr: s32, args_len: u64) -> s8` +Query API + +##### Params +- `uri_ptr`: `s32` + +- `uri_len`: `u64` + +- `query_ptr`: `s32` + +- `query_len`: `u64` + +- `args_ptr`: `s32` + +- `args_len`: `u64` + +##### Results +- `res`: `s8` + + +--- + +#### `__w3_query_result_len() -> u64` +Query Result + +##### Params +##### Results +- `res`: `u64` + + +--- + +#### `__w3_query_result(ptr: s32)` +Query Result + +##### Params +- `ptr`: `s32` + +##### Results + +--- + +#### `__w3_query_error_len() -> u64` +Query Error + +##### Params +##### Results +- `res`: `u64` + + +--- + +#### `__w3_query_error(ptr: s32)` +Query Error + +##### Params +- `ptr`: `s32` + +##### Results diff --git a/spec/witx/w3.witx b/spec/witx/w3.witx new file mode 100644 index 0000000..408c61c --- /dev/null +++ b/spec/witx/w3.witx @@ -0,0 +1,57 @@ +(module $w3 + ;;; Init w3 + (@interface func (export "_w3_init")) + + ;;; Invoke call + (@interface func (export "_w3_invoke") + (param $name_size u64) + (param $args_size u32) + ) + + ;;; Get Invoke Arguments + (@interface func (export "__w3_invoke_args") + (param $name_ptr s32) + (param $args_ptr s32) + ) + + ;;; Set Invoke Arguments + (@interface func (export "__w3_invoke_result") + (param $ptr s32) + (param $len u64) + ) + + ;;; Set Invoke Error + (@interface func (export "__w3_invoke_error") + (param $ptr s32) + (param $len u64) + ) + + ;;; Query API + (@interface func (export "__w3_query") + (param $uri_ptr s32) + (param $uri_len u64) + (param $query_ptr s32) + (param $query_len u64) + (param $args_ptr s32) + (param $args_len u64) + (result $res s8) + ) + + ;;; Query Result + (@interface func (export "__w3_query_result_len") + (result $res u64) + ) + ;;; Query Result + (@interface func (export "__w3_query_result") + (param $ptr s32) + ) + + ;;; Query Error + (@interface func (export "__w3_query_error_len") + (result $res u64) + ) + ;;; Query Error + (@interface func (export "__w3_query_error") + (param $ptr s32) + ) +)