Skip to content

Commit

Permalink
improve error handling of profiles
Browse files Browse the repository at this point in the history
  • Loading branch information
Larry Hitchon committed Apr 24, 2018
1 parent 8723322 commit fa57016
Showing 1 changed file with 28 additions and 15 deletions.
43 changes: 28 additions & 15 deletions cli/app.go
Expand Up @@ -49,12 +49,10 @@ func main() {
searchExpression := flag.String("search", "", "JMESPath expression to evaluation against the files")
validate := flag.Bool("validate", false, "Validate rules file")
versionFlag := flag.Bool("version", false, "Get program version")
profileFilename := flag.String("profile", "config-lint.yml", "Provide default options")
profileFilename := flag.String("profile", "", "Provide default options")

flag.Parse()

profileOptions := loadProfile(*profileFilename)

if *versionFlag == true {
fmt.Println(version)
return
Expand All @@ -69,6 +67,12 @@ func main() {
return
}

profileOptions, err := loadProfile(*profileFilename)
if err != nil {
fmt.Printf("Error loading profile: %v\n", err)
return
}

rulesFilenames = getFilenames(rulesFilenames, profileOptions.Rules)
configFilenames := getFilenames(flag.Args(), profileOptions.Files)
useTerraformBuiltInRules := *terraformBuiltInRules || profileOptions.Terraform
Expand Down Expand Up @@ -267,26 +271,35 @@ func makeQueryExpression(queryExpression string, verboseReport bool, profileOpti
return "Violations[]"
}

func loadProfile(filename string) ProjectOptions {
func loadProfile(filename string) (ProjectOptions, error) {
defaultFilename := "config-lint.yml"
var options ProjectOptions
if filename == "" {
filename = defaultFilename
}
bb, err := ioutil.ReadFile(filename)
if err != nil {
return options
if filename == defaultFilename {
return options, nil
}
return options, err
}
err = yaml.Unmarshal(bb, &options)
if err == nil {
if len(options.Files) > 0 {
patterns := options.Files
options.Files = []string{}
for _, pattern := range patterns {
matches, err := filepath.Glob(pattern)
if err == nil {
options.Files = append(options.Files, matches...)
}
if err != nil {
return options, err
}
if len(options.Files) > 0 {
patterns := options.Files
options.Files = []string{}
for _, pattern := range patterns {
matches, err := filepath.Glob(pattern)
if err != nil {
return options, err
}
options.Files = append(options.Files, matches...)
}
}
return options
return options, nil
}

func getFilenames(commandLineOptions []string, profileOptions []string) []string {
Expand Down

0 comments on commit fa57016

Please sign in to comment.