feat(docs): add template preview (#1777)

This commit is contained in:
nils måsén 2023-10-02 16:11:04 +02:00 committed by GitHub
parent 9b28fbc24d
commit 9180e9558e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 944 additions and 20 deletions

49
tplprev/main.go Normal file
View file

@ -0,0 +1,49 @@
//go:build !wasm
package main
import (
"flag"
"fmt"
"os"
"github.com/containrrr/watchtower/internal/meta"
"github.com/containrrr/watchtower/pkg/notifications/preview"
"github.com/containrrr/watchtower/pkg/notifications/preview/data"
)
func main() {
fmt.Fprintf(os.Stderr, "watchtower/tplprev %v\n\n", meta.Version)
var states string
var entries string
flag.StringVar(&states, "states", "cccuuueeekkktttfff", "sCanned, Updated, failEd, sKipped, sTale, Fresh")
flag.StringVar(&entries, "entries", "ewwiiidddd", "Fatal,Error,Warn,Info,Debug,Trace")
flag.Parse()
if len(flag.Args()) < 1 {
fmt.Fprintln(os.Stderr, "Missing required argument TEMPLATE")
flag.Usage()
os.Exit(1)
return
}
input, err := os.ReadFile(flag.Arg(0))
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to read template file %q: %v\n", flag.Arg(0), err)
os.Exit(1)
return
}
result, err := preview.Render(string(input), data.StatesFromString(states), data.LevelsFromString(entries))
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to read template file %q: %v\n", flag.Arg(0), err)
os.Exit(1)
return
}
fmt.Println(result)
}

62
tplprev/main_wasm.go Normal file
View file

@ -0,0 +1,62 @@
//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
}