func listValuesForTag(store *storage.Storage, tx *storage.Tx, tagName string, showCount, onePerLine bool) error { tag, err := store.TagByName(tx, tagName) if err != nil { return fmt.Errorf("could not retrieve tag '%v': %v", tagName, err) } if tag == nil { return fmt.Errorf("no such tag, '%v'", tagName) } log.Infof(2, "retrieving values for tag '%v'.", tagName) values, err := store.ValuesByTag(tx, tag.Id) if err != nil { return fmt.Errorf("could not retrieve values for tag '%v': %v", tagName, err) } if showCount { fmt.Println(len(values)) } else { if onePerLine { for _, value := range values { fmt.Println(escape(value.Name, '=', ' ')) } } else { valueNames := make([]string, len(values)) for index, value := range values { valueNames[index] = escape(value.Name, '=', ' ') } terminal.PrintColumns(valueNames) } } return nil }
func listValuesForTags(store *storage.Storage, tx *storage.Tx, tagNames []string, showCount, onePerLine bool) (error, warnings) { warnings := make(warnings, 0, 10) for _, tagName := range tagNames { tag, err := store.TagByName(tx, tagName) if err != nil { return fmt.Errorf("could not retrieve tag '%v': %v", tagName, err), warnings } if tag == nil { warnings = append(warnings, fmt.Sprintf("no such tag, '%v'.", tagName)) continue } log.Infof(2, "retrieving values for tag '%v'.", tagName) values, err := store.ValuesByTag(tx, tag.Id) if err != nil { return fmt.Errorf("could not retrieve values for tag '%v': %v", tagName, err), warnings } if showCount { fmt.Printf("%v: %v\n", tagName, len(values)) } else { if onePerLine { fmt.Println(tagName) for _, value := range values { fmt.Println(escape(value.Name, '=', ' ')) } fmt.Println() } else { valueNames := make([]string, len(values)) for index, value := range values { valueNames[index] = escape(value.Name, '=', ' ') } fmt.Printf("%v: %v\n", tagName, strings.Join(valueNames, " ")) } } } return nil, warnings }