blob: f0ba6a46adad772fe99687784c217b30a8c65b50 [file] [log] [blame]
Giorgi Lekveishvili081f18f2023-11-07 14:58:10 +04001package installer
2
3import (
4 "crypto/rand"
5)
6
7type NameGenerator interface {
8 Generate() (string, error)
9}
10
11type fixedLengthRandomNameGenerator struct {
12 len int
13}
14
15func NewFixedLengthRandomNameGenerator(len int) NameGenerator {
16 return &fixedLengthRandomNameGenerator{len}
17}
18
19func (g *fixedLengthRandomNameGenerator) Generate() (string, error) {
20 r := make([]byte, g.len)
21 if _, err := rand.Read(r); err != nil {
22 return "", err
23 }
24 ret := make([]rune, g.len)
25 for i, v := range r {
26 ret[i] += letters[v%26]
27 }
28 return string(ret), nil
29}