installer: separate suffix and prefix generation.
Reuse suffix for app dir name.
diff --git a/core/installer/namespace.go b/core/installer/namespace.go
index 87cd8c4..0acc608 100644
--- a/core/installer/namespace.go
+++ b/core/installer/namespace.go
@@ -5,6 +5,43 @@
"fmt"
)
+type SuffixGenerator interface {
+ Generate() (string, error)
+}
+
+type emptySuffixGenerator struct {
+}
+
+func NewEmptySuffixGenerator() SuffixGenerator {
+ return &emptySuffixGenerator{}
+}
+
+func (g *emptySuffixGenerator) Generate() (string, error) {
+ return "", nil
+}
+
+type fixedLengthRandomSuffixGenerator struct {
+ len int
+}
+
+func NewFixedLengthRandomSuffixGenerator(len int) SuffixGenerator {
+ return &fixedLengthRandomSuffixGenerator{len}
+}
+
+var letters = []rune("abcdefghijklmnopqrstuvwxyz")
+
+func (g *fixedLengthRandomSuffixGenerator) Generate() (string, error) {
+ r := make([]byte, g.len)
+ if _, err := rand.Read(r); err != nil {
+ return "", err
+ }
+ ret := make([]rune, g.len)
+ for i, v := range r {
+ ret[i] += letters[v%26]
+ }
+ return fmt.Sprintf("-%s", string(ret)), nil
+}
+
type NamespaceGenerator interface {
Generate(name string) (string, error)
}
@@ -20,45 +57,3 @@
func (g *prefixGenerator) Generate(name string) (string, error) {
return g.prefix + name, nil
}
-
-type randomSuffixGenerator struct {
- len int
-}
-
-func NewRandomSuffixGenerator(len int) NamespaceGenerator {
- return &randomSuffixGenerator{len}
-}
-
-var letters = []rune("abcdefghijklmnopqrstuvwxyz")
-
-func (g randomSuffixGenerator) Generate(name string) (string, error) {
- r := make([]byte, g.len)
- if _, err := rand.Read(r); err != nil {
- return "", err
- }
- ret := make([]rune, g.len)
- for i, v := range r {
- ret[i] += letters[v%26]
- }
- return fmt.Sprintf("%s-%s", name, string(ret)), nil
-}
-
-type combineGenerator struct {
- ns []NamespaceGenerator
-}
-
-func NewCombine(ns ...NamespaceGenerator) NamespaceGenerator {
- return &combineGenerator{ns}
-}
-
-func (g *combineGenerator) Generate(name string) (string, error) {
- cur := name
- var err error
- for _, i := range g.ns {
- cur, err = i.Generate(cur)
- if err != nil {
- return "", err
- }
- }
- return cur, nil
-}