code.gitea.io/gitea@v1.19.3/modules/setting/indexer.go (about) 1 // Copyright 2019 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package setting 5 6 import ( 7 "path/filepath" 8 "strings" 9 "time" 10 11 "code.gitea.io/gitea/modules/log" 12 13 "github.com/gobwas/glob" 14 ) 15 16 // Indexer settings 17 var Indexer = struct { 18 IssueType string 19 IssuePath string 20 IssueConnStr string 21 IssueIndexerName string 22 StartupTimeout time.Duration 23 24 RepoIndexerEnabled bool 25 RepoType string 26 RepoPath string 27 RepoConnStr string 28 RepoIndexerName string 29 MaxIndexerFileSize int64 30 IncludePatterns []glob.Glob 31 ExcludePatterns []glob.Glob 32 ExcludeVendored bool 33 }{ 34 IssueType: "bleve", 35 IssuePath: "indexers/issues.bleve", 36 IssueConnStr: "", 37 IssueIndexerName: "gitea_issues", 38 39 RepoIndexerEnabled: false, 40 RepoType: "bleve", 41 RepoPath: "indexers/repos.bleve", 42 RepoConnStr: "", 43 RepoIndexerName: "gitea_codes", 44 MaxIndexerFileSize: 1024 * 1024, 45 ExcludeVendored: true, 46 } 47 48 func loadIndexerFrom(rootCfg ConfigProvider) { 49 sec := rootCfg.Section("indexer") 50 Indexer.IssueType = sec.Key("ISSUE_INDEXER_TYPE").MustString("bleve") 51 Indexer.IssuePath = filepath.ToSlash(sec.Key("ISSUE_INDEXER_PATH").MustString(filepath.ToSlash(filepath.Join(AppDataPath, "indexers/issues.bleve")))) 52 if !filepath.IsAbs(Indexer.IssuePath) { 53 Indexer.IssuePath = filepath.ToSlash(filepath.Join(AppWorkPath, Indexer.IssuePath)) 54 } 55 Indexer.IssueConnStr = sec.Key("ISSUE_INDEXER_CONN_STR").MustString(Indexer.IssueConnStr) 56 Indexer.IssueIndexerName = sec.Key("ISSUE_INDEXER_NAME").MustString(Indexer.IssueIndexerName) 57 58 // The following settings are deprecated and can be overridden by settings in [queue] or [queue.issue_indexer] 59 // DEPRECATED should not be removed because users maybe upgrade from lower version to the latest version 60 // if these are removed, the warning will not be shown 61 deprecatedSetting(rootCfg, "indexer", "ISSUE_INDEXER_QUEUE_TYPE", "queue.issue_indexer", "TYPE", "v1.19.0") 62 deprecatedSetting(rootCfg, "indexer", "ISSUE_INDEXER_QUEUE_DIR", "queue.issue_indexer", "DATADIR", "v1.19.0") 63 deprecatedSetting(rootCfg, "indexer", "ISSUE_INDEXER_QUEUE_CONN_STR", "queue.issue_indexer", "CONN_STR", "v1.19.0") 64 deprecatedSetting(rootCfg, "indexer", "ISSUE_INDEXER_QUEUE_BATCH_NUMBER", "queue.issue_indexer", "BATCH_LENGTH", "v1.19.0") 65 deprecatedSetting(rootCfg, "indexer", "UPDATE_BUFFER_LEN", "queue.issue_indexer", "LENGTH", "v1.19.0") 66 67 Indexer.RepoIndexerEnabled = sec.Key("REPO_INDEXER_ENABLED").MustBool(false) 68 Indexer.RepoType = sec.Key("REPO_INDEXER_TYPE").MustString("bleve") 69 Indexer.RepoPath = filepath.ToSlash(sec.Key("REPO_INDEXER_PATH").MustString(filepath.ToSlash(filepath.Join(AppDataPath, "indexers/repos.bleve")))) 70 if !filepath.IsAbs(Indexer.RepoPath) { 71 Indexer.RepoPath = filepath.ToSlash(filepath.Join(AppWorkPath, Indexer.RepoPath)) 72 } 73 Indexer.RepoConnStr = sec.Key("REPO_INDEXER_CONN_STR").MustString("") 74 Indexer.RepoIndexerName = sec.Key("REPO_INDEXER_NAME").MustString("gitea_codes") 75 76 Indexer.IncludePatterns = IndexerGlobFromString(sec.Key("REPO_INDEXER_INCLUDE").MustString("")) 77 Indexer.ExcludePatterns = IndexerGlobFromString(sec.Key("REPO_INDEXER_EXCLUDE").MustString("")) 78 Indexer.ExcludeVendored = sec.Key("REPO_INDEXER_EXCLUDE_VENDORED").MustBool(true) 79 Indexer.MaxIndexerFileSize = sec.Key("MAX_FILE_SIZE").MustInt64(1024 * 1024) 80 Indexer.StartupTimeout = sec.Key("STARTUP_TIMEOUT").MustDuration(30 * time.Second) 81 } 82 83 // IndexerGlobFromString parses a comma separated list of patterns and returns a glob.Glob slice suited for repo indexing 84 func IndexerGlobFromString(globstr string) []glob.Glob { 85 extarr := make([]glob.Glob, 0, 10) 86 for _, expr := range strings.Split(strings.ToLower(globstr), ",") { 87 expr = strings.TrimSpace(expr) 88 if expr != "" { 89 if g, err := glob.Compile(expr, '.', '/'); err != nil { 90 log.Info("Invalid glob expression '%s' (skipped): %v", expr, err) 91 } else { 92 extarr = append(extarr, g) 93 } 94 } 95 } 96 return extarr 97 }