github.com/gotstago/buffalo@v0.9.5/grifts/shoulders.go (about)

     1  package grifts
     2  
     3  import (
     4  	"fmt"
     5  	"html/template"
     6  	"os"
     7  	"os/exec"
     8  	"path"
     9  	"sort"
    10  	"strings"
    11  
    12  	"github.com/gobuffalo/envy"
    13  	"github.com/markbates/deplist"
    14  	"github.com/markbates/grift/grift"
    15  )
    16  
    17  var _ = grift.Desc("shoulders", "Prints a listing all of the 3rd party packages used by buffalo.")
    18  var _ = grift.Add("shoulders:list", func(c *grift.Context) error {
    19  	giants, _ := deplist.List("examples")
    20  	for _, k := range []string{
    21  		"github.com/motemen/gore",
    22  		"golang.org/x/tools/cmd/goimports",
    23  	} {
    24  		giants[k] = k
    25  	}
    26  
    27  	deps := make([]string, 0, len(giants))
    28  	for k := range giants {
    29  		if !strings.Contains(k, "github.com/gobuffalo/buffalo") {
    30  			deps = append(deps, k)
    31  		}
    32  	}
    33  	sort.Strings(deps)
    34  	fmt.Println(strings.Join(deps, "\n"))
    35  	c.Set("giants", deps)
    36  	return nil
    37  })
    38  
    39  var _ = grift.Desc("shoulders", "Generates a file listing all of the 3rd party packages used by buffalo.")
    40  var _ = grift.Add("shoulders", func(c *grift.Context) error {
    41  	err := grift.Run("shoulders:list", c)
    42  	if err != nil {
    43  		return err
    44  	}
    45  	f, err := os.Create(path.Join(envy.GoPath(), "src", "github.com", "gobuffalo", "buffalo", "SHOULDERS.md"))
    46  	if err != nil {
    47  		return err
    48  	}
    49  	t, err := template.New("").Parse(shouldersTemplate)
    50  	if err != nil {
    51  		return err
    52  	}
    53  	err = t.Execute(f, c.Value("giants"))
    54  	if err != nil {
    55  		return err
    56  	}
    57  
    58  	return commitAndPushShoulders()
    59  })
    60  
    61  func commitAndPushShoulders() error {
    62  	cmd := exec.Command("git", "commit", "SHOULDERS.md", "-m", "Updated SHOULDERS.md")
    63  	cmd.Stdin = os.Stdin
    64  	cmd.Stderr = os.Stderr
    65  	cmd.Stdout = os.Stdout
    66  	err := cmd.Run()
    67  	if err != nil {
    68  		return err
    69  	}
    70  
    71  	cmd = exec.Command("git", "push", "origin")
    72  	cmd.Stdin = os.Stdin
    73  	cmd.Stderr = os.Stderr
    74  	cmd.Stdout = os.Stdout
    75  	return cmd.Run()
    76  }
    77  
    78  var shouldersTemplate = `
    79  # Buffalo Stands on the Shoulders of Giants
    80  
    81  Buffalo does not try to reinvent the wheel! Instead, it uses the already great wheels developed by the Go community and puts them altogether in the best way possible. Without these giants this project would not be possible. Please make sure to check them out and thank them for all of their hard work.
    82  
    83  Thank you to the following **GIANTS**:
    84  
    85  {{ range $v := .}}
    86  * [{{$v}}](https://{{$v}})
    87  {{ end }}
    88  `