github.com/neilgarb/delve@v1.9.2-nobreaks/_scripts/gen-travis.go (about) 1 // Generates .travis.yml configuration using pkg/goversion/compat.go 2 // Usage go run scripts/gen-travis.go > .travis.yml 3 4 package main 5 6 import ( 7 "bufio" 8 "fmt" 9 "os" 10 "text/template" 11 12 "github.com/go-delve/delve/pkg/goversion" 13 ) 14 15 type arguments struct { 16 GoVersions []goVersion 17 } 18 19 type goVersion struct { 20 Major, Minor int 21 } 22 23 var maxVersion = goVersion{Major: goversion.MaxSupportedVersionOfGoMajor, Minor: goversion.MaxSupportedVersionOfGoMinor} 24 var minVersion = goVersion{Major: goversion.MinSupportedVersionOfGoMajor, Minor: goversion.MinSupportedVersionOfGoMinor} 25 26 func (v goVersion) dec() goVersion { 27 v.Minor-- 28 if v.Minor < 0 { 29 panic("TODO: fill the maximum minor version number for v.Maxjor here") 30 } 31 return v 32 } 33 34 func (v goVersion) MaxVersion() bool { 35 return v == maxVersion 36 } 37 38 func (v goVersion) DotX() string { 39 return fmt.Sprintf("%d.%d.x", v.Major, v.Minor) 40 } 41 42 func (v goVersion) String() string { 43 return fmt.Sprintf("%d.%d", v.Major, v.Minor) 44 } 45 46 func main() { 47 var args arguments 48 49 args.GoVersions = append(args.GoVersions, maxVersion) 50 for { 51 v := args.GoVersions[len(args.GoVersions)-1].dec() 52 args.GoVersions = append(args.GoVersions, v) 53 if v == minVersion { 54 break 55 } 56 } 57 58 githubfh, err := os.Create(".github/workflows/test.yml") 59 if err != nil { 60 fmt.Fprintf(os.Stderr, "Could not create .github/test.yml: %v", err) 61 os.Exit(1) 62 } 63 out := bufio.NewWriter(githubfh) 64 err = template.Must(template.New(".github/workflows/test.yml").Parse(`name: Delve CI 65 66 on: [push, pull_request] 67 68 jobs: 69 build: 70 runs-on: ${{"{{"}}matrix.os{{"}}"}} 71 strategy: 72 matrix: 73 include: 74 - go: {{index .GoVersions 0}} 75 os: macos-latest 76 - go: {{index .GoVersions 1}} 77 os: ubuntu-latest 78 - go: {{index .GoVersions 2}} 79 os: ubuntu-latest 80 steps: 81 - uses: actions/checkout@v2 82 - uses: actions/setup-go@v1 83 with: 84 go-version: ${{"{{"}}matrix.go{{"}}"}} 85 - run: go run _scripts/make.go test 86 `)).Execute(out, args) 87 88 if err != nil { 89 fmt.Fprintf(os.Stderr, "Error executing template: %v", err) 90 os.Exit(1) 91 } 92 93 _ = out.Flush() 94 _ = githubfh.Close() 95 }