apg-go/config.go
Winni Neessen ac97b94ec9
Refactor generator and add config options
Refactored the generator to include a new config option, changed function signatures to follow the new structure, and renamed the function 'RandomString' to 'RandomStringFromCharRange' for clarity. Also, added a new mode and algorithm feature to enhance password generation. Furthermore, added several tests for new features and configurations. Adapted the CLI to use the new configuration approach. This refactoring was necessary to improve the customizability and clarity of the password generation process. Fixed minor issues and added '.gitignore' for clean commits in the future.
2023-08-04 16:02:58 +02:00

67 lines
1.7 KiB
Go

package apg
// List of default values for Config instances
const (
// DefaultMinLength reflects the default minimum length of a generated password
DefaultMinLength int64 = 12
// DefaultMaxLength reflects the default maximum length of a generated password
DefaultMaxLength int64 = 20
// DefaultNumberPass reflects the default amount of passwords returned by the generator
DefaultNumberPass int64 = 6
)
// Config represents the apg.Generator config parameters
type Config struct {
// Algo
Algorithm Algorithm
// MaxLength sets the maximum length for a generated password
MaxLength int64
// MinLength sets the minimum length for a generated password
MinLength int64
// NumberPass sets the number of passwords that are generated
// and returned by the generator
NumberPass int64
}
// Option is a function that can override default Config settings
type Option func(*Config)
// NewConfig creates a new Config instance and pre-fills it with sane
// default settings. The Config is returned as pointer value
func NewConfig(o ...Option) *Config {
c := &Config{
MaxLength: DefaultMaxLength,
MinLength: DefaultMinLength,
NumberPass: DefaultNumberPass,
}
// Override defaults with optionally provided config.Option functions
for _, co := range o {
if co == nil {
continue
}
co(c)
}
return c
}
// WithMinLength overrides the minimum password length
func WithMinLength(l int64) Option {
return func(c *Config) {
c.MinLength = l
}
}
// WithMaxLength overrides the maximum password length
func WithMaxLength(l int64) Option {
return func(c *Config) {
c.MaxLength = l
}
}
// WithNumberPass overrides the number of generated passwords setting
func WithNumberPass(n int64) Option {
return func(c *Config) {
c.NumberPass = n
}
}