hugo

Unnamed repository; edit this file 'description' to name the repository.

git clone git://git.shimmy1996.com/hugo.git
commit 5235a5bf5ef44b3789341e1d25b681a7bb14771a
parent 1921a70ab1a8761917bea8c74afaa790719fe958
Author: Alexander Borsuk <me@alex.bio>
Date:   Wed, 10 Jan 2018 18:55:22 +0300

Correct fix for --cleanDestinationDir flag

Fixes #4246
Fixes #4248

Diffstat:
Mcommands/hugo.go | 29++++++++++++++++++++---------
1 file changed, 20 insertions(+), 9 deletions(-)
diff --git a/commands/hugo.go b/commands/hugo.go
@@ -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 {