From c4a116558725ab885b7d303e0924cf2b35c9ba79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Thu, 6 Apr 2017 17:39:20 +0200 Subject: [PATCH] all: Handle all errors As reported by `errcheck`. --- commands/gendoc.go | 4 ++- commands/genman.go | 4 ++- commands/hugo.go | 43 ++++++++++++++++++-------------- hugolib/hugo_sites.go | 4 ++- hugolib/site.go | 16 +++++++++--- hugolib/site_render.go | 4 ++- transform/hugogeneratorinject.go | 9 +++++-- 7 files changed, 55 insertions(+), 29 deletions(-) diff --git a/commands/gendoc.go b/commands/gendoc.go index 5ffd084e1..8f2414465 100644 --- a/commands/gendoc.go +++ b/commands/gendoc.go @@ -53,7 +53,9 @@ for rendering in Hugo.`, } if found, _ := helpers.Exists(gendocdir, hugofs.Os); !found { jww.FEEDBACK.Println("Directory", gendocdir, "does not exist, creating...") - hugofs.Os.MkdirAll(gendocdir, 0777) + if err := hugofs.Os.MkdirAll(gendocdir, 0777); err != nil { + return err + } } now := time.Now().Format(time.RFC3339) prepender := func(filename string) string { diff --git a/commands/genman.go b/commands/genman.go index f7a3a424d..7b26afeed 100644 --- a/commands/genman.go +++ b/commands/genman.go @@ -43,7 +43,9 @@ in the "man" directory under the current directory.`, } if found, _ := helpers.Exists(genmandir, hugofs.Os); !found { jww.FEEDBACK.Println("Directory", genmandir, "does not exist, creating...") - hugofs.Os.MkdirAll(genmandir, 0777) + if err := hugofs.Os.MkdirAll(genmandir, 0777); err != nil { + return err + } } cmd.Root().DisableAutoGenTag = true diff --git a/commands/hugo.go b/commands/hugo.go index 3d922deff..7a7344c4c 100644 --- a/commands/hugo.go +++ b/commands/hugo.go @@ -211,7 +211,7 @@ func initRootPersistentFlags() { // Set bash-completion validConfigFilenames := []string{"json", "js", "yaml", "yml", "toml", "tml"} - HugoCmd.PersistentFlags().SetAnnotation("config", cobra.BashCompFilenameExt, validConfigFilenames) + _ = HugoCmd.PersistentFlags().SetAnnotation("config", cobra.BashCompFilenameExt, validConfigFilenames) } // initHugoBuildCommonFlags initialize common flags related to the Hugo build. @@ -249,10 +249,10 @@ func initHugoBuildCommonFlags(cmd *cobra.Command) { // Set bash-completion. // Each flag must first be defined before using the SetAnnotation() call. - cmd.Flags().SetAnnotation("source", cobra.BashCompSubdirsInDir, []string{}) - cmd.Flags().SetAnnotation("cacheDir", cobra.BashCompSubdirsInDir, []string{}) - cmd.Flags().SetAnnotation("destination", cobra.BashCompSubdirsInDir, []string{}) - cmd.Flags().SetAnnotation("theme", cobra.BashCompSubdirsInDir, []string{"themes"}) + _ = cmd.Flags().SetAnnotation("source", cobra.BashCompSubdirsInDir, []string{}) + _ = cmd.Flags().SetAnnotation("cacheDir", cobra.BashCompSubdirsInDir, []string{}) + _ = cmd.Flags().SetAnnotation("destination", cobra.BashCompSubdirsInDir, []string{}) + _ = cmd.Flags().SetAnnotation("theme", cobra.BashCompSubdirsInDir, []string{"themes"}) } func initBenchmarkBuildingFlags(cmd *cobra.Command) { @@ -274,7 +274,7 @@ func init() { hugoCmdV = HugoCmd // Set bash-completion - HugoCmd.PersistentFlags().SetAnnotation("logFile", cobra.BashCompFilenameExt, []string{}) + _ = HugoCmd.PersistentFlags().SetAnnotation("logFile", cobra.BashCompFilenameExt, []string{}) } // InitializeConfig initializes a config file with sensible default configuration flags. @@ -384,7 +384,9 @@ func InitializeConfig(subCmdVs ...*cobra.Command) (*deps.DepsCfg, error) { config.Set("cacheDir", helpers.GetTempDir("hugo_cache", fs.Source)) } - c.initFs(fs) + if err := c.initFs(fs); err != nil { + return nil, err + } cfg.Logger.INFO.Println("Using config file:", viper.ConfigFileUsed()) @@ -682,17 +684,18 @@ func (c *commandeer) getDirList() []string { return nil } - helpers.SymbolicWalk(c.Fs.Source, dataDir, walker) - helpers.SymbolicWalk(c.Fs.Source, c.PathSpec().AbsPathify(c.Cfg.GetString("contentDir")), walker) - helpers.SymbolicWalk(c.Fs.Source, i18nDir, walker) - helpers.SymbolicWalk(c.Fs.Source, c.PathSpec().AbsPathify(c.Cfg.GetString("layoutDir")), walker) + // SymbolicWalk will log anny ERRORs + _ = helpers.SymbolicWalk(c.Fs.Source, dataDir, walker) + _ = helpers.SymbolicWalk(c.Fs.Source, c.PathSpec().AbsPathify(c.Cfg.GetString("contentDir")), walker) + _ = helpers.SymbolicWalk(c.Fs.Source, i18nDir, walker) + _ = helpers.SymbolicWalk(c.Fs.Source, c.PathSpec().AbsPathify(c.Cfg.GetString("layoutDir")), walker) - helpers.SymbolicWalk(c.Fs.Source, staticDir, walker) + _ = helpers.SymbolicWalk(c.Fs.Source, staticDir, walker) if c.PathSpec().ThemeSet() { - helpers.SymbolicWalk(c.Fs.Source, filepath.Join(themesDir, "layouts"), walker) - helpers.SymbolicWalk(c.Fs.Source, filepath.Join(themesDir, "static"), walker) - helpers.SymbolicWalk(c.Fs.Source, filepath.Join(themesDir, "i18n"), walker) - helpers.SymbolicWalk(c.Fs.Source, filepath.Join(themesDir, "data"), walker) + _ = helpers.SymbolicWalk(c.Fs.Source, filepath.Join(themesDir, "layouts"), walker) + _ = helpers.SymbolicWalk(c.Fs.Source, filepath.Join(themesDir, "static"), walker) + _ = helpers.SymbolicWalk(c.Fs.Source, filepath.Join(themesDir, "i18n"), walker) + _ = helpers.SymbolicWalk(c.Fs.Source, filepath.Join(themesDir, "data"), walker) } @@ -824,7 +827,9 @@ func (c *commandeer) newWatcher(port int) error { walkAdder := func(path string, f os.FileInfo, err error) error { if f.IsDir() { c.Logger.FEEDBACK.Println("adding created directory to watchlist", path) - watcher.Add(path) + if err := watcher.Add(path); err != nil { + return err + } } return nil } @@ -833,7 +838,7 @@ func (c *commandeer) newWatcher(port int) error { // When mkdir -p is used, only the top directory triggers an event (at least on OSX) if ev.Op&fsnotify.Create == fsnotify.Create { if s, err := c.Fs.Source.Stat(ev.Name); err == nil && s.Mode().IsDir() { - helpers.SymbolicWalk(c.Fs.Source, ev.Name, walkAdder) + _ = helpers.SymbolicWalk(c.Fs.Source, ev.Name, walkAdder) } } @@ -921,7 +926,7 @@ func (c *commandeer) newWatcher(port int) error { // If file doesn't exist in any static dir, remove it toRemove := filepath.Join(publishDir, relPath) logger.Println("File no longer exists in static dir, removing", toRemove) - c.Fs.Destination.RemoveAll(toRemove) + _ = c.Fs.Destination.RemoveAll(toRemove) } else if err == nil { // If file still exists, sync it logger.Println("Syncing", relPath, "to", publishDir) diff --git a/hugolib/hugo_sites.go b/hugolib/hugo_sites.go index 9ef2dc91e..b18e66bac 100644 --- a/hugolib/hugo_sites.go +++ b/hugolib/hugo_sites.go @@ -551,7 +551,9 @@ func (s *Site) preparePagesForRender(cfg *BuildCfg) { p.Content = helpers.BytesToHTML(workContentCopy) if summaryContent == nil { - p.setAutoSummary() + if err := p.setAutoSummary(); err != nil { + s.Log.ERROR.Printf("Failed to set user auto summary for page %q: %s", p.pathOrTitle(), err) + } } } else { diff --git a/hugolib/site.go b/hugolib/site.go index 7aec4d4d3..ec3e1a4bd 100644 --- a/hugolib/site.go +++ b/hugolib/site.go @@ -637,7 +637,7 @@ type whatChanged struct { func (s *Site) RegisterMediaTypes() { for _, mt := range s.mediaTypesConfig { // The last one will win if there are any duplicates. - mime.AddExtensionType("."+mt.Suffix, mt.Type()+"; charset=utf-8") + _ = mime.AddExtensionType("."+mt.Suffix, mt.Type()+"; charset=utf-8") } } @@ -709,7 +709,9 @@ func (s *Site) reProcess(events []fsnotify.Event) (whatChanged, error) { } if len(dataChanged) > 0 { - s.readDataFromSourceFS() + if err := s.readDataFromSourceFS(); err != nil { + s.Log.ERROR.Println(err) + } } // If a content file changes, we need to reload only it and re-render the entire site. @@ -1895,7 +1897,10 @@ func (s *Site) renderAndWriteXML(name string, dest string, d interface{}, layout path = []byte(s) } transformer := transform.NewChain(transform.AbsURLInXML) - transformer.Apply(outBuffer, renderBuffer, path) + if err := transformer.Apply(outBuffer, renderBuffer, path); err != nil { + helpers.DistinctErrorLog.Println(err) + return nil + } return s.publish(dest, outBuffer) @@ -1943,7 +1948,10 @@ func (s *Site) renderAndWritePage(name string, dest string, p *PageOutput, layou } transformer := transform.NewChain(transformLinks...) - transformer.Apply(outBuffer, renderBuffer, path) + if err := transformer.Apply(outBuffer, renderBuffer, path); err != nil { + helpers.DistinctErrorLog.Println(err) + return nil + } return s.publish(dest, outBuffer) } diff --git a/hugolib/site_render.go b/hugolib/site_render.go index de8b28723..6f0cf3b99 100644 --- a/hugolib/site_render.go +++ b/hugolib/site_render.go @@ -147,7 +147,9 @@ func (s *Site) renderPaginator(p *PageOutput) error { // TODO(bep) output do better link := newOutputFormat(p.Page, p.outputFormat).Permalink() - s.writeDestAlias(target, link, nil) + if err := s.writeDestAlias(target, link, nil); err != nil { + return err + } pagers := p.paginator.Pagers() diff --git a/transform/hugogeneratorinject.go b/transform/hugogeneratorinject.go index a73227de7..4c37a058d 100644 --- a/transform/hugogeneratorinject.go +++ b/transform/hugogeneratorinject.go @@ -27,7 +27,9 @@ var hugoGeneratorTag = fmt.Sprintf(`` // HugoGeneratorInject injects a meta generator tag for Hugo if none present. func HugoGeneratorInject(ct contentTransformer) { if metaTagsCheck.Match(ct.Content()) { - ct.Write(ct.Content()) + if _, err := ct.Write(ct.Content()); err != nil { + helpers.DistinctWarnLog.Println("Failed to inject Hugo generator tag:", err) + } return } @@ -41,5 +43,8 @@ func HugoGeneratorInject(ct contentTransformer) { newcontent = bytes.Replace(ct.Content(), []byte(head), replace, 1) } - ct.Write(newcontent) + if _, err := ct.Write(newcontent); err != nil { + helpers.DistinctWarnLog.Println("Failed to inject Hugo generator tag:", err) + } + }