Files
maxwarden/entries/bitwarden_csv.go
2026-09-03 11:59:57 -04:00

51 lines
866 B
Go

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()
}