Don't store assets modified time into generated files (#18193)

This commit is contained in:
Lunny Xiao 2022-01-07 10:33:17 +08:00 committed by GitHub
parent 21ed4fd8da
commit a1c12fb0b3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 110 additions and 22 deletions

View file

@ -7,4 +7,4 @@
package public
//go:generate go run -mod=vendor ../../build/generate-bindata.go ../../public public bindata.go
//go:generate go run -mod=vendor ../../build/generate-bindata.go ../../public public bindata.go true

View file

@ -18,8 +18,14 @@ import (
"time"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/timeutil"
)
// GlobalModTime provide a gloabl mod time for embedded asset files
func GlobalModTime(filename string) time.Time {
return timeutil.GetExecutableModTime()
}
func fileSystem(dir string) http.FileSystem {
return Assets
}

View file

@ -15,9 +15,11 @@ import (
"path/filepath"
"strings"
texttmpl "text/template"
"time"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/timeutil"
"code.gitea.io/gitea/modules/util"
)
@ -26,6 +28,11 @@ var (
bodyTemplates = template.New("")
)
// GlobalModTime provide a gloabl mod time for embedded asset files
func GlobalModTime(filename string) time.Time {
return timeutil.GetExecutableModTime()
}
// GetAsset get a special asset, only for chi
func GetAsset(name string) ([]byte, error) {
bs, err := os.ReadFile(filepath.Join(setting.CustomPath, name))

View file

@ -7,4 +7,4 @@
package templates
//go:generate go run -mod=vendor ../../build/generate-bindata.go ../../templates templates bindata.go
//go:generate go run -mod=vendor ../../build/generate-bindata.go ../../templates templates bindata.go true

View file

@ -0,0 +1,49 @@
// Copyright 2022 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.
package timeutil
import (
"os"
"path/filepath"
"sync"
"time"
"code.gitea.io/gitea/modules/log"
)
var executablModTime = time.Now()
var executablModTimeOnce sync.Once
// GetExecutableModTime get executable file modified time of current process.
func GetExecutableModTime() time.Time {
executablModTimeOnce.Do(func() {
exePath, err := os.Executable()
if err != nil {
log.Error("os.Executable: %v", err)
return
}
exePath, err = filepath.Abs(exePath)
if err != nil {
log.Error("filepath.Abs: %v", err)
return
}
exePath, err = filepath.EvalSymlinks(exePath)
if err != nil {
log.Error("filepath.EvalSymlinks: %v", err)
return
}
st, err := os.Stat(exePath)
if err != nil {
log.Error("os.Stat: %v", err)
return
}
executablModTime = st.ModTime()
})
return executablModTime
}