github.com/henvic/wedeploycli@v1.7.6-0.20200319005353-3630f582f284/legal/internal/main.go (about)

     1  package main
     2  
     3  import (
     4  	"bytes"
     5  	"context"
     6  	"fmt"
     7  	"io/ioutil"
     8  	"os"
     9  	"os/exec"
    10  
    11  	"github.com/henvic/wedeploycli/legal/extra"
    12  	"github.com/henvic/wedeploycli/legal/internal/legal"
    13  )
    14  
    15  const codeFormat = `// Code generated by legal generator; DO NOT EDIT.
    16  
    17  package legal
    18  
    19  // Licenses (legal notices)
    20  var Licenses = %s
    21  `
    22  
    23  const thirdPartyFormat = "Third party licenses\n\n%s"
    24  
    25  func readExtraLicenses(buf *bytes.Buffer) error {
    26  	for n, l := range extra.Licenses {
    27  		var content, err = l.Get()
    28  
    29  		if err != nil {
    30  			return err
    31  		}
    32  
    33  		buf.Write(content)
    34  
    35  		if n < len(extra.Licenses)-1 {
    36  			buf.WriteString("\n\n")
    37  		}
    38  	}
    39  
    40  	return nil
    41  }
    42  
    43  func main() {
    44  	buf := &bytes.Buffer{}
    45  	cmd := exec.CommandContext(context.Background(), "vendorlicenses") // #nosec
    46  	cmd.Dir = ".."
    47  	cmd.Stderr = os.Stderr
    48  	cmd.Stdout = buf
    49  	if err := cmd.Run(); err != nil {
    50  		_, _ = fmt.Fprintf(os.Stderr, "%+v\n", err)
    51  		os.Exit(1)
    52  	}
    53  
    54  	buf.WriteString("\n\n")
    55  
    56  	if err := readExtraLicenses(buf); err != nil {
    57  		_, _ = fmt.Fprintf(os.Stderr, "%+v\n", err)
    58  		os.Exit(1)
    59  	}
    60  
    61  	var text = buf.String()
    62  
    63  	if err := saveCode(text); err != nil {
    64  		_, _ = fmt.Fprintf(os.Stderr, "%+v", err)
    65  		os.Exit(1)
    66  	}
    67  
    68  	if err := saveThirdPartyFile(text); err != nil {
    69  		_, _ = fmt.Fprintf(os.Stderr, "%+v", err)
    70  		os.Exit(1)
    71  	}
    72  }
    73  
    74  func saveCode(text string) error {
    75  	var code = fmt.Sprintf(codeFormat, legal.FormatLicense(text))
    76  	return ioutil.WriteFile("licenses.go", []byte(code), 0600)
    77  }
    78  
    79  func saveThirdPartyFile(text string) error {
    80  	var licenses = fmt.Sprintf(thirdPartyFormat, text)
    81  	return ioutil.WriteFile("../LICENSE-THIRD-PARTY", []byte(licenses), 0600)
    82  }