diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2021-11-10 03:57:58 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-09 20:57:58 +0100 |
commit | 99b2858e628d92bba252be72def409af77af735b (patch) | |
tree | 56159cf10b271307911e6f01626c0c3efba789ab /models/unit.go | |
parent | b6b1e716654fec3b16d245ef65cf42e57e1bb5b6 (diff) | |
download | gitea-99b2858e628d92bba252be72def409af77af735b.tar.gz gitea-99b2858e628d92bba252be72def409af77af735b.zip |
Move unit into models/unit/ (#17576)
* Move unit into models/unit/
* Rename unit.UnitType as unit.Type
Diffstat (limited to 'models/unit.go')
-rw-r--r-- | models/unit.go | 282 |
1 files changed, 0 insertions, 282 deletions
diff --git a/models/unit.go b/models/unit.go deleted file mode 100644 index 939deba574..0000000000 --- a/models/unit.go +++ /dev/null @@ -1,282 +0,0 @@ -// Copyright 2017 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 models - -import ( - "fmt" - "strings" - - "code.gitea.io/gitea/modules/log" - "code.gitea.io/gitea/modules/setting" -) - -// UnitType is Unit's Type -type UnitType int - -// Enumerate all the unit types -const ( - UnitTypeCode UnitType = iota + 1 // 1 code - UnitTypeIssues // 2 issues - UnitTypePullRequests // 3 PRs - UnitTypeReleases // 4 Releases - UnitTypeWiki // 5 Wiki - UnitTypeExternalWiki // 6 ExternalWiki - UnitTypeExternalTracker // 7 ExternalTracker - UnitTypeProjects // 8 Kanban board -) - -// Value returns integer value for unit type -func (u UnitType) Value() int { - return int(u) -} - -func (u UnitType) String() string { - switch u { - case UnitTypeCode: - return "UnitTypeCode" - case UnitTypeIssues: - return "UnitTypeIssues" - case UnitTypePullRequests: - return "UnitTypePullRequests" - case UnitTypeReleases: - return "UnitTypeReleases" - case UnitTypeWiki: - return "UnitTypeWiki" - case UnitTypeExternalWiki: - return "UnitTypeExternalWiki" - case UnitTypeExternalTracker: - return "UnitTypeExternalTracker" - case UnitTypeProjects: - return "UnitTypeProjects" - } - return fmt.Sprintf("Unknown UnitType %d", u) -} - -// ColorFormat provides a ColorFormatted version of this UnitType -func (u UnitType) ColorFormat(s fmt.State) { - log.ColorFprintf(s, "%d:%s", - log.NewColoredIDValue(u), - u) -} - -var ( - // AllRepoUnitTypes contains all the unit types - AllRepoUnitTypes = []UnitType{ - UnitTypeCode, - UnitTypeIssues, - UnitTypePullRequests, - UnitTypeReleases, - UnitTypeWiki, - UnitTypeExternalWiki, - UnitTypeExternalTracker, - UnitTypeProjects, - } - - // DefaultRepoUnits contains the default unit types - DefaultRepoUnits = []UnitType{ - UnitTypeCode, - UnitTypeIssues, - UnitTypePullRequests, - UnitTypeReleases, - UnitTypeWiki, - UnitTypeProjects, - } - - // NotAllowedDefaultRepoUnits contains units that can't be default - NotAllowedDefaultRepoUnits = []UnitType{ - UnitTypeExternalWiki, - UnitTypeExternalTracker, - } - - // MustRepoUnits contains the units could not be disabled currently - MustRepoUnits = []UnitType{ - UnitTypeCode, - UnitTypeReleases, - } - - // DisabledRepoUnits contains the units that have been globally disabled - DisabledRepoUnits = []UnitType{} -) - -func loadUnitConfig() { - setDefaultRepoUnits := FindUnitTypes(setting.Repository.DefaultRepoUnits...) - // Default repo units set if setting is not empty - if len(setDefaultRepoUnits) > 0 { - // MustRepoUnits required as default - DefaultRepoUnits = make([]UnitType, len(MustRepoUnits)) - copy(DefaultRepoUnits, MustRepoUnits) - for _, defaultU := range setDefaultRepoUnits { - if !defaultU.CanBeDefault() { - log.Warn("Not allowed as default unit: %s", defaultU.String()) - continue - } - // MustRepoUnits already added - if defaultU.CanDisable() { - DefaultRepoUnits = append(DefaultRepoUnits, defaultU) - } - } - } - - DisabledRepoUnits = FindUnitTypes(setting.Repository.DisabledRepoUnits...) - // Check that must units are not disabled - for i, disabledU := range DisabledRepoUnits { - if !disabledU.CanDisable() { - log.Warn("Not allowed to global disable unit %s", disabledU.String()) - DisabledRepoUnits = append(DisabledRepoUnits[:i], DisabledRepoUnits[i+1:]...) - } - } - // Remove disabled units from default units - for _, disabledU := range DisabledRepoUnits { - for i, defaultU := range DefaultRepoUnits { - if defaultU == disabledU { - DefaultRepoUnits = append(DefaultRepoUnits[:i], DefaultRepoUnits[i+1:]...) - } - } - } -} - -// UnitGlobalDisabled checks if unit type is global disabled -func (u UnitType) UnitGlobalDisabled() bool { - for _, ud := range DisabledRepoUnits { - if u == ud { - return true - } - } - return false -} - -// CanDisable checks if this unit type can be disabled. -func (u *UnitType) CanDisable() bool { - for _, mu := range MustRepoUnits { - if *u == mu { - return false - } - } - return true -} - -// CanBeDefault checks if the unit type can be a default repo unit -func (u *UnitType) CanBeDefault() bool { - for _, nadU := range NotAllowedDefaultRepoUnits { - if *u == nadU { - return false - } - } - return true -} - -// Unit is a section of one repository -type Unit struct { - Type UnitType - NameKey string - URI string - DescKey string - Idx int -} - -// CanDisable returns if this unit could be disabled. -func (u *Unit) CanDisable() bool { - return u.Type.CanDisable() -} - -// IsLessThan compares order of two units -func (u Unit) IsLessThan(unit Unit) bool { - if (u.Type == UnitTypeExternalTracker || u.Type == UnitTypeExternalWiki) && unit.Type != UnitTypeExternalTracker && unit.Type != UnitTypeExternalWiki { - return false - } - return u.Idx < unit.Idx -} - -// Enumerate all the units -var ( - UnitCode = Unit{ - UnitTypeCode, - "repo.code", - "/", - "repo.code.desc", - 0, - } - - UnitIssues = Unit{ - UnitTypeIssues, - "repo.issues", - "/issues", - "repo.issues.desc", - 1, - } - - UnitExternalTracker = Unit{ - UnitTypeExternalTracker, - "repo.ext_issues", - "/issues", - "repo.ext_issues.desc", - 1, - } - - UnitPullRequests = Unit{ - UnitTypePullRequests, - "repo.pulls", - "/pulls", - "repo.pulls.desc", - 2, - } - - UnitReleases = Unit{ - UnitTypeReleases, - "repo.releases", - "/releases", - "repo.releases.desc", - 3, - } - - UnitWiki = Unit{ - UnitTypeWiki, - "repo.wiki", - "/wiki", - "repo.wiki.desc", - 4, - } - - UnitExternalWiki = Unit{ - UnitTypeExternalWiki, - "repo.ext_wiki", - "/wiki", - "repo.ext_wiki.desc", - 4, - } - - UnitProjects = Unit{ - UnitTypeProjects, - "repo.projects", - "/projects", - "repo.projects.desc", - 5, - } - - // Units contains all the units - Units = map[UnitType]Unit{ - UnitTypeCode: UnitCode, - UnitTypeIssues: UnitIssues, - UnitTypeExternalTracker: UnitExternalTracker, - UnitTypePullRequests: UnitPullRequests, - UnitTypeReleases: UnitReleases, - UnitTypeWiki: UnitWiki, - UnitTypeExternalWiki: UnitExternalWiki, - UnitTypeProjects: UnitProjects, - } -) - -// FindUnitTypes give the unit key name and return unit -func FindUnitTypes(nameKeys ...string) (res []UnitType) { - for _, key := range nameKeys { - for t, u := range Units { - if strings.EqualFold(key, u.NameKey) { - res = append(res, t) - break - } - } - } - return -} |