github.com/jpreese/tflint@v0.19.2-0.20200908152133-b01686250fb6/cmd/version.go (about)

     1  package cmd
     2  
     3  import (
     4  	"fmt"
     5  	"log"
     6  
     7  	tfplugin "github.com/terraform-linters/tflint/plugin"
     8  	"github.com/terraform-linters/tflint/tflint"
     9  )
    10  
    11  func (cli *CLI) printVersion(opts Options) int {
    12  	fmt.Fprintf(cli.outStream, "TFLint version %s\n", tflint.Version)
    13  
    14  	cfg, err := tflint.LoadConfig(opts.Config)
    15  	if err != nil {
    16  		log.Printf("[ERROR] Failed to load TFLint config: %s", err)
    17  		return ExitCodeOK
    18  	}
    19  	cfg = cfg.Merge(opts.toConfig())
    20  
    21  	plugin, err := tfplugin.Discovery(cfg)
    22  	if err != nil {
    23  		log.Printf("[ERROR] Failed to initialize plugins: %s", err)
    24  		return ExitCodeOK
    25  	}
    26  	defer plugin.Clean()
    27  
    28  	for _, ruleset := range plugin.RuleSets {
    29  		name, err := ruleset.RuleSetName()
    30  		if err != nil {
    31  			log.Printf("[ERROR] Failed to get ruleset name: %s", err)
    32  			continue
    33  		}
    34  		version, err := ruleset.RuleSetVersion()
    35  		if err != nil {
    36  			log.Printf("[ERROR] Failed to get ruleset version: %s", err)
    37  			continue
    38  		}
    39  
    40  		fmt.Fprintf(cli.outStream, "+ ruleset.%s (%s)\n", name, version)
    41  	}
    42  
    43  	return ExitCodeOK
    44  }