func doSearch(vault *opvault.Vault, query, typeFilter, extract string, jsonFormat bool) { if typeFilter == "any" { typeFilter = "" } cat := opvault.FromTypeString(typeFilter) results := vault.All() var bufIn bytes.Buffer var bufOut bytes.Buffer tabw := tabwriter.NewWriter(&bufIn, 8, 8, 2, ' ', tabwriter.StripEscape) for _, result := range results { if result.Trashed { continue } if typeFilter != "" && result.Category != cat { continue } fmt.Fprintf(tabw, field("%s", "")+ field("%s", "2")+ field("%s", "")+ field("%s", "blue")+ field("%s", "yellow")+ "\n", result.UUID, result.UUID[:8], result.Category.String(), trunc(result.Data.Domain, 32), result.Data.Title, ) } tabw.Flush() cmd := exec.Command("fzf", "--ansi", "--with-nth=2..", "--nth=4..,3,1", "--query="+query) cmd.Env = os.Environ() cmd.Stdin = &bufIn cmd.Stdout = &bufOut cmd.Stderr = os.Stderr err := cmd.Run() assert(err) var id string fmt.Fscan(&bufOut, &id) if id != "" { doGet(vault, id, extract, jsonFormat) } }