123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- // Copyright 2020 The Gogs 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 conf
- import (
- "os"
- "os/exec"
- "path/filepath"
- "runtime"
- "strings"
- "sync"
- )
- // ℹ️ README: This file contains configuration values that require computation to be useful.
- // IsWindowsRuntime returns true if the current runtime in Windows.
- func IsWindowsRuntime() bool {
- return runtime.GOOS == "windows"
- }
- // IsProdMode returns true if the application is running in production mode.
- func IsProdMode() bool {
- return strings.EqualFold(App.RunMode, "prod")
- }
- var (
- appPath string
- appPathOnce sync.Once
- )
- // AppPath returns the absolute path of the application's binary.
- func AppPath() string {
- appPathOnce.Do(func() {
- var err error
- appPath, err = exec.LookPath(os.Args[0])
- if err != nil {
- panic("look executable path: " + err.Error())
- }
- appPath, err = filepath.Abs(appPath)
- if err != nil {
- panic("get absolute executable path: " + err.Error())
- }
- })
- return appPath
- }
- var (
- workDir string
- workDirOnce sync.Once
- )
- // WorkDir returns the absolute path of work directory. It reads the value of envrionment
- // variable GOGS_WORK_DIR. When not set, it uses the directory where the application's
- // binary is located.
- func WorkDir() string {
- workDirOnce.Do(func() {
- workDir = os.Getenv("GOGS_WORK_DIR")
- if workDir != "" {
- return
- }
- workDir = filepath.Dir(AppPath())
- })
- return workDir
- }
- var (
- customDir string
- customDirOnce sync.Once
- )
- // CustomDir returns the absolute path of the custom directory that contains local overrides.
- // It reads the value of envrionment variable GOGS_CUSTOM. When not set, it uses the work
- // directory returned by WorkDir fucntion.
- func CustomDir() string {
- customDirOnce.Do(func() {
- customDir = os.Getenv("GOGS_CUSTOM")
- if customDir != "" {
- return
- }
- customDir = filepath.Join(WorkDir(), "custom")
- })
- return customDir
- }
- var (
- homeDir string
- homeDirOnce sync.Once
- )
- // HomeDir returns the home directory by reading environment variables. It may return empty
- // string when environment variables are not set.
- func HomeDir() string {
- homeDirOnce.Do(func() {
- if !IsWindowsRuntime() {
- homeDir = os.Getenv("HOME")
- return
- }
- homeDir = os.Getenv("USERPROFILE")
- if homeDir != "" {
- return
- }
- homeDir = os.Getenv("HOMEDRIVE") + os.Getenv("HOMEPATH")
- })
- return homeDir
- }
|