@@ -53,6 +53,26 @@ type Settings struct {
5353// Global settings override
5454var settingsRider SettingsOverride
5555
56+ // Map a function to an array of strings
57+ func MapString (vs []string , f func (string ) string ) []string {
58+ vsm := make ([]string , len (vs ))
59+ for i , v := range vs {
60+ vsm [i ] = f (v )
61+ }
62+ return vsm
63+ }
64+
65+ // Print a secret
66+ func hideSecret (secret string ) string {
67+ var stars []string
68+
69+ for i := 0 ; i < len (secret ); i ++ {
70+ stars = append (stars , "*" )
71+ }
72+
73+ return strings .Join (stars , "" )
74+ }
75+
5676// Write settings to disk
5777func writeSettings (settings * Settings , configFile string ) error {
5878
@@ -307,6 +327,8 @@ func prettifyCardNumber(cardNumber string) string {
307327 // Any 16 digits - group as 4/4/4/4
308328 var numbers []string
309329
330+ // Remove spaces in between
331+ cardNumber = strings .Join (strings .Split (cardNumber , " " ), "" )
310332 if len (cardNumber ) == 15 {
311333 numbers = append (numbers , cardNumber [0 :4 ])
312334 numbers = append (numbers , cardNumber [4 :10 ])
@@ -347,26 +369,26 @@ func printCardEntry(entry *Entry, settings *Settings, delim bool) error {
347369 }
348370
349371 fmt .Println ()
350-
351372 fmt .Printf ("Expiry Date: %s\n " , entry .ExpiryDate )
352373
374+ passwd := strings .TrimSpace (entry .Password )
375+ pin := strings .TrimSpace (entry .Pin )
353376 if settings .ShowPasswords || settingsRider .ShowPasswords {
354- fmt .Printf ("Card CVV: %s\n " , entry .Password )
355- fmt .Printf ("Card PIN: %s\n " , entry .Pin )
356- } else {
357- var asterisks1 []string
358- var asterisks2 []string
359- var i int
360377
361- for i = 0 ; i < len (entry .Password ); i ++ {
362- asterisks1 = append (asterisks1 , "*" )
378+ if len (passwd ) > 0 {
379+ fmt .Printf ("Card CVV: %s\n " , passwd )
380+ }
381+ if len (pin ) > 0 {
382+ fmt .Printf ("Card PIN: %s\n " , pin )
363383 }
364- fmt . Printf ( "Card CVV: %s \n " , strings . Join ( asterisks1 , "" ))
384+ } else {
365385
366- for i = 0 ; i < len (entry .Pin ); i ++ {
367- asterisks2 = append (asterisks2 , "*" )
386+ if len (passwd ) > 0 {
387+ fmt .Printf ("Card CVV: %s\n " , hideSecret (passwd ))
388+ }
389+ if len (pin ) > 0 {
390+ fmt .Printf ("Card PIN: %s\n " , hideSecret (passwd ))
368391 }
369- fmt .Printf ("Card PIN: %s\n " , strings .Join (asterisks2 , "" ))
370392 }
371393
372394 if len (entry .Tags ) > 0 {
@@ -377,17 +399,14 @@ func printCardEntry(entry *Entry, settings *Settings, delim bool) error {
377399 }
378400 // Query extended entries
379401 customEntries = getExtendedEntries (entry )
380-
381402 if len (customEntries ) > 0 {
382403 for _ , customEntry := range customEntries {
383404 fmt .Printf ("%s: %s\n " , customEntry .FieldName , customEntry .FieldValue )
384405 }
385406 }
386407
387408 fmt .Printf ("Modified: %s\n " , entry .Timestamp .Format ("2006-01-02 15:04:05" ))
388-
389409 printDelim (settings .Delim , settings .Color )
390-
391410 // Reset
392411 fmt .Printf ("%s" , getColor ("default" ))
393412
@@ -431,12 +450,7 @@ func printEntry(entry *Entry, delim bool) error {
431450 if settings .ShowPasswords || settingsRider .ShowPasswords {
432451 fmt .Printf ("Password: %s\n " , entry .Password )
433452 } else {
434- var asterisks []string
435-
436- for i := 0 ; i < len (entry .Password ); i ++ {
437- asterisks = append (asterisks , "*" )
438- }
439- fmt .Printf ("Password: %s\n " , strings .Join (asterisks , "" ))
453+ fmt .Printf ("Password: %s\n " , hideSecret (entry .Password ))
440454 }
441455
442456 if len (entry .Tags ) > 0 {
0 commit comments