github.com/jpreese/tflint@v0.19.2-0.20200908152133-b01686250fb6/rules/awsrules/generator/main.go (about)

     1  package main
     2  
     3  import (
     4  	"bufio"
     5  	"fmt"
     6  	"os"
     7  	"path/filepath"
     8  	"runtime"
     9  	"strings"
    10  
    11  	utils "github.com/terraform-linters/tflint/rules/awsrules/generator-utils"
    12  )
    13  
    14  type metadata struct {
    15  	RuleName   string
    16  	RuleNameCC string
    17  }
    18  
    19  func main() {
    20  	buf := bufio.NewReader(os.Stdin)
    21  	fmt.Print("Rule name? (e.g. aws_instance_invalid_type): ")
    22  	ruleName, err := buf.ReadString('\n')
    23  	if err != nil {
    24  		panic(err)
    25  	}
    26  	ruleName = strings.Trim(ruleName, "\n")
    27  
    28  	meta := &metadata{RuleNameCC: utils.ToCamel(ruleName), RuleName: ruleName}
    29  
    30  	_, file, _, _ := runtime.Caller(0)
    31  	dir := filepath.Dir(filepath.Dir(file))
    32  
    33  	utils.GenerateFileWithLogs(fmt.Sprintf("%s/%s.go", dir, ruleName), fmt.Sprintf("%s/rule.go.tmpl", dir), meta)
    34  	utils.GenerateFileWithLogs(fmt.Sprintf("%s/%s_test.go", dir, ruleName), fmt.Sprintf("%s/rule_test.go.tmpl", dir), meta)
    35  }