split setting.go to multiple files (#6154)
* split setting.go to multiple files * fix linttokarchuk/v1.17
parent
faf446b372
commit
379289639e
@ -0,0 +1,124 @@ |
||||
// Copyright 2019 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 setting |
||||
|
||||
import ( |
||||
"time" |
||||
|
||||
"code.gitea.io/gitea/modules/log" |
||||
) |
||||
|
||||
var ( |
||||
|
||||
// Cron tasks
|
||||
Cron = struct { |
||||
UpdateMirror struct { |
||||
Enabled bool |
||||
RunAtStart bool |
||||
Schedule string |
||||
} `ini:"cron.update_mirrors"` |
||||
RepoHealthCheck struct { |
||||
Enabled bool |
||||
RunAtStart bool |
||||
Schedule string |
||||
Timeout time.Duration |
||||
Args []string `delim:" "` |
||||
} `ini:"cron.repo_health_check"` |
||||
CheckRepoStats struct { |
||||
Enabled bool |
||||
RunAtStart bool |
||||
Schedule string |
||||
} `ini:"cron.check_repo_stats"` |
||||
ArchiveCleanup struct { |
||||
Enabled bool |
||||
RunAtStart bool |
||||
Schedule string |
||||
OlderThan time.Duration |
||||
} `ini:"cron.archive_cleanup"` |
||||
SyncExternalUsers struct { |
||||
Enabled bool |
||||
RunAtStart bool |
||||
Schedule string |
||||
UpdateExisting bool |
||||
} `ini:"cron.sync_external_users"` |
||||
DeletedBranchesCleanup struct { |
||||
Enabled bool |
||||
RunAtStart bool |
||||
Schedule string |
||||
OlderThan time.Duration |
||||
} `ini:"cron.deleted_branches_cleanup"` |
||||
}{ |
||||
UpdateMirror: struct { |
||||
Enabled bool |
||||
RunAtStart bool |
||||
Schedule string |
||||
}{ |
||||
Enabled: true, |
||||
RunAtStart: false, |
||||
Schedule: "@every 10m", |
||||
}, |
||||
RepoHealthCheck: struct { |
||||
Enabled bool |
||||
RunAtStart bool |
||||
Schedule string |
||||
Timeout time.Duration |
||||
Args []string `delim:" "` |
||||
}{ |
||||
Enabled: true, |
||||
RunAtStart: false, |
||||
Schedule: "@every 24h", |
||||
Timeout: 60 * time.Second, |
||||
Args: []string{}, |
||||
}, |
||||
CheckRepoStats: struct { |
||||
Enabled bool |
||||
RunAtStart bool |
||||
Schedule string |
||||
}{ |
||||
Enabled: true, |
||||
RunAtStart: true, |
||||
Schedule: "@every 24h", |
||||
}, |
||||
ArchiveCleanup: struct { |
||||
Enabled bool |
||||
RunAtStart bool |
||||
Schedule string |
||||
OlderThan time.Duration |
||||
}{ |
||||
Enabled: true, |
||||
RunAtStart: true, |
||||
Schedule: "@every 24h", |
||||
OlderThan: 24 * time.Hour, |
||||
}, |
||||
SyncExternalUsers: struct { |
||||
Enabled bool |
||||
RunAtStart bool |
||||
Schedule string |
||||
UpdateExisting bool |
||||
}{ |
||||
Enabled: true, |
||||
RunAtStart: false, |
||||
Schedule: "@every 24h", |
||||
UpdateExisting: true, |
||||
}, |
||||
DeletedBranchesCleanup: struct { |
||||
Enabled bool |
||||
RunAtStart bool |
||||
Schedule string |
||||
OlderThan time.Duration |
||||
}{ |
||||
Enabled: true, |
||||
RunAtStart: true, |
||||
Schedule: "@every 24h", |
||||
OlderThan: 24 * time.Hour, |
||||
}, |
||||
} |
||||
) |
||||
|
||||
func newCron() { |
||||
if err := Cfg.Section("cron").MapTo(&Cron); err != nil { |
||||
log.Fatal(4, "Failed to map Cron settings: %v", err) |
||||
} |
||||
} |
@ -0,0 +1,71 @@ |
||||
// Copyright 2019 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 setting |
||||
|
||||
import ( |
||||
"time" |
||||
|
||||
"code.gitea.io/git" |
||||
"code.gitea.io/gitea/modules/log" |
||||
version "github.com/mcuadros/go-version" |
||||
) |
||||
|
||||
var ( |
||||
// Git settings
|
||||
Git = struct { |
||||
Version string `ini:"-"` |
||||
DisableDiffHighlight bool |
||||
MaxGitDiffLines int |
||||
MaxGitDiffLineCharacters int |
||||
MaxGitDiffFiles int |
||||
GCArgs []string `delim:" "` |
||||
Timeout struct { |
||||
Default int |
||||
Migrate int |
||||
Mirror int |
||||
Clone int |
||||
Pull int |
||||
GC int `ini:"GC"` |
||||
} `ini:"git.timeout"` |
||||
}{ |
||||
DisableDiffHighlight: false, |
||||
MaxGitDiffLines: 1000, |
||||
MaxGitDiffLineCharacters: 5000, |
||||
MaxGitDiffFiles: 100, |
||||
GCArgs: []string{}, |
||||
Timeout: struct { |
||||
Default int |
||||
Migrate int |
||||
Mirror int |
||||
Clone int |
||||
Pull int |
||||
GC int `ini:"GC"` |
||||
}{ |
||||
Default: int(git.DefaultCommandExecutionTimeout / time.Second), |
||||
Migrate: 600, |
||||
Mirror: 300, |
||||
Clone: 300, |
||||
Pull: 300, |
||||
GC: 60, |
||||
}, |
||||
} |
||||
) |
||||
|
||||
func newGit() { |
||||
if err := Cfg.Section("git").MapTo(&Git); err != nil { |
||||
log.Fatal(4, "Failed to map Git settings: %v", err) |
||||
} |
||||
git.DefaultCommandExecutionTimeout = time.Duration(Git.Timeout.Default) * time.Second |
||||
|
||||
binVersion, err := git.BinVersion() |
||||
if err != nil { |
||||
log.Fatal(4, "Error retrieving git version: %v", err) |
||||
} |
||||
|
||||
if version.Compare(binVersion, "2.9", ">=") { |
||||
// Explicitly disable credential helper, otherwise Git credentials might leak
|
||||
git.GlobalCommandArgs = append(git.GlobalCommandArgs, "-c", "credential.helper=") |
||||
} |
||||
} |
@ -0,0 +1,66 @@ |
||||
// Copyright 2019 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 setting |
||||
|
||||
import ( |
||||
"regexp" |
||||
"strings" |
||||
|
||||
"code.gitea.io/gitea/modules/log" |
||||
) |
||||
|
||||
// ExternalMarkupParsers represents the external markup parsers
|
||||
var ( |
||||
ExternalMarkupParsers []MarkupParser |
||||
) |
||||
|
||||
// MarkupParser defines the external parser configured in ini
|
||||
type MarkupParser struct { |
||||
Enabled bool |
||||
MarkupName string |
||||
Command string |
||||
FileExtensions []string |
||||
IsInputFile bool |
||||
} |
||||
|
||||
func newMarkup() { |
||||
extensionReg := regexp.MustCompile(`\.\w`) |
||||
for _, sec := range Cfg.Section("markup").ChildSections() { |
||||
name := strings.TrimPrefix(sec.Name(), "markup.") |
||||
if name == "" { |
||||
log.Warn("name is empty, markup " + sec.Name() + "ignored") |
||||
continue |
||||
} |
||||
|
||||
extensions := sec.Key("FILE_EXTENSIONS").Strings(",") |
||||
var exts = make([]string, 0, len(extensions)) |
||||
for _, extension := range extensions { |
||||
if !extensionReg.MatchString(extension) { |
||||
log.Warn(sec.Name() + " file extension " + extension + " is invalid. Extension ignored") |
||||
} else { |
||||
exts = append(exts, extension) |
||||
} |
||||
} |
||||
|
||||
if len(exts) == 0 { |
||||
log.Warn(sec.Name() + " file extension is empty, markup " + name + " ignored") |
||||
continue |
||||
} |
||||
|
||||
command := sec.Key("RENDER_COMMAND").MustString("") |
||||
if command == "" { |
||||
log.Warn(" RENDER_COMMAND is empty, markup " + name + " ignored") |
||||
continue |
||||
} |
||||
|
||||
ExternalMarkupParsers = append(ExternalMarkupParsers, MarkupParser{ |
||||
Enabled: sec.Key("ENABLED").MustBool(false), |
||||
MarkupName: name, |
||||
FileExtensions: exts, |
||||
Command: command, |
||||
IsInputFile: sec.Key("IS_INPUT_FILE").MustBool(false), |
||||
}) |
||||
} |
||||
} |
@ -0,0 +1,168 @@ |
||||
// Copyright 2019 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 setting |
||||
|
||||
import ( |
||||
"path" |
||||
"path/filepath" |
||||
"strings" |
||||
|
||||
"code.gitea.io/gitea/modules/log" |
||||
"github.com/Unknwon/com" |
||||
) |
||||
|
||||
// enumerates all the policy repository creating
|
||||
const ( |
||||
RepoCreatingLastUserVisibility = "last" |
||||
RepoCreatingPrivate = "private" |
||||
RepoCreatingPublic = "public" |
||||
) |
||||
|
||||
// Repository settings
|
||||
var ( |
||||
Repository = struct { |
||||
AnsiCharset string |
||||
ForcePrivate bool |
||||
DefaultPrivate string |
||||
MaxCreationLimit int |
||||
MirrorQueueLength int |
||||
PullRequestQueueLength int |
||||
PreferredLicenses []string |
||||
DisableHTTPGit bool |
||||
AccessControlAllowOrigin string |
||||
UseCompatSSHURI bool |
||||
DefaultCloseIssuesViaCommitsInAnyBranch bool |
||||
|
||||
// Repository editor settings
|
||||
Editor struct { |
||||
LineWrapExtensions []string |
||||
PreviewableFileModes []string |
||||
} `ini:"-"` |
||||
|
||||
// Repository upload settings
|
||||
Upload struct { |
||||
Enabled bool |
||||
TempPath string |
||||
AllowedTypes []string `delim:"|"` |
||||
FileMaxSize int64 |
||||
MaxFiles int |
||||
} `ini:"-"` |
||||
|
||||
// Repository local settings
|
||||
Local struct { |
||||
LocalCopyPath string |
||||
LocalWikiPath string |
||||
} `ini:"-"` |
||||
|
||||
// Pull request settings
|
||||
PullRequest struct { |
||||
WorkInProgressPrefixes []string |
||||
} `ini:"repository.pull-request"` |
||||
|
||||
// Issue Setting
|
||||
Issue struct { |
||||
LockReasons []string |
||||
} `ini:"repository.issue"` |
||||
}{ |
||||
AnsiCharset: "", |
||||
ForcePrivate: false, |
||||
DefaultPrivate: RepoCreatingLastUserVisibility, |
||||
MaxCreationLimit: -1, |
||||
MirrorQueueLength: 1000, |
||||
PullRequestQueueLength: 1000, |
||||
PreferredLicenses: []string{"Apache License 2.0,MIT License"}, |
||||
DisableHTTPGit: false, |
||||
AccessControlAllowOrigin: "", |
||||
UseCompatSSHURI: false, |
||||
DefaultCloseIssuesViaCommitsInAnyBranch: false, |
||||
|
||||
// Repository editor settings
|
||||
Editor: struct { |
||||
LineWrapExtensions []string |
||||
PreviewableFileModes []string |
||||
}{ |
||||
LineWrapExtensions: strings.Split(".txt,.md,.markdown,.mdown,.mkd,", ","), |
||||
PreviewableFileModes: []string{"markdown"}, |
||||
}, |
||||
|
||||
// Repository upload settings
|
||||
Upload: struct { |
||||
Enabled bool |
||||
TempPath string |
||||
AllowedTypes []string `delim:"|"` |
||||
FileMaxSize int64 |
||||
MaxFiles int |
||||
}{ |
||||
Enabled: true, |
||||
TempPath: "data/tmp/uploads", |
||||
AllowedTypes: []string{}, |
||||
FileMaxSize: 3, |
||||
MaxFiles: 5, |
||||
}, |
||||
|
||||
// Repository local settings
|
||||
Local: struct { |
||||
LocalCopyPath string |
||||
LocalWikiPath string |
||||
}{ |
||||
LocalCopyPath: "tmp/local-repo", |
||||
LocalWikiPath: "tmp/local-wiki", |
||||
}, |
||||
|
||||
// Pull request settings
|
||||
PullRequest: struct { |
||||
WorkInProgressPrefixes []string |
||||
}{ |
||||
WorkInProgressPrefixes: []string{"WIP:", "[WIP]"}, |
||||
}, |
||||
|
||||
// Issue settings
|
||||
Issue: struct { |
||||
LockReasons []string |
||||
}{ |
||||
LockReasons: strings.Split("Too heated,Off-topic,Spam,Resolved", ","), |
||||
}, |
||||
} |
||||
RepoRootPath string |
||||
ScriptType = "bash" |
||||
) |
||||
|
||||
func newRepository() { |
||||
homeDir, err := com.HomeDir() |
||||
if err != nil { |
||||
log.Fatal(4, "Failed to get home directory: %v", err) |
||||
} |
||||
homeDir = strings.Replace(homeDir, "\\", "/", -1) |
||||
|
||||
// Determine and create root git repository path.
|
||||
sec := Cfg.Section("repository") |
||||
Repository.DisableHTTPGit = sec.Key("DISABLE_HTTP_GIT").MustBool() |
||||
Repository.UseCompatSSHURI = sec.Key("USE_COMPAT_SSH_URI").MustBool() |
||||
Repository.MaxCreationLimit = sec.Key("MAX_CREATION_LIMIT").MustInt(-1) |
||||
RepoRootPath = sec.Key("ROOT").MustString(path.Join(homeDir, "gitea-repositories")) |
||||
forcePathSeparator(RepoRootPath) |
||||
if !filepath.IsAbs(RepoRootPath) { |
||||
RepoRootPath = filepath.Join(AppWorkPath, RepoRootPath) |
||||
} else { |
||||
RepoRootPath = filepath.Clean(RepoRootPath) |
||||
} |
||||
ScriptType = sec.Key("SCRIPT_TYPE").MustString("bash") |
||||
|
||||
if err = Cfg.Section("repository").MapTo(&Repository); err != nil { |
||||
log.Fatal(4, "Failed to map Repository settings: %v", err) |
||||
} else if err = Cfg.Section("repository.editor").MapTo(&Repository.Editor); err != nil { |
||||
log.Fatal(4, "Failed to map Repository.Editor settings: %v", err) |
||||
} else if err = Cfg.Section("repository.upload").MapTo(&Repository.Upload); err != nil { |
||||
log.Fatal(4, "Failed to map Repository.Upload settings: %v", err) |
||||
} else if err = Cfg.Section("repository.local").MapTo(&Repository.Local); err != nil { |
||||
log.Fatal(4, "Failed to map Repository.Local settings: %v", err) |
||||
} else if err = Cfg.Section("repository.pull-request").MapTo(&Repository.PullRequest); err != nil { |
||||
log.Fatal(4, "Failed to map Repository.PullRequest settings: %v", err) |
||||
} |
||||
|
||||
if !filepath.IsAbs(Repository.Upload.TempPath) { |
||||
Repository.Upload.TempPath = path.Join(AppWorkPath, Repository.Upload.TempPath) |
||||
} |
||||
} |
Loading…
Reference in new issue