@ -12,7 +12,6 @@ import (
"path"
"path/filepath"
"runtime"
"strconv"
"strings"
"time"
@ -42,15 +41,13 @@ var (
AppWorkPath string
// Global setting objects
CfgProvider ConfigProvider
CustomPath string // Custom directory path
CustomConf string
PIDFile = "/run/gitea.pid"
WritePIDFile bool
RunMode string
RunUser string
IsProd bool
IsWindows bool
CfgProvider ConfigProvider
CustomPath string // Custom directory path
CustomConf string
RunMode string
RunUser string
IsProd bool
IsWindows bool
)
func getAppPath ( ) ( string , error ) {
@ -141,22 +138,6 @@ func IsRunUserMatchCurrentUser(runUser string) (string, bool) {
return currentUser , runUser == currentUser
}
func createPIDFile ( pidPath string ) {
currentPid := os . Getpid ( )
if err := os . MkdirAll ( filepath . Dir ( pidPath ) , os . ModePerm ) ; err != nil {
log . Fatal ( "Failed to create PID folder: %v" , err )
}
file , err := os . Create ( pidPath )
if err != nil {
log . Fatal ( "Failed to create PID file: %v" , err )
}
defer file . Close ( )
if _ , err := file . WriteString ( strconv . FormatInt ( int64 ( currentPid ) , 10 ) ) ; err != nil {
log . Fatal ( "Failed to write PID information: %v" , err )
}
}
// SetCustomPathAndConf will set CustomPath and CustomConf with reference to the
// GITEA_CUSTOM environment variable and with provided overrides before stepping
// back to the default
@ -218,17 +199,17 @@ func PrepareAppDataPath() error {
// InitProviderFromExistingFile initializes config provider from an existing config file (app.ini)
func InitProviderFromExistingFile ( ) {
CfgProvider = newFileProviderFromConf ( CustomConf , WritePIDFile , false , PIDFil e , "" )
CfgProvider = newFileProviderFromConf ( CustomConf , false , "" )
}
// InitProviderAllowEmpty initializes config provider from file, it's also fine that if the config file (app.ini) doesn't exist
func InitProviderAllowEmpty ( ) {
CfgProvider = newFileProviderFromConf ( CustomConf , WritePIDFile , true , PIDFil e , "" )
CfgProvider = newFileProviderFromConf ( CustomConf , true , "" )
}
// InitProviderAndLoadCommonSettingsForTest initializes config provider and load common setttings for tests
func InitProviderAndLoadCommonSettingsForTest ( extraConfigs ... string ) {
CfgProvider = newFileProviderFromConf ( CustomConf , WritePIDFile , true , PIDFil e , strings . Join ( extraConfigs , "\n" ) )
CfgProvider = newFileProviderFromConf ( CustomConf , true , strings . Join ( extraConfigs , "\n" ) )
loadCommonSettingsFrom ( CfgProvider )
if err := PrepareAppDataPath ( ) ; err != nil {
log . Fatal ( "Can not prepare APP_DATA_PATH: %v" , err )
@ -241,13 +222,9 @@ func InitProviderAndLoadCommonSettingsForTest(extraConfigs ...string) {
// newFileProviderFromConf initializes configuration context.
// NOTE: do not print any log except error.
func newFileProviderFromConf ( customConf string , writePIDFile , allowEmpty bool , pidFile , extraConfig string ) * ini . File {
func newFileProviderFromConf ( customConf string , allowEmpty bool , extraConfig string ) * ini . File {
cfg := ini . Empty ( )
if writePIDFile && len ( pidFile ) > 0 {
createPIDFile ( pidFile )
}
isFile , err := util . IsFile ( customConf )
if err != nil {
log . Error ( "Unable to check if %s is a file. Error: %v" , customConf , err )
@ -380,7 +357,7 @@ func CreateOrAppendToCustomConf(purpose string, callback func(cfg *ini.File)) {
// LoadSettings initializes the settings for normal start up
func LoadSettings ( ) {
LoadDBSetting ( )
loadDBSetting ( CfgProvider )
loadServiceFrom ( CfgProvider )
loadOAuth2ClientFrom ( CfgProvider )
InitLogs ( false )
@ -401,7 +378,7 @@ func LoadSettings() {
// LoadSettingsForInstall initializes the settings for install
func LoadSettingsForInstall ( ) {
LoadDBSetting ( )
loadDBSetting ( CfgProvider )
loadServiceFrom ( CfgProvider )
loadMailerFrom ( CfgProvider )
}