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 }