code: func main() {
  
  	versionStr, _ := ioutil.ReadFile(filepath.Join("..", "..", "VERSION"))
  
  	// default values
  	info := versionInfo{
  		Version: strings.TrimSpace(string(versionStr)),
  		Dirty:   true,
  		Hash:    "UNKNOWN",
  	}
  
  	if strings.TrimSpace(os.Getenv("ECS_RELEASE")) == "cleanbuild" {
  		// 'clean' release; all other releases assumed dirty
  		info.Dirty = gitDirty()
  	}
  	if os.Getenv("ECS_UNKNOWN_VERSION") == "" {
  		// When the version file is updated, the above is set
  		// Setting UNKNOWN version allows the version committed in git to never
  		// have a commit hash so that it does not churn with every commit. This
  		// env var should not be set when building, and go generate should be
  		// run before any build, such that the commithash will be set correctly.
  		info.Hash = gitHash()
  	}
  
  	outFile, err := os.Create("version.go")
  	if err != nil {
  		log.Fatalf("Unable to create output version file: %v", err)
  	}
  	t := template.Must(template.New("version").Parse(versiongoTemplate))
  
  	err = t.Execute(outFile, info)
  	if err != nil {
  		log.Fatalf("Error applying template: %v", err)
  	}
  }
docs: // version-gen is a simple program that generates the agent's version file,
  // containing information about the agent's version, commit hash, and repository
  // cleanliness.