ソースを参照

generate sha1 for package files, fixes #913

Torkel Ödegaard 9 年 前
コミット
04a5ad529c
1 ファイル変更40 行追加0 行削除
  1. 40 0
      build.go

+ 40 - 0
build.go

@@ -5,6 +5,7 @@ package main
 import (
 import (
 	"bytes"
 	"bytes"
 	"crypto/md5"
 	"crypto/md5"
+	"crypto/sha1"
 	"encoding/json"
 	"encoding/json"
 	"flag"
 	"flag"
 	"fmt"
 	"fmt"
@@ -85,17 +86,21 @@ func main() {
 		case "package":
 		case "package":
 			grunt(gruntBuildArg("release")...)
 			grunt(gruntBuildArg("release")...)
 			createLinuxPackages()
 			createLinuxPackages()
+			sha1FilesInDist()
 
 
 		case "pkg-rpm":
 		case "pkg-rpm":
 			grunt(gruntBuildArg("release")...)
 			grunt(gruntBuildArg("release")...)
 			createRpmPackages()
 			createRpmPackages()
+			sha1FilesInDist()
 
 
 		case "pkg-deb":
 		case "pkg-deb":
 			grunt(gruntBuildArg("release")...)
 			grunt(gruntBuildArg("release")...)
 			createDebPackages()
 			createDebPackages()
+			sha1FilesInDist()
 
 
 		case "latest":
 		case "latest":
 			makeLatestDistCopies()
 			makeLatestDistCopies()
+			sha1FilesInDist()
 
 
 		case "clean":
 		case "clean":
 			clean()
 			clean()
@@ -501,3 +506,38 @@ func md5File(file string) error {
 
 
 	return out.Close()
 	return out.Close()
 }
 }
+
+func sha1FilesInDist() {
+	filepath.Walk("./dist", func(path string, f os.FileInfo, err error) error {
+		if strings.Contains(path, ".sha1") == false {
+			sha1File(path)
+		}
+		return nil
+	})
+}
+
+func sha1File(file string) error {
+	fd, err := os.Open(file)
+	if err != nil {
+		return err
+	}
+	defer fd.Close()
+
+	h := sha1.New()
+	_, err = io.Copy(h, fd)
+	if err != nil {
+		return err
+	}
+
+	out, err := os.Create(file + ".sha1")
+	if err != nil {
+		return err
+	}
+
+	_, err = fmt.Fprintf(out, "%x\n", h.Sum(nil))
+	if err != nil {
+		return err
+	}
+
+	return out.Close()
+}