From ec4b6c03a8139988d6456195fe098b3dcfaca91d Mon Sep 17 00:00:00 2001 From: Austin Ziegler Date: Tue, 14 Oct 2014 22:48:55 -0400 Subject: [PATCH] Trigger an editor after `hugo new`. - Trigger permanently with NewContentEditor in config.{toml,yaml,json}. - Trigger on an individual basis with --editor. --- commands/hugo.go | 8 +++++++- create/content.go | 17 +++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/commands/hugo.go b/commands/hugo.go index 645dcb825..5a395e241 100644 --- a/commands/hugo.go +++ b/commands/hugo.go @@ -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() { @@ -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") @@ -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) @@ -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) } diff --git a/create/content.go b/create/content.go index f1a2a3350..c3c1747a2 100644 --- a/create/content.go +++ b/create/content.go @@ -17,6 +17,8 @@ import ( "bytes" "io/ioutil" "os" + "os/exec" + "path" "path/filepath" "strings" "time" @@ -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 }