Skip to content

Commit

Permalink
.github,misc: make tinygo work
Browse files Browse the repository at this point in the history
  • Loading branch information
egonelbre committed Sep 15, 2023
1 parent 6298237 commit d4f45e4
Show file tree
Hide file tree
Showing 7 changed files with 148 additions and 26 deletions.
5 changes: 0 additions & 5 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,3 @@ jobs:
with:
go-version: ${{ matrix.go-version }}
- run: go vet ./...
- run: go test -vet=off -v ./...
- if: matrix.os == 'ubuntu-latest'
run: GOOS=wasip1 GOARCH=wasm go vet ./...
- if: matrix.os == 'ubuntu-latest'
run: GOOS=js GOARCH=wasm go vet ./...
26 changes: 26 additions & 0 deletions .github/workflows/wasm.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: wasm

on:
push:
branches:
- master
pull_request:

jobs:
build:
runs-on: "ubuntu-latest"
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v4
with:
go-version: "1.21.x"
- uses: acifani/setup-tinygo@v1
with:
tinygo-version: "0.29.0"
- run: GOOS=wasip1 GOARCH=wasm go vet ./...
- run: GOOS=js GOARCH=wasm go vet ./...
- run: GOOS=wasip1 GOARCH=wasm go build -o go.wasip.wasm ./examples/wasm
- run: GOOS=js GOARCH=wasm go build -o go.js.wasm ./examples/wasm
- run: tinygo build -target wasm -o tiny.wasm ./examples/wasm
3 changes: 3 additions & 0 deletions environment/runtime.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.

//go:build !tinygo
// +build !tinygo

package environment

import (
Expand Down
25 changes: 4 additions & 21 deletions error_names.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@ package monkit
import (
"context"
"io"
"net"
"os"
"sync"
"sync/atomic"
)
Expand Down Expand Up @@ -90,25 +88,10 @@ func getErrorName(err error) string {
if isErrnoError(err) {
return "Errno"
}
switch err.(type) {
case *os.SyscallError:
return "Syscall Error"
case net.UnknownNetworkError:
return "Unknown Network Error"
case *net.AddrError:
return "Addr Error"
case net.InvalidAddrError:
return "Invalid Addr Error"
case *net.OpError:
return "Net Op Error"
case *net.ParseError:
return "Net Parse Error"
case *net.DNSError:
return "DNS Error"
case *net.DNSConfigError:
return "DNS Config Error"
case net.Error:
return "Network Error"

if name := getNetErrorName(err); name != "" {
return name
}

return "System Error"
}
47 changes: 47 additions & 0 deletions error_names_net.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
// Copyright (C) 2023 Space Monkey, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

//go:build !tinygo
// +build !tinygo

package monkit

import (
"net"
"os"
)

// getNetErrorName translates net package error.
func getNetErrorName(err error) string {
switch err.(type) {
case *os.SyscallError:
case net.UnknownNetworkError:
return "Unknown Network Error"
case *net.AddrError:
return "Addr Error"
case net.InvalidAddrError:
return "Invalid Addr Error"
case *net.OpError:
return "Net Op Error"
case *net.ParseError:
return "Net Parse Error"
case *net.DNSError:
return "DNS Error"
case *net.DNSConfigError:
return "DNS Config Error"
case net.Error:
return "Network Error"
}
return ""
}
50 changes: 50 additions & 0 deletions error_names_net_tinygo.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
// Copyright (C) 2023 Space Monkey, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

//go:build tinygo
// +build tinygo

package monkit

import (
"net"
"os"
)

// getNetErrorName translates net package error.
func getNetErrorName(err error) string {
// tiny-go does not implement the full net package,
// hence it needs special handling.

switch err.(type) {
case *os.SyscallError:
// case net.UnknownNetworkError:
// return "Unknown Network Error"
case *net.AddrError:
return "Addr Error"
// case net.InvalidAddrError:
// return "Invalid Addr Error"
case *net.OpError:
return "Net Op Error"
case *net.ParseError:
return "Net Parse Error"
// case *net.DNSError:
// return "DNS Error"
// case *net.DNSConfigError:
// return "DNS Config Error"
case net.Error:
return "Network Error"
}
return ""
}
18 changes: 18 additions & 0 deletions examples/wasm/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package main

import (
"context"

"github.com/spacemonkeygo/monkit/v3"
"github.com/spacemonkeygo/monkit/v3/environment"
)

var mon = monkit.Package()

func main() {
ctx := context.Background()
environment.Register(monkit.Default)

var err error
defer mon.Task()(&ctx)(&err)
}

0 comments on commit d4f45e4

Please sign in to comment.