diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2019-03-16 11:12:44 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-16 11:12:44 +0800 |
commit | 379289639e44f8fbb1368c4f2a324f52bcb70e7f (patch) | |
tree | bbe0951debfed8f292e8abd1ce1bb6a15072a7e1 /modules/setting/repository.go | |
parent | faf446b37257c84a038004a3655e49bda1f51a0d (diff) | |
download | gitea-379289639e44f8fbb1368c4f2a324f52bcb70e7f.tar.gz gitea-379289639e44f8fbb1368c4f2a324f52bcb70e7f.zip |
split setting.go to multiple files (#6154)
* split setting.go to multiple files
* fix lint
Diffstat (limited to 'modules/setting/repository.go')
-rw-r--r-- | modules/setting/repository.go | 168 |
1 files changed, 168 insertions, 0 deletions
diff --git a/modules/setting/repository.go b/modules/setting/repository.go new file mode 100644 index 0000000000..5880071286 --- /dev/null +++ b/modules/setting/repository.go @@ -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) + } +} |