-
Notifications
You must be signed in to change notification settings - Fork 198
/
import.go
51 lines (43 loc) · 2.11 KB
/
import.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package config
import (
"fmt"
)
type Import struct {
*ArtifactExport
ImageName string
ArtifactName string
Before string
After string
Stage string
raw *rawImport
}
func (c *Import) GetRaw() interface{} {
return c.raw
}
func (c *Import) validate() error {
if err := c.ArtifactExport.validate(); err != nil {
return err
}
if c.ArtifactName == "" && c.ImageName == "" {
return newDetailedConfigError("artifact name `artifact: NAME` or image name `image: NAME` required for import!", c.raw, c.raw.rawStapelImage.doc)
} else if c.ArtifactName != "" && c.ImageName != "" {
return newDetailedConfigError("specify only one artifact name using `artifact: NAME` or image name using `image: NAME` for import!", c.raw, c.raw.rawStapelImage.doc)
} else if c.Before != "" && c.After != "" {
return newDetailedConfigError("specify only one artifact stage using `before: install|setup` or `after: install|setup` for import!", c.raw, c.raw.rawStapelImage.doc)
} else if c.Before == "" && c.After == "" {
return newDetailedConfigError("artifact stage is not specified with `before: install|setup` or `after: install|setup` for import!", c.raw, c.raw.rawStapelImage.doc)
} else if c.Before != "" && checkInvalidRelation(c.Before) {
return newDetailedConfigError(fmt.Sprintf("invalid artifact stage `before: %s` for import: expected install or setup!", c.Before), c.raw, c.raw.rawStapelImage.doc)
} else if c.After != "" && checkInvalidRelation(c.After) {
return newDetailedConfigError(fmt.Sprintf("invalid artifact stage `after: %s` for import: expected install or setup!", c.After), c.raw, c.raw.rawStapelImage.doc)
} else if c.Stage != "" && checkInvalidStage(c.Stage) {
return newDetailedConfigError(fmt.Sprintf("invalid stage `stage: %s` for import: expected beforeInstall, install, beforeSetup or setup", c.Stage), c.raw, c.raw.rawStapelImage.doc)
}
return nil
}
func checkInvalidRelation(rel string) bool {
return !(rel == "install" || rel == "setup")
}
func checkInvalidStage(stage string) bool {
return !(stage == "beforeInstall" || stage == "install" || stage == "beforeSetup" || stage == "setup")
}