ST-Apps/codeclimate-tflint

View on GitHub
tflint/configuration.go

Summary

Maintainability
A
2 hrs
Test Coverage
package tflint

import (
    "fmt"
    "log"
)

type TFLintRoot struct {
    Config TFLintConfiguration `json:"config,omitempty"`
}

type TFLintConfiguration struct {
    Config       string                        `json:"config,omitempty"`
    IgnoreModule []string                      `json:"ignore_module,omitempty"`
    EnableRule   []string                      `json:"enable_rule,omitempty"`
    DisableRule  []string                      `json:"disable_rule,omitempty"`
    Only         []string                      `json:"only,omitempty"`
    EnablePlugin []string                      `json:"enable_plugin,omitempty"`
    VarFile      string                        `json:"var_file,omitempty"`
    Var          []TFLintConfigurationVariable `json:"var"`
    Module       bool                          `json:"module,omitempty"`
    NoModule     bool                          `json:"no_module,omitempty"`
    Chdir        string                        `json:"chdir,omitempty"`
    Recursive    bool                          `json:"recursive,omitempty"`
    Filter       string                        `json:"filter,omitempty"`
}

type TFLintConfigurationVariable struct {
    Key   string
    Value string
}

// Generates na array of CLI arguments from the provided configuration
// We simply generate them without doing any kind of logic as args handling is demanded to TFLint itself
func ToCLIArguments(configuration TFLintConfiguration) []string {
    log.Println("[tflint/configuration.go/ToCLIArguments] Converting configuration file to CLI args...")
    args := []string{}

    if configuration.Config != "" {
        log.Printf("[tflint/configuration.go/ToCLIArguments] Setting --config=%v\n", configuration.Config)
        args = append(args, fmt.Sprintf("--config=%v", configuration.Config))
    }

    if configuration.IgnoreModule != nil {
        for _, item := range configuration.IgnoreModule {
            log.Printf("[tflint/configuration.go/ToCLIArguments] Setting --ignore-module=%v\n", item)
            args = append(args, fmt.Sprintf("--ignore-module=%v", item))
        }
    }

    if configuration.EnableRule != nil {
        for _, item := range configuration.EnableRule {
            log.Printf("[tflint/configuration.go/ToCLIArguments] Setting --enable-rule=%v\n", item)
            args = append(args, fmt.Sprintf("--enable-rule=%v", item))
        }
    }

    if configuration.DisableRule != nil {
        for _, item := range configuration.DisableRule {
            log.Printf("[tflint/configuration.go/ToCLIArguments] Setting --disable-rule=%v\n", item)
            args = append(args, fmt.Sprintf("--disable-rule=%v", item))
        }
    }

    if configuration.Only != nil {
        for _, item := range configuration.Only {
            log.Printf("[tflint/configuration.go/ToCLIArguments] Setting --only=%v\n", item)
            args = append(args, fmt.Sprintf("--only=%v", item))
        }
    }

    if configuration.EnablePlugin != nil {
        for _, item := range configuration.EnablePlugin {
            log.Printf("[tflint/configuration.go/ToCLIArguments] Setting --enable-plugin=%v\n", item)
            args = append(args, fmt.Sprintf("--enable-plugin=%v", item))
        }
    }

    if configuration.VarFile != "" {
        log.Printf("[tflint/configuration.go/ToCLIArguments] Setting --var-file=%v\n", configuration.VarFile)
        args = append(args, fmt.Sprintf("--var-file=%v", configuration.VarFile))
    }

    if configuration.Var != nil {
        for _, item := range configuration.Var {
            log.Printf("[tflint/configuration.go/ToCLIArguments] Setting --var='%v=%v'\n", item.Key, item.Value)
            args = append(args, fmt.Sprintf("--var='%v=%v'", item.Key, item.Value))
        }
    }

    if configuration.Module {
        log.Printf("[tflint/configuration.go/ToCLIArguments] Setting --module=%v\n", configuration.Module)
        args = append(args, "--module")
    }

    if configuration.NoModule {
        log.Printf("[tflint/configuration.go/ToCLIArguments] Setting --no-module=%v\n", configuration.NoModule)
        args = append(args, "--no-module")
    }

    if configuration.Chdir != "" {
        log.Printf("[tflint/configuration.go/ToCLIArguments] Setting --chdir=%v\n", configuration.Chdir)
        args = append(args, fmt.Sprintf("--chdir=%v", configuration.Chdir))
    }

    if configuration.Recursive {
        log.Printf("[tflint/configuration.go/ToCLIArguments] Setting --recursive=%v\n", configuration.Recursive)
        args = append(args, "--recursive")
    }

    if configuration.Filter != "" {
        log.Printf("[tflint/configuration.go/ToCLIArguments] Setting --filter=%v\n", configuration.Filter)
        args = append(args, fmt.Sprintf("--filter=%v", configuration.Filter))
    }

    log.Println("[tflint/configuration.go/ToCLIArguments] Finished extracting arguments from TFLint configuration")
    return args
}