Skip to content

Commit

Permalink
Trigger an editor after hugo new.
Browse files Browse the repository at this point in the history
- Trigger permanently with NewContentEditor in config.{toml,yaml,json}.
- Trigger on an individual basis with --editor.
  • Loading branch information
halostatue authored and spf13 committed Dec 12, 2014
1 parent 2c8e9a7 commit ec4b6c0
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 1 deletion.
8 changes: 7 additions & 1 deletion commands/hugo.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ var hugoCmdV *cobra.Command

//Flags that are to be added to commands.
var BuildWatch, Draft, Future, UglyUrls, Verbose, Logging, VerboseLog, DisableRSS, DisableSitemap, PluralizeListTitles, NoTimes bool
var Source, Destination, Theme, BaseUrl, CfgFile, LogFile string
var Source, Destination, Theme, BaseUrl, CfgFile, LogFile, Editor string

//Execute adds all child commands to the root command HugoCmd and sets flags appropriately.
func Execute() {
Expand Down Expand Up @@ -88,6 +88,7 @@ func init() {
HugoCmd.PersistentFlags().BoolVar(&UglyUrls, "uglyUrls", false, "if true, use /filename.html instead of /filename/")
HugoCmd.PersistentFlags().StringVarP(&BaseUrl, "baseUrl", "b", "", "hostname (and path) to the root eg. http://spf13.com/")
HugoCmd.PersistentFlags().StringVar(&CfgFile, "config", "", "config file (default is path/config.yaml|json|toml)")
HugoCmd.PersistentFlags().StringVar(&Editor, "editor", "", "edit new content with this editor, if provided")
HugoCmd.PersistentFlags().BoolVar(&Logging, "log", false, "Enable Logging")
HugoCmd.PersistentFlags().StringVar(&LogFile, "logFile", "", "Log File path (if set, logging enabled automatically)")
HugoCmd.PersistentFlags().BoolVar(&VerboseLog, "verboseLog", false, "verbose logging")
Expand Down Expand Up @@ -134,6 +135,7 @@ func InitializeConfig() {
viper.SetDefault("PluralizeListTitles", true)
viper.SetDefault("FootnoteAnchorPrefix", "")
viper.SetDefault("FootnoteReturnLinkContents", "")
viper.SetDefault("NewContentEditor", "")

if hugoCmdV.PersistentFlags().Lookup("buildDrafts").Changed {
viper.Set("BuildDrafts", Draft)
Expand Down Expand Up @@ -163,6 +165,10 @@ func InitializeConfig() {
viper.Set("PluralizeListTitles", PluralizeListTitles)
}

if hugoCmdV.PersistentFlags().Lookup("editor").Changed {
viper.Set("NewContentEditor", Editor)
}

if hugoCmdV.PersistentFlags().Lookup("logFile").Changed {
viper.Set("LogFile", LogFile)
}
Expand Down
17 changes: 17 additions & 0 deletions create/content.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ import (
"bytes"
"io/ioutil"
"os"
"os/exec"
"path"
"path/filepath"
"strings"
"time"
Expand Down Expand Up @@ -104,6 +106,21 @@ func NewContent(kind, name string) (err error) {
}
jww.FEEDBACK.Println(helpers.AbsPathify(filepath.Join(viper.GetString("contentDir"), name)), "created")

editor := viper.GetString("NewContentEditor")

if editor != "" {
jww.FEEDBACK.Printf("Editing %s in %s.\n", name, editor)

cmd := exec.Command(editor, path.Join(viper.GetString("contentDir"), name))
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr

if err = cmd.Run(); err != nil {
return
}
}

return nil
}

Expand Down

0 comments on commit ec4b6c0

Please sign in to comment.