before and after save hooks

This commit is contained in:
Henrique Dias
2016-12-18 12:34:31 +00:00
parent 205f9a22b6
commit aae318028b
3 changed files with 83 additions and 1 deletions

View File

@@ -3,6 +3,7 @@ package config
import (
"fmt"
"io/ioutil"
"net/http"
"regexp"
"strconv"
"strings"
@@ -23,9 +24,11 @@ type Config struct {
HugoEnabled bool // Enables the Hugo plugin for File Manager
Users map[string]*User
WebDavURL string
CurrentUser *User
BeforeSave commandRunner
AfterSave commandRunner
}
// AbsoluteURL ...
func (c Config) AbsoluteURL() string {
return c.PrefixURL + c.BaseURL
}
@@ -70,6 +73,8 @@ func Parse(c *caddy.Controller) ([]Config, error) {
cfg.AllowEdit = true
cfg.AllowNew = true
cfg.Commands = []string{"git", "svn", "hg"}
cfg.BeforeSave = func(r *http.Request, c *Config, u *User) error { return nil }
cfg.AfterSave = func(r *http.Request, c *Config, u *User) error { return nil }
cfg.Rules = []*Rule{{
Regex: true,
Allow: false,
@@ -106,6 +111,14 @@ func Parse(c *caddy.Controller) ([]Config, error) {
if user.FrontMatter != "yaml" && user.FrontMatter != "json" && user.FrontMatter != "toml" {
return configs, c.Err("frontmatter type not supported")
}
case "before_save":
if cfg.BeforeSave, err = CommandRunner(c); err != nil {
return configs, err
}
case "after_save":
if cfg.AfterSave, err = CommandRunner(c); err != nil {
return configs, err
}
case "webdav":
if !c.NextArg() {
return configs, c.ArgErr()