init
This commit is contained in:
54
cmd/unpack/utils.go
Normal file
54
cmd/unpack/utils.go
Normal file
@@ -0,0 +1,54 @@
|
||||
package unpack
|
||||
|
||||
import (
|
||||
"github.com/urlesistiana/v2dat/mlog"
|
||||
"github.com/urlesistiana/v2dat/v2data"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var logger = mlog.L()
|
||||
|
||||
func splitAttrs(s string) (string, map[string]struct{}) {
|
||||
tag, attrs, ok := strings.Cut(s, "@")
|
||||
if ok {
|
||||
m := make(map[string]struct{})
|
||||
for _, attr := range strings.Split(attrs, "@") {
|
||||
m[attr] = struct{}{}
|
||||
}
|
||||
return tag, m
|
||||
}
|
||||
return s, nil
|
||||
}
|
||||
|
||||
// filterAttrs filter entries that do not have any of given attrs.
|
||||
// If no attr was given, filterAttrs returns in.
|
||||
func filterAttrs(in []*v2data.Domain, attrs map[string]struct{}) []*v2data.Domain {
|
||||
if len(attrs) == 0 {
|
||||
return in
|
||||
}
|
||||
out := make([]*v2data.Domain, 0)
|
||||
for _, d := range in {
|
||||
hasAttr := false
|
||||
for _, attr := range d.Attribute {
|
||||
if _, ok := attrs[attr.Key]; ok {
|
||||
hasAttr = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !hasAttr {
|
||||
continue
|
||||
}
|
||||
out = append(out, d)
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
func fileName(f string) string {
|
||||
f = filepath.Base(f)
|
||||
if i := strings.LastIndexByte(f, '.'); i == -1 {
|
||||
return f
|
||||
} else {
|
||||
return f[:i]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user