You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.3 KiB
Go
63 lines
1.3 KiB
Go
1 year ago
|
//go:build wasm
|
||
|
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
|
||
|
"github.com/containrrr/watchtower/internal/meta"
|
||
|
"github.com/containrrr/watchtower/pkg/notifications/preview"
|
||
|
"github.com/containrrr/watchtower/pkg/notifications/preview/data"
|
||
|
|
||
|
"syscall/js"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
fmt.Println("watchtower/tplprev v" + meta.Version)
|
||
|
|
||
|
js.Global().Set("WATCHTOWER", js.ValueOf(map[string]any{
|
||
|
"tplprev": js.FuncOf(jsTplPrev),
|
||
|
}))
|
||
|
<-make(chan bool)
|
||
|
|
||
|
}
|
||
|
|
||
|
func jsTplPrev(this js.Value, args []js.Value) any {
|
||
|
|
||
|
if len(args) < 3 {
|
||
|
return "Requires 3 arguments passed"
|
||
|
}
|
||
|
|
||
|
input := args[0].String()
|
||
|
|
||
|
statesArg := args[1]
|
||
|
var states []data.State
|
||
|
|
||
|
if statesArg.Type() == js.TypeString {
|
||
|
states = data.StatesFromString(statesArg.String())
|
||
|
} else {
|
||
|
for i := 0; i < statesArg.Length(); i++ {
|
||
|
state := data.State(statesArg.Index(i).String())
|
||
|
states = append(states, state)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
levelsArg := args[2]
|
||
|
var levels []data.LogLevel
|
||
|
|
||
|
if levelsArg.Type() == js.TypeString {
|
||
|
levels = data.LevelsFromString(statesArg.String())
|
||
|
} else {
|
||
|
for i := 0; i < levelsArg.Length(); i++ {
|
||
|
level := data.LogLevel(levelsArg.Index(i).String())
|
||
|
levels = append(levels, level)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
result, err := preview.Render(input, states, levels)
|
||
|
if err != nil {
|
||
|
return "Error: " + err.Error()
|
||
|
}
|
||
|
return result
|
||
|
}
|