func tagNamesForFile(store *storage.Storage, tx *storage.Tx, fileId entities.FileId, explicitOnly, colour bool) ([]string, error) { fileTags, err := store.FileTagsByFileId(tx, fileId, explicitOnly) if err != nil { return nil, fmt.Errorf("could not retrieve file-tags for file '%v': %v", fileId, err) } taggings := make([]string, len(fileTags)) for index, fileTag := range fileTags { tag, err := store.Tag(tx, fileTag.TagId) if err != nil { return nil, fmt.Errorf("could not lookup tag: %v", err) } if tag == nil { return nil, fmt.Errorf("tag '%v' does not exist", fileTag.TagId) } var tagging string if fileTag.ValueId == 0 { tagging = formatTagValueName(tag.Name, "", colour, fileTag.Implicit, fileTag.Explicit) } else { value, err := store.Value(tx, fileTag.ValueId) if err != nil { return nil, fmt.Errorf("could not lookup value: %v", err) } if value == nil { return nil, fmt.Errorf("value '%v' does not exist", fileTag.ValueId) } tagging = formatTagValueName(tag.Name, value.Name, colour, fileTag.Implicit, fileTag.Explicit) } taggings[index] = tagging } ansi.Sort(taggings) return taggings, nil }