Skip to content

Commit c7af31b

Browse files
committed
Get executable mod time
1 parent 69ca23c commit c7af31b

File tree

3 files changed

+39
-0
lines changed

3 files changed

+39
-0
lines changed

modules/public/static.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,10 @@ import (
1818
"time"
1919

2020
"code.gitea.io/gitea/modules/log"
21+
"code.gitea.io/gitea/modules/util"
2122
)
2223

24+
// GlobalModTime provide a gloabl mod time for embedded asset files
2325
func GlobalModTime(filename string) time.Time {
2426
t, err := util.GetExecutableModTime()
2527
if err != nil {

modules/templates/static.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ var (
2727
bodyTemplates = template.New("")
2828
)
2929

30+
// GlobalModTime provide a gloabl mod time for embedded asset files
3031
func GlobalModTime(filename string) time.Time {
3132
t, err := util.GetExecutableModTime()
3233
if err != nil {

modules/util/executable.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// Copyright 2022 The Gitea Authors. All rights reserved.
2+
// Use of this source code is governed by a MIT-style
3+
// license that can be found in the LICENSE file.
4+
5+
package util
6+
7+
import (
8+
"os"
9+
"path/filepath"
10+
"time"
11+
)
12+
13+
// GetExecutableModTime get executable file modified time of current process.
14+
func GetExecutableModTime() (time.Time, error) {
15+
exePath, err := os.Executable()
16+
if err != nil {
17+
return time.Time{}, err
18+
}
19+
20+
exePath, err = filepath.Abs(exePath)
21+
if err != nil {
22+
return time.Time{}, err
23+
}
24+
25+
exePath, err = filepath.EvalSymlinks(exePath)
26+
if err != nil {
27+
return time.Time{}, err
28+
}
29+
30+
st, err := os.Stat(exePath)
31+
if err != nil {
32+
return time.Time{}, err
33+
}
34+
35+
return st.ModTime(), nil
36+
}

0 commit comments

Comments
 (0)