Update home config

This commit is contained in:
Tom 2023-04-27 14:57:43 +02:00
parent 44af84abe9
commit 8c4de32246
9 changed files with 30 additions and 18 deletions

View file

@ -1,4 +1,7 @@
.PHONY: clean all deps
.PHONY: clean all deps live
live:
sudo CGO_ENABLED=0 go run ./cmd/wdcli $(ARGS)
all: wdcli

View file

@ -9,7 +9,9 @@ import (
// Config is the configuration command
var Config wisski_distillery.Command = cfg{}
type cfg struct{}
type cfg struct {
Human bool `long:"human" description:"Print configuration in human-readable format"`
}
func (c cfg) Description() wisski_distillery.Description {
return wisski_distillery.Description{
@ -26,7 +28,12 @@ var errMarshalConfig = exit.Error{
ExitCode: exit.ExitGeneric,
}
func (cfg) Run(context wisski_distillery.Context) error {
func (cfg cfg) Run(context wisski_distillery.Context) error {
if cfg.Human {
human := context.Environment.Config.MarshalSensitive()
context.Println(human)
return nil
}
if err := context.Environment.Config.Marshal(context.Stdout); err != nil {
return errMarshalConfig.Wrap(err)
}

2
go.mod
View file

@ -16,7 +16,7 @@ require (
github.com/pquerna/otp v1.4.0
github.com/rs/zerolog v1.29.0
github.com/tkw1536/goprogram v0.3.5
github.com/tkw1536/pkglib v0.0.0-20230427085354-69b5e047c325
github.com/tkw1536/pkglib v0.0.0-20230427125619-a4a18a5b7d15
github.com/yuin/goldmark v1.5.4
github.com/yuin/goldmark-meta v1.1.0
golang.org/x/crypto v0.8.0

6
go.sum
View file

@ -115,10 +115,8 @@ github.com/tdewolff/parse v2.3.4+incompatible/go.mod h1:8oBwCsVmUkgHO8M5iCzSIDtp
github.com/tdewolff/test v1.0.7 h1:8Vs0142DmPFW/bQeHRP3MV19m1gvndjUb1sn8yy74LM=
github.com/tkw1536/goprogram v0.3.5 h1:S0axKo3R/vGa4zhYqYDKAZEPhAfwUSSeMtVwnAu4sNY=
github.com/tkw1536/goprogram v0.3.5/go.mod h1:pYr4dMHOSVurbPQ4KTR0ett8XWNISbsRS6zlh9Nsxa8=
github.com/tkw1536/pkglib v0.0.0-20230409110642-5f57240e294b h1:qeoY+XHCDx1fubOJkLuMSdz4xNWtgeLpxPfxBiEIj4c=
github.com/tkw1536/pkglib v0.0.0-20230409110642-5f57240e294b/go.mod h1:0A1B9Cc5+yJXR3eeB14CqD4dFSbEjjWRo5Pr9M3XYuI=
github.com/tkw1536/pkglib v0.0.0-20230427085354-69b5e047c325 h1:A1XZyL73L+FI/r3P7OLnibAFDlCV0Q8dTU7bwFfAYvo=
github.com/tkw1536/pkglib v0.0.0-20230427085354-69b5e047c325/go.mod h1:0A1B9Cc5+yJXR3eeB14CqD4dFSbEjjWRo5Pr9M3XYuI=
github.com/tkw1536/pkglib v0.0.0-20230427125619-a4a18a5b7d15 h1:sVy3pSreMY5obUOGz2jCaPYbXh+5vklqMJrZZsrII+0=
github.com/tkw1536/pkglib v0.0.0-20230427125619-a4a18a5b7d15/go.mod h1:0A1B9Cc5+yJXR3eeB14CqD4dFSbEjjWRo5Pr9M3XYuI=
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo=
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=

View file

@ -80,7 +80,7 @@ func (config Config) MarshalSensitive() string {
var configBytes []byte
// Marshal marshals this configuration in nicely formatted form.
// Where possible, this will provided yaml comments.
// Where possible, this will maintain yaml comments.
//
// Previous may optionally provide the bytes of a previous configuration file to replace settings in.
// The previous yaml file must be a valid configuration yaml, meaning all fields should be set.
@ -103,7 +103,7 @@ func Marshal(config *Config, previous []byte) ([]byte, error) {
}
// transplant the configuration yaml into the template
if err := yamlx.Transplant(template, cfg); err != nil {
if err := yamlx.Transplant(template, cfg, true); err != nil {
return nil, err
}

View file

@ -41,9 +41,13 @@ http:
# Configuration for the (public) homepage of the distillery.
home:
# the title of the distillery to be set
title: null
# the url to redirect to for more information about this instance of the distillery.
# to be configured by default.
redirect: null
# configure the list of systems on the homepage.
list:

View file

@ -4,6 +4,7 @@ import "github.com/FAU-CDI/wisski-distillery/internal/config/validators"
// HomeConfig determines options for the homepage of the distillery
type HomeConfig struct {
Title string `yaml:"title" default:"WissKI Distillery" validate:"nonempty"`
SelfRedirect *validators.URL `yaml:"redirect" default:"https://github.com/FAU-CDI/wisski-distillery" validate:"https"`
List HomeListConfig `yaml:"list" recurse:"true"`
}

View file

@ -29,21 +29,17 @@ var (
_ component.Routeable = (*Home)(nil)
)
func (*Home) Routes() component.Routes {
func (home *Home) Routes() component.Routes {
return component.Routes{
Prefix: "/",
MatchAllDomains: true,
CSRF: false,
MenuTitle: "WissKI Distillery",
MenuTitle: home.Config.Home.Title,
MenuPriority: component.MenuHome,
}
}
var (
menuHome = component.MenuItem{Title: "WissKI Distillery", Path: "/"}
)
func (home *Home) HandleRoute(ctx context.Context, route string) (http.Handler, error) {
// generate a default handler
dflt, err := home.loadRedirect(ctx)

View file

@ -7,6 +7,7 @@ import (
"net/http"
"strings"
"github.com/FAU-CDI/wisski-distillery/internal/dis/component"
"github.com/FAU-CDI/wisski-distillery/internal/dis/component/server/assets"
"github.com/FAU-CDI/wisski-distillery/internal/dis/component/server/templating"
"github.com/FAU-CDI/wisski-distillery/internal/status"
@ -18,7 +19,6 @@ var publicHTML []byte
var publicTemplate = templating.Parse[publicContext](
"public.html", publicHTML, nil,
templating.Title("WissKI Distillery"),
templating.Assets(assets.AssetsDefault),
)
@ -49,11 +49,14 @@ type publicContext struct {
const logoHTML = template.HTML(`<img src="/logo.svg" alt="WissKI Distillery Logo" class="biglogo">`)
func (home *Home) publicHandler(ctx context.Context) http.Handler {
title := home.Config.Home.Title
tpl := publicTemplate.Prepare(
home.Dependencies.Templating,
// set title and menu item
templating.Title(title),
templating.Crumbs(
menuHome,
component.MenuItem{Title: title, Path: "/"},
),
)