
- github.com/creachadair/otp to v0.4.0 - golang.org/x/crypto to v0.1.0 - Update go mod vendor - Update gofmt (changes from 1.19) - Update CI configuration. - Fix CI status badge. No functional changes.
57 lines
1.2 KiB
Go
57 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"os/user"
|
|
"path/filepath"
|
|
"strings"
|
|
"syscall"
|
|
"text/tabwriter"
|
|
|
|
"github.com/pcarrier/gauth/gauth"
|
|
"golang.org/x/term"
|
|
)
|
|
|
|
func main() {
|
|
cfgPath := os.Getenv("GAUTH_CONFIG")
|
|
if cfgPath == "" {
|
|
user, err := user.Current()
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
cfgPath = filepath.Join(user.HomeDir, ".config", "gauth.csv")
|
|
}
|
|
|
|
cfgContent, err := gauth.LoadConfigFile(cfgPath, getPassword)
|
|
if err != nil {
|
|
log.Fatalf("Loading config: %v", err)
|
|
}
|
|
|
|
urls, err := gauth.ParseConfig(cfgContent)
|
|
if err != nil {
|
|
log.Fatalf("Decoding configuration file: %v", err)
|
|
}
|
|
|
|
_, progress := gauth.IndexNow() // TODO: do this per-code
|
|
|
|
tw := tabwriter.NewWriter(os.Stdout, 0, 8, 1, ' ', 0)
|
|
fmt.Fprintln(tw, "\tprev\tcurr\tnext")
|
|
for _, url := range urls {
|
|
prev, curr, next, err := gauth.Codes(url)
|
|
if err != nil {
|
|
log.Fatalf("Generating codes for %q: %v", url.Account, err)
|
|
}
|
|
fmt.Fprintf(tw, "%s\t%s\t%s\t%s\n", url.Account, prev, curr, next)
|
|
}
|
|
tw.Flush()
|
|
fmt.Printf("[%-29s]\n", strings.Repeat("=", progress))
|
|
}
|
|
|
|
func getPassword() ([]byte, error) {
|
|
fmt.Printf("Encryption password: ")
|
|
defer fmt.Println()
|
|
return term.ReadPassword(int(syscall.Stdin))
|
|
}
|