mirror of
https://github.com/gohugoio/hugo.git
synced 2025-08-16 20:53:59 +02:00
Improve error handling in commands
Cobra, the CLI commander in use in Hugo, has some long awaited improvements in the error handling department. This enables a more centralized error handling approach. This commit introduces that by changing all the command funcs to `RunE`: * The core part of the error logging, usage logging and `os.Exit(-1)` is now performed in one place and that one place only. * The usage text is now only shown on invalid arguments etc. (user errors) Fixes #1502
This commit is contained in:
committed by
Anthony Fok
parent
6959b7fa80
commit
3f0f7eed68
@@ -33,22 +33,25 @@ var listCmd = &cobra.Command{
|
||||
Long: `Listing out various types of content.
|
||||
|
||||
List requires a subcommand, e.g. ` + "`hugo list drafts`.",
|
||||
Run: nil,
|
||||
RunE: nil,
|
||||
}
|
||||
|
||||
var listDraftsCmd = &cobra.Command{
|
||||
Use: "drafts",
|
||||
Short: "List all drafts",
|
||||
Long: `List all of the drafts in your content directory.`,
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
|
||||
if err := InitializeConfig(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
InitializeConfig()
|
||||
viper.Set("BuildDrafts", true)
|
||||
|
||||
site := &hugolib.Site{}
|
||||
|
||||
if err := site.Process(); err != nil {
|
||||
fmt.Println("Error Processing Source Content", err)
|
||||
return newSystemError("Error Processing Source Content", err)
|
||||
}
|
||||
|
||||
for _, p := range site.Pages {
|
||||
@@ -58,6 +61,8 @@ var listDraftsCmd = &cobra.Command{
|
||||
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
},
|
||||
}
|
||||
|
||||
@@ -66,15 +71,18 @@ var listFutureCmd = &cobra.Command{
|
||||
Short: "List all posts dated in the future",
|
||||
Long: `List all of the posts in your content directory which will be
|
||||
posted in the future.`,
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
|
||||
if err := InitializeConfig(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
InitializeConfig()
|
||||
viper.Set("BuildFuture", true)
|
||||
|
||||
site := &hugolib.Site{}
|
||||
|
||||
if err := site.Process(); err != nil {
|
||||
fmt.Println("Error Processing Source Content", err)
|
||||
return newSystemError("Error Processing Source Content", err)
|
||||
}
|
||||
|
||||
for _, p := range site.Pages {
|
||||
@@ -84,5 +92,7 @@ posted in the future.`,
|
||||
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
},
|
||||
}
|
||||
|
Reference in New Issue
Block a user