diff --git a/genmanifest/genmanifest.go b/genmanifest/genmanifest.go
index 958928f..2aa1477 100644
--- a/genmanifest/genmanifest.go
+++ b/genmanifest/genmanifest.go
@@ -17,9 +17,9 @@
 var endOfIfStatement = regexp.MustCompile(`^\s*#endif\s*$`)
 
 var (
-  quietMode = flag.Bool("quiet", false, "Quiet mode")
+	quietMode    = flag.Bool("quiet", false, "Quiet mode")
 	templateFile = flag.String("template", "", "Template file")
-	destFile = flag.String("dest", "", "Destination file")
+	destFile     = flag.String("dest", "", "Destination file")
 )
 
 // findWithCaseFolding returns whether there is some element of slice which is
@@ -97,25 +97,25 @@
 
 func main() {
 	log.SetPrefix("generatemanifest: ")
-  log.SetFlags(0)
+	log.SetFlags(0)
 
-  flag.Parse()
-  dependencies := flag.Args()
+	flag.Parse()
+	dependencies := flag.Args()
 
-  if len(dependencies) == 0 {
-    log.Fatalf("Pass the dependencies as arguments (for instance, run `go run generateManifest.go CHROMIUM`).")
-  }
-	if (*templateFile == "") {
+	if len(dependencies) == 0 {
+		log.Fatalf("Pass the dependencies as arguments (for instance, run `go run generateManifest.go CHROMIUM`).")
+	}
+	if *templateFile == "" {
 		log.Fatalf("Pass the template file name via the -template flag.")
 	}
-	if (*destFile == "") {
+	if *destFile == "" {
 		log.Fatalf("Pass the destination file name via the -dest flag.")
 	}
 
 	err := WriteManifestFileNames(*templateFile, *destFile, dependencies)
-  if err != nil {
-    log.Fatalf("%v", err)
-  } else if !*quietMode {
-    log.Println("Manifest has been generated successfully")
-  }
+	if err != nil {
+		log.Fatalf("%v", err)
+	} else if !*quietMode {
+		log.Println("Manifest has been generated successfully")
+	}
 }
