Add "inspect" command to CLI

This commit is contained in:
Deluan
2023-12-27 12:41:08 -05:00
parent ea7ba22699
commit 798b03eabd
6 changed files with 154 additions and 37 deletions
+16 -6
View File
@@ -58,25 +58,35 @@ func Extract(files ...string) (map[string]Tags, error) {
func NewTag(filePath string, fileInfo os.FileInfo, tags ParsedTags) Tags {
for t, values := range tags {
tags[t] = removeDuplicates(values)
values = removeDuplicatesAndEmpty(values)
if len(values) == 0 {
delete(tags, t)
continue
}
tags[t] = values
}
return Tags{
filePath: filePath,
fileInfo: fileInfo,
tags: tags,
Tags: tags,
}
}
func removeDuplicates(values []string) []string {
func removeDuplicatesAndEmpty(values []string) []string {
encountered := map[string]struct{}{}
empty := true
var result []string
for _, v := range values {
if _, ok := encountered[v]; ok {
continue
}
encountered[v] = struct{}{}
empty = empty && v == ""
result = append(result, v)
}
if empty {
return nil
}
return result
}
@@ -100,7 +110,7 @@ func (p ParsedTags) Map(customMappings ParsedTags) ParsedTags {
type Tags struct {
filePath string
fileInfo os.FileInfo
tags ParsedTags
Tags ParsedTags
}
// Common tags
@@ -207,7 +217,7 @@ func (t Tags) getPeakValue(tagName string) float64 {
func (t Tags) getTags(tagNames ...string) []string {
for _, tag := range tagNames {
if v, ok := t.tags[tag]; ok {
if v, ok := t.Tags[tag]; ok {
return v
}
}
@@ -225,7 +235,7 @@ func (t Tags) getFirstTagValue(tagNames ...string) string {
func (t Tags) getAllTagValues(tagNames ...string) []string {
var values []string
for _, tag := range tagNames {
if v, ok := t.tags[tag]; ok {
if v, ok := t.Tags[tag]; ok {
values = append(values, v...)
}
}