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  }