From 3083a4084f6b88be5c0cf349ddb8ed71913fdb0b Mon Sep 17 00:00:00 2001 From: lawl Date: Tue, 14 Jul 2020 13:36:17 +0200 Subject: [PATCH] Auto generate full license text and embed Display the licenses of all dependencies in a context menu suboption --- .gitignore | 3 ++- LICENSE | 2 +- main.go | 1 + scripts/embedlicenses.go | 44 ++++++++++++++++++++++++++++++++++++++++ ui.go | 4 ++-- 5 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 scripts/embedlicenses.go diff --git a/.gitignore b/.gitignore index d528df7..cf9dfb4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ bin/ librnnoise.go -version.go \ No newline at end of file +version.go +licenses.go \ No newline at end of file diff --git a/LICENSE b/LICENSE index f288702..72dcfcc 100644 --- a/LICENSE +++ b/LICENSE @@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: - Copyright (C) + NoiseTorch Copyright (C) 2020 lawl (github.com/lawl) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. diff --git a/main.go b/main.go index fe94eb4..2d920e7 100644 --- a/main.go +++ b/main.go @@ -17,6 +17,7 @@ import ( //go:generate go run scripts/embedlibrnnoise.go //go:generate go run scripts/embedversion.go +//go:generate go run scripts/embedlicenses.go type input struct { ID string diff --git a/scripts/embedlicenses.go b/scripts/embedlicenses.go new file mode 100644 index 0000000..6b7cced --- /dev/null +++ b/scripts/embedlicenses.go @@ -0,0 +1,44 @@ +package main + +import ( + "io/ioutil" + "os" + "path/filepath" + "strings" +) + +func main() { + cwd, err := os.Getwd() + if err != nil { + panic(err) + } + out, _ := os.Create("licenses.go") + out.Write([]byte("package main \n\nvar licenseString=`")) + out.WriteString("LICENSES\n") + out.WriteString("========\n") + defer out.Close() + filepath.Walk(cwd, func(path string, info os.FileInfo, err error) error { + if err != nil { + panic(err) + } + if strings.HasPrefix("LICENSE", info.Name()) { + rel, err := filepath.Rel(cwd, path) + if err != nil { + panic(err) + } + dir := filepath.Dir(rel) + out.WriteString("FILES: " + dir + "\n") + c, err := ioutil.ReadFile(path) + str := string(c) + str = strings.ReplaceAll(str, "`", "`"+" + \"`\" + `") // escape backticks in license text for go src + if err != nil { + panic(err) + } + out.WriteString(str) + out.WriteString("\n\n") + + } + return nil + }) + out.Write([]byte("`\n")) +} diff --git a/ui.go b/ui.go index fcf1edc..5b9aa37 100644 --- a/ui.go +++ b/ui.go @@ -45,7 +45,7 @@ func updatefn(w *nucular.Window, ui *uistate) { } w.MenubarBegin() - w.WindowStyle().Background = color.RGBA{0, 255, 0, 255} + w.Row(10).Dynamic(1) if w := w.Menu(label.TA("About", "LC"), 120, nil); w != nil { w.Row(10).Dynamic(1) @@ -203,7 +203,7 @@ func licenseScreen(w *nucular.Window, ui *uistate) { field := &ui.licenseTextArea field.Flags |= nucular.EditMultiline if len(field.Buffer) < 1 { - field.Buffer = []rune("foo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\n") + field.Buffer = []rune(licenseString) } field.Edit(w)