From 530781fb1775d527983944b9cb3d088cdd7577c2 Mon Sep 17 00:00:00 2001 From: Ruidy Nemausat Date: Wed, 20 Oct 2021 17:10:03 +0200 Subject: [PATCH] docs: add some --- cmd/flags.go | 8 ++++++-- cmd/new.go | 2 ++ cmd/root.go | 6 +++--- passGen/constants.go | 7 +++++-- passGen/options.go | 5 ++++- passGen/passGen.go | 5 +++++ 6 files changed, 25 insertions(+), 8 deletions(-) diff --git a/cmd/flags.go b/cmd/flags.go index 32bb03a..0a2d59c 100644 --- a/cmd/flags.go +++ b/cmd/flags.go @@ -1,4 +1,8 @@ package cmd -var Length int -var WithNumbers bool +var ( + // The Length of the generated password. + Length int + // WithNumbers is set to true if the new password must contain numbers. + WithNumbers bool +) diff --git a/cmd/new.go b/cmd/new.go index cab4471..d00d2f2 100644 --- a/cmd/new.go +++ b/cmd/new.go @@ -15,6 +15,7 @@ func init() { rootCommand.AddCommand(newPasswordCommand) } +// newPasswordCommand creates a new password. It takes into account the supplied flags. var newPasswordCommand = &cobra.Command{Use: "new", Short: "New Password", Long: "Create a secure password", @@ -24,6 +25,7 @@ var newPasswordCommand = &cobra.Command{Use: "new", display(password) }} +// display presents information to standard output. func display(str string) { red := color.New(color.FgGreen).Add(color.Bold) whiteBackground := red.Add(color.BgWhite) diff --git a/cmd/root.go b/cmd/root.go index dd81bc7..796cb6f 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -1,18 +1,18 @@ package cmd import ( + "github.com/spf13/cobra" "log" "os" - - "github.com/spf13/cobra" ) +// rootCommand initializes the command-line interface application. var rootCommand = &cobra.Command{ Use: "passGen", Short: "PassGen", Long: "Password Generator", Run: func(cmd *cobra.Command, args []string) { - log.Println("started") + display("** passGen – v0.0.1 **\nUse passGen -h for more information") }, } diff --git a/passGen/constants.go b/passGen/constants.go index 9cc1507..2757c39 100644 --- a/passGen/constants.go +++ b/passGen/constants.go @@ -1,7 +1,10 @@ package passGen const ( + // LOWERCASE characters if latin alphabet LOWERCASE string = "abcdefghijklmnopqrstuvwxyz" - UPPERCASE = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - NUMBERS = "0123456789" + //UPPERCASE characters if latin alphabet + UPPERCASE = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + // NUMBERS arabic + NUMBERS = "0123456789" ) diff --git a/passGen/options.go b/passGen/options.go index aee288d..a6f007f 100644 --- a/passGen/options.go +++ b/passGen/options.go @@ -1,10 +1,13 @@ package passGen type Options struct { - Length int + // Length of the new password + Length int + // WithNumbers is set to true if the password must contain numbers. WithNumbers bool } +// SetDefaults ensure options are usable to avoid certain bugs. func (o *Options) SetDefaults() *Options { if o.Length == 0 { o.Length = 6 diff --git a/passGen/passGen.go b/passGen/passGen.go index 5befd50..380052a 100644 --- a/passGen/passGen.go +++ b/passGen/passGen.go @@ -4,11 +4,13 @@ import ( "math/rand" ) +// PasswordGenerator handles passwords creation. type PasswordGenerator struct { characters []rune options Options } +// NewPasswordGenerator returns a valid PasswordGenerator given the specified Options. func NewPasswordGenerator(opts Options) *PasswordGenerator { pg := &PasswordGenerator{} pg.options = *opts.SetDefaults() @@ -16,10 +18,12 @@ func NewPasswordGenerator(opts Options) *PasswordGenerator { return pg } +// NewPassword returns a pseudo random string. func (p PasswordGenerator) NewPassword() string { return p.generatePassword(p.options.Length) } +// generatePassword builds the new password. func (p PasswordGenerator) generatePassword(length int) string { var res string for i := 0; i < length; i++ { @@ -28,6 +32,7 @@ func (p PasswordGenerator) generatePassword(length int) string { return res } +// shuffleCharacters randomizes the characters. func (p PasswordGenerator) shuffleCharacters(withNumbers bool) []rune { letters := []rune(UPPERCASE + LOWERCASE) if withNumbers {