summaryrefslogtreecommitdiffstats
path: root/modules/timeutil
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2022-01-07 10:33:17 +0800
committerGitHub <noreply@github.com>2022-01-06 21:33:17 -0500
commita1c12fb0b3a88e21e4c8c8f29c13e63cf4bc38dd (patch)
tree7add88555600d96deecbc9f97217d183f83f3edc /modules/timeutil
parent21ed4fd8da4c8992518dcfb01aa7306f7406f735 (diff)
downloadgitea-a1c12fb0b3a88e21e4c8c8f29c13e63cf4bc38dd.tar.gz
gitea-a1c12fb0b3a88e21e4c8c8f29c13e63cf4bc38dd.zip
Don't store assets modified time into generated files (#18193)
Diffstat (limited to 'modules/timeutil')
-rw-r--r--modules/timeutil/executable.go49
1 files changed, 49 insertions, 0 deletions
diff --git a/modules/timeutil/executable.go b/modules/timeutil/executable.go
new file mode 100644
index 0000000000..b0a3280753
--- /dev/null
+++ b/modules/timeutil/executable.go
@@ -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
+}