aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/OpenPeeDeeP/depguard/v2/settings.go
diff options
context:
space:
mode:
authordependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>2024-03-04 17:40:11 +0000
committerTaras Madan <tarasmadan@google.com>2024-03-04 18:34:55 +0000
commit5fc5366972c874b919f93165bb4ed4e2bcb7c350 (patch)
tree287c3361a0dee0c72af80d9a1a66714a06e98a62 /vendor/github.com/OpenPeeDeeP/depguard/v2/settings.go
parent1be5ce38a9059c356eb193a8c34d60d61c9fc31f (diff)
mod: bump github.com/golangci/golangci-lint from 1.55.2 to 1.56.2
Bumps [github.com/golangci/golangci-lint](https://github.com/golangci/golangci-lint) from 1.55.2 to 1.56.2. - [Release notes](https://github.com/golangci/golangci-lint/releases) - [Changelog](https://github.com/golangci/golangci-lint/blob/master/CHANGELOG.md) - [Commits](https://github.com/golangci/golangci-lint/compare/v1.55.2...v1.56.2) --- updated-dependencies: - dependency-name: github.com/golangci/golangci-lint dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
Diffstat (limited to 'vendor/github.com/OpenPeeDeeP/depguard/v2/settings.go')
-rw-r--r--vendor/github.com/OpenPeeDeeP/depguard/v2/settings.go53
1 files changed, 43 insertions, 10 deletions
diff --git a/vendor/github.com/OpenPeeDeeP/depguard/v2/settings.go b/vendor/github.com/OpenPeeDeeP/depguard/v2/settings.go
index 440f32985..311cacc88 100644
--- a/vendor/github.com/OpenPeeDeeP/depguard/v2/settings.go
+++ b/vendor/github.com/OpenPeeDeeP/depguard/v2/settings.go
@@ -11,12 +11,22 @@ import (
)
type List struct {
- Files []string `json:"files" yaml:"files" toml:"files" mapstructure:"files"`
- Allow []string `json:"allow" yaml:"allow" toml:"allow" mapstructure:"allow"`
- Deny map[string]string `json:"deny" yaml:"deny" toml:"deny" mapstructure:"deny"`
+ ListMode string `json:"listMode" yaml:"listMode" toml:"listMode" mapstructure:"listMode"`
+ Files []string `json:"files" yaml:"files" toml:"files" mapstructure:"files"`
+ Allow []string `json:"allow" yaml:"allow" toml:"allow" mapstructure:"allow"`
+ Deny map[string]string `json:"deny" yaml:"deny" toml:"deny" mapstructure:"deny"`
}
+type listMode int
+
+const (
+ listModeOriginal listMode = iota
+ listModeStrict
+ listModeLax
+)
+
type list struct {
+ listMode listMode
name string
files []glob.Glob
negFiles []glob.Glob
@@ -33,6 +43,20 @@ func (l *List) compile() (*list, error) {
var errs utils.MultiError
var err error
+ // Determine List Mode
+ switch strings.ToLower(l.ListMode) {
+ case "":
+ li.listMode = listModeOriginal
+ case "original":
+ li.listMode = listModeOriginal
+ case "strict":
+ li.listMode = listModeStrict
+ case "lax":
+ li.listMode = listModeLax
+ default:
+ errs = append(errs, fmt.Errorf("%s is not a known list mode", l.ListMode))
+ }
+
// Compile Files
for _, f := range l.Files {
var negate bool
@@ -113,16 +137,25 @@ func (l *list) fileMatch(fileName string) bool {
}
func (l *list) importAllowed(imp string) (bool, string) {
- inAllowed := len(l.allow) == 0
- if !inAllowed {
- inAllowed, _ = strInPrefixList(imp, l.allow)
+ inAllowed, aIdx := strInPrefixList(imp, l.allow)
+ inDenied, dIdx := strInPrefixList(imp, l.deny)
+ var allowed bool
+ switch l.listMode {
+ case listModeOriginal:
+ inAllowed = len(l.allow) == 0 || inAllowed
+ allowed = inAllowed && !inDenied
+ case listModeStrict:
+ allowed = inAllowed && (!inDenied || len(l.allow[aIdx]) > len(l.deny[dIdx]))
+ case listModeLax:
+ allowed = !inDenied || (inAllowed && len(l.allow[aIdx]) > len(l.deny[dIdx]))
+ default:
+ allowed = false
}
- inDenied, suggIdx := strInPrefixList(imp, l.deny)
sugg := ""
- if inDenied && suggIdx != -1 {
- sugg = l.suggestions[suggIdx]
+ if !allowed && inDenied && dIdx != -1 {
+ sugg = l.suggestions[dIdx]
}
- return inAllowed && !inDenied, sugg
+ return allowed, sugg
}
type LinterSettings map[string]*List