feat: make sure Viper compiles on WASM

fsnotify is not available on WASM,
so config watching is not going to work.

Signed-off-by: Mark Sagi-Kazar <mark.sagikazar@gmail.com>
This commit is contained in:
Mark Sagi-Kazar 2021-04-22 11:35:02 +02:00 committed by Márk Sági-Kazár
parent 727a41c38a
commit 36be6bf91f
4 changed files with 68 additions and 1 deletions

26
.github/workflows/wasm.yml vendored Normal file
View file

@ -0,0 +1,26 @@
name: WASM
on:
push:
branches:
- master
pull_request:
jobs:
build:
name: Build
runs-on: ubuntu-latest
env:
GOFLAGS: -mod=readonly
steps:
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: '1.16'
- name: Checkout code
uses: actions/checkout@v2
- name: Ensure Viper compiles for WASM
run: GOOS=js GOARCH=wasm go build .

View file

@ -344,7 +344,7 @@ func (v *Viper) WatchConfig() {
initWG := sync.WaitGroup{}
initWG.Add(1)
go func() {
watcher, err := fsnotify.NewWatcher()
watcher, err := newWatcher()
if err != nil {
log.Fatal(err)
}

11
watch.go Normal file
View file

@ -0,0 +1,11 @@
// +build !js
package viper
import "github.com/fsnotify/fsnotify"
type watcher = fsnotify.Watcher
func newWatcher() (*watcher, error) {
return fsnotify.NewWatcher()
}

30
watch_wasm.go Normal file
View file

@ -0,0 +1,30 @@
// +build js,wasm
package viper
import (
"errors"
"github.com/fsnotify/fsnotify"
)
type watcher struct {
Events chan fsnotify.Event
Errors chan error
}
func (*watcher) Close() error {
return nil
}
func (*watcher) Add(name string) error {
return nil
}
func (*watcher) Remove(name string) error {
return nil
}
func newWatcher() (*watcher, error) {
return &watcher{}, errors.New("fsnotify is not supported on WASM")
}