summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortjpcc <tjp@ctrl-c.club>2023-10-18 12:49:14 -0600
committertjpcc <tjp@ctrl-c.club>2023-10-18 12:49:14 -0600
commitad7fbaae7a2001502582e6daa27eaffad8a3c447 (patch)
tree6330cf924fe19e61d8f047d7173678cc49a7ba9e
parent059d44027018f1eaa69d3a0f9779da78eb651ced (diff)
fix Modifiers.Empty() and "git with templates"
-rw-r--r--parse.go13
-rw-r--r--types.go10
2 files changed, 20 insertions, 3 deletions
diff --git a/parse.go b/parse.go
index 886aa2d..e1b375f 100644
--- a/parse.go
+++ b/parse.go
@@ -265,9 +265,18 @@ func parseServerDirectives(server *Server, buf *bufio.Reader) error {
return nil
}
+func emptyExceptTemplates(mods *Modifiers) bool {
+ if mods == nil {
+ return true
+ }
+ cpy := *mods
+ cpy.Templates = nil
+ return cpy.Empty()
+}
+
func validateRoute(serverType string, dir *RouteDirective) error {
- if dir.Type == "git" && !dir.Modifiers.Empty() {
- return errors.New("git directives don't support 'with' modifiers")
+ if dir.Type == "git" && !emptyExceptTemplates(&dir.Modifiers) {
+ return errors.New("unsupported 'with' modifier on 'git' directive")
}
if dir.Type == "cgi" && (dir.Modifiers.Exec || dir.Modifiers.DirList || dir.Modifiers.DirDefault != "") {
diff --git a/types.go b/types.go
index 392b955..af7f30f 100644
--- a/types.go
+++ b/types.go
@@ -25,7 +25,15 @@ type Modifiers struct {
}
func (m Modifiers) Empty() bool {
- return m.DirDefault == "" && !m.DirList && !m.Exec && !m.ExtendedGophermap
+ return (m.DirDefault == "" &&
+ !m.DirList &&
+ !m.Exec &&
+ !m.ExtendedGophermap &&
+ m.ExecCmd == "" &&
+ !m.AutoAtom &&
+ m.Titan == nil &&
+ m.titanName == "" &&
+ m.Templates == nil)
}
type RouteDirective struct {