master
1package generate
2
3import (
4 "fmt"
5
6 "github.com/kahnwong/swissknife/internal/utils"
7 "github.com/sethvargo/go-password/password"
8)
9
10func generatePassword() (string, error) {
11 // Generate a password that is 64 characters long with 10 digits, 10 symbols,
12 // allowing upper and lower case letters, disallowing repeat characters.
13 res, err := password.Generate(32, 10, 0, false, false)
14 if err != nil {
15 return "", fmt.Errorf("failed to generate password: %w", err)
16 }
17
18 return res, nil
19}
20
21func Password() error {
22 psswd, err := generatePassword()
23 if err != nil {
24 return err
25 }
26
27 if err = utils.WriteToClipboard(psswd); err != nil {
28 return err
29 }
30
31 fmt.Printf("%s\n", psswd)
32 return nil
33}