package entries import ( "encoding/csv" "io" ) // WriteBitwardenCSV writes Bitwarden's native CSV interchange format. // CSV is intentionally offered alongside JSON because Bitwarden routes the two // formats through different importers. func WriteBitwardenCSV(w io.Writer, secrets []Secret) error { csvWriter := csv.NewWriter(w) if err := csvWriter.Write([]string{ "folder", "favorite", "type", "name", "notes", "fields", "reprompt", "login_uri", "login_username", "login_password", "login_totp", }); err != nil { return err } for _, secret := range secrets { if err := csvWriter.Write([]string{ "", "0", "login", secret.Description, secret.Notes, "", "0", secret.URL, secret.Username, secret.Password, "", }); err != nil { return err } } csvWriter.Flush() return csvWriter.Error() }