mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	Rename scripts to build and add revive command as a new build tool command (#10942)
Co-authored-by: techknowlogick <techknowlogick@gitea.io>
This commit is contained in:
		
							
								
								
									
										86
									
								
								build/generate-bindata.go
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								build/generate-bindata.go
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,86 @@ | ||||
| // Copyright 2020 The Gitea Authors. All rights reserved. | ||||
| // Use of this source code is governed by a MIT-style | ||||
| // license that can be found in the LICENSE file. | ||||
|  | ||||
| // +build ignore | ||||
|  | ||||
| package main | ||||
|  | ||||
| import ( | ||||
| 	"bytes" | ||||
| 	"crypto/sha1" | ||||
| 	"fmt" | ||||
| 	"io/ioutil" | ||||
| 	"log" | ||||
| 	"net/http" | ||||
| 	"os" | ||||
| 	"path/filepath" | ||||
| 	"strconv" | ||||
|  | ||||
| 	"github.com/shurcooL/vfsgen" | ||||
| ) | ||||
|  | ||||
| func needsUpdate(dir string, filename string) (bool, []byte) { | ||||
| 	needRegen := false | ||||
| 	_, err := os.Stat(filename) | ||||
| 	if err != nil { | ||||
| 		needRegen = true | ||||
| 	} | ||||
|  | ||||
| 	oldHash, err := ioutil.ReadFile(filename + ".hash") | ||||
| 	if err != nil { | ||||
| 		oldHash = []byte{} | ||||
| 	} | ||||
|  | ||||
| 	hasher := sha1.New() | ||||
|  | ||||
| 	err = filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { | ||||
| 		if err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 		_, _ = hasher.Write([]byte(info.Name())) | ||||
| 		_, _ = hasher.Write([]byte(info.ModTime().String())) | ||||
| 		_, _ = hasher.Write([]byte(strconv.FormatInt(info.Size(), 16))) | ||||
| 		return nil | ||||
| 	}) | ||||
| 	if err != nil { | ||||
| 		return true, oldHash | ||||
| 	} | ||||
|  | ||||
| 	newHash := hasher.Sum([]byte{}) | ||||
|  | ||||
| 	if bytes.Compare(oldHash, newHash) != 0 { | ||||
|  | ||||
| 		return true, newHash | ||||
| 	} | ||||
|  | ||||
| 	return needRegen, newHash | ||||
| } | ||||
|  | ||||
| func main() { | ||||
| 	if len(os.Args) != 4 { | ||||
| 		log.Fatal("Insufficient number of arguments. Need: directory packageName filename") | ||||
| 	} | ||||
|  | ||||
| 	dir, packageName, filename := os.Args[1], os.Args[2], os.Args[3] | ||||
|  | ||||
| 	update, newHash := needsUpdate(dir, filename) | ||||
|  | ||||
| 	if !update { | ||||
| 		fmt.Printf("bindata for %s already up-to-date\n", packageName) | ||||
| 		return | ||||
| 	} | ||||
|  | ||||
| 	fmt.Printf("generating bindata for %s\n", packageName) | ||||
| 	var fsTemplates http.FileSystem = http.Dir(dir) | ||||
| 	err := vfsgen.Generate(fsTemplates, vfsgen.Options{ | ||||
| 		PackageName:  packageName, | ||||
| 		BuildTags:    "bindata", | ||||
| 		VariableName: "Assets", | ||||
| 		Filename:     filename, | ||||
| 	}) | ||||
| 	if err != nil { | ||||
| 		log.Fatalf("%v\n", err) | ||||
| 	} | ||||
| 	_ = ioutil.WriteFile(filename+".hash", newHash, 0666) | ||||
| } | ||||
		Reference in New Issue
	
	Block a user