github.com/terraform-linters/tflint@v0.51.2-0.20240520175844-3750771571b6/plugin/stub-generator/main.go (about) 1 package main 2 3 import ( 4 "bytes" 5 "fmt" 6 "os" 7 "os/exec" 8 "path/filepath" 9 "runtime" 10 11 "github.com/mitchellh/go-homedir" 12 ) 13 14 func main() { 15 _, file, _, _ := runtime.Caller(0) 16 dir := filepath.Dir(file) 17 18 if err := os.Chdir(dir); err != nil { 19 panic(err) 20 } 21 22 // Package "plugin" testing 23 execCommand("go", "build", "-o", "../test-fixtures/plugins/tflint-ruleset-foo"+fileExt(), "./sources/foo/main.go") 24 execCommand("cp", "../test-fixtures/plugins/tflint-ruleset-foo"+fileExt(), "../test-fixtures/locals/.tflint.d/plugins/tflint-ruleset-foo"+fileExt()) 25 execCommand("go", "build", "-o", "../test-fixtures/plugins/github.com/terraform-linters/tflint-ruleset-bar/0.1.0/tflint-ruleset-bar"+fileExt(), "./sources/bar/main.go") 26 execCommand("cp", "../test-fixtures/plugins/github.com/terraform-linters/tflint-ruleset-bar/0.1.0/tflint-ruleset-bar"+fileExt(), "../test-fixtures/locals/.tflint.d/plugins/github.com/terraform-linters/tflint-ruleset-bar/0.1.0/tflint-ruleset-bar"+fileExt()) 27 // Without .exe in Windows 28 execCommand("cp", "../test-fixtures/plugins/tflint-ruleset-foo"+fileExt(), "../test-fixtures/plugins/tflint-ruleset-baz") 29 30 pluginDir, err := homedir.Expand("~/.tflint.d/plugins") 31 if err != nil { 32 panic(err) 33 } 34 35 // E2E testing 36 execCommand("mkdir", "-p", pluginDir) 37 execCommand("go", "build", "-o", pluginDir+"/tflint-ruleset-testing"+fileExt(), "./sources/testing/main.go") 38 execCommand("go", "build", "-o", pluginDir+"/tflint-ruleset-customrulesettesting"+fileExt(), "./sources/customrulesettesting/main.go") 39 execCommand("go", "build", "-o", pluginDir+"/tflint-ruleset-incompatiblehost"+fileExt(), "./sources/incompatiblehost/main.go") 40 execCommand("go", "build", "-o", "../../integrationtest/inspection/plugin/.tflint.d/plugins/tflint-ruleset-example"+fileExt(), "./sources/example/main.go") 41 } 42 43 func fileExt() string { 44 if runtime.GOOS == "windows" { 45 return ".exe" 46 } 47 return "" 48 } 49 50 func execCommand(command string, args ...string) { 51 cmd := exec.Command(command, args...) 52 var stderr bytes.Buffer 53 cmd.Stderr = &stderr 54 55 if err := cmd.Run(); err != nil { 56 panic(fmt.Sprintf("Failed to exec command: %s", stderr.String())) 57 } 58 }