before publish and after publish commands

pull/60/merge
Henrique Dias 2016-12-18 12:40:56 +00:00
parent 76c91576cf
commit af8dbc2180
2 changed files with 33 additions and 7 deletions

16
hugo.go
View File

@ -101,7 +101,23 @@ func (h Hugo) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error) {
}
if r.Header.Get("Regenerate") == "true" {
if err = h.Config.BeforePublish(
r,
&h.FileManager.Configs[0],
h.FileManager.Configs[0].User,
); err != nil {
return http.StatusInternalServerError, err
}
RunHugo(h.Config, false)
if err = h.Config.AfterPublish(
r,
&h.FileManager.Configs[0],
h.FileManager.Configs[0].User,
); err != nil {
return http.StatusInternalServerError, err
}
}
if r.Header.Get("Schedule") != "" {

View File

@ -62,13 +62,15 @@ func setup(c *caddy.Controller) error {
// Config is a configuration for managing a particular hugo website.
type Config struct {
Public string // Public content path
Root string // Hugo files path
Hugo string // Hugo executable location
Styles string // Admin styles path
Args []string // Hugo arguments
BaseURL string // BaseURL of admin interface
WebDavURL string
Public string // Public content path
Root string // Hugo files path
Hugo string // Hugo executable location
Styles string // Admin styles path
Args []string // Hugo arguments
BaseURL string // BaseURL of admin interface
WebDavURL string
BeforePublish config.CommandFunc
AfterPublish config.CommandFunc
}
// Parse parses the configuration set by the user so it can be
@ -127,6 +129,14 @@ func parse(c *caddy.Controller, root string) (*Config, *filemanager.FileManager,
}
cfg.Args = append(cfg.Args, "--"+values[0]+"="+value)
case "before_publish":
if cfg.BeforePublish, err = config.CommandRunner(c); err != nil {
return cfg, &filemanager.FileManager{}, err
}
case "after_publish":
if cfg.AfterPublish, err = config.CommandRunner(c); err != nil {
return cfg, &filemanager.FileManager{}, err
}
default:
line := "\n\t" + c.Val()