Template
1
0
Fork 0
mirror of https://codeberg.org/forgejo/forgejo synced 2024-12-05 02:54:46 +01:00
forgejo/modules/timeutil/executable.go
6543 54e9ee37a7
format with gofumpt (#18184)
* gofumpt -w -l .

* gofumpt -w -l -extra .

* Add linter

* manual fix

* change make fmt
2022-01-20 18:46:10 +01:00

51 lines
1,001 B
Go

// 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()
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
}