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}