Correct fix for --cleanDestinationDir flag
authorAlexander Borsuk <me@alex.bio>
Wed, 10 Jan 2018 15:55:22 +0000 (18:55 +0300)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 10 Jan 2018 17:26:42 +0000 (18:26 +0100)
Fixes #4246
Fixes #4248

commands/hugo.go

index 0e7b755f79b9bc2b9457f9971082f1a7261b97f4..51375ea8a8395512a2cf8037e93971ca97c22cab 100644 (file)
@@ -561,25 +561,36 @@ func (c *commandeer) fullBuild(watches ...bool) error {
                }()
        }
 
-       g.Go(func() error {
+       copyStaticFunc := func() error {
                cnt, err := c.copyStatic()
                if err != nil {
                        return fmt.Errorf("Error copying static files: %s", err)
                }
                langCount = cnt
                return nil
-       })
-
-       g.Go(func() error {
+       }
+       buildSitesFunc := func() error {
                if err := c.buildSites(); err != nil {
                        return fmt.Errorf("Error building site: %s", err)
                }
-
                return nil
-       })
-
-       if err := g.Wait(); err != nil {
-               return err
+       }
+       // Do not copy static files and build sites in parallel if cleanDestinationDir is enabled.
+       // This flag deletes all static resources in /public folder that are missing in /static,
+       // and it does so at the end of copyStatic() call.
+       if c.Cfg.GetBool("cleanDestinationDir") {
+               if err := copyStaticFunc(); err != nil {
+                       return err
+               }
+               if err := buildSitesFunc(); err != nil {
+                       return err
+               }
+       } else {
+               g.Go(copyStaticFunc)
+               g.Go(buildSitesFunc)
+               if err := g.Wait(); err != nil {
+                       return err
+               }
        }
 
        for _, s := range Hugo.Sites {