From b3eea67983ef8bdfa814b097d3cdf6a952d4ea78 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Sun, 11 Feb 2024 21:49:39 -0600 Subject: [PATCH] compute control file if it doesn't exist Signed-off-by: Jeff Carr --- Makefile | 4 +-- addRepo.go | 1 - controlBox.go | 3 -- main.go | 11 +++++++- readControlFile.go | 2 ++ stateWindow.go | 69 ++++++++++++++++++++++++++++++++++++++-------- 6 files changed, 71 insertions(+), 19 deletions(-) diff --git a/Makefile b/Makefile index 1b668fa..a62edf5 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,10 @@ .PHONY: debian run: build - ./go-deb --repo go.wit.com/apps/control-panel-dns + ./go-deb --repo go.wit.com/apps/autotypist no-gui: build - ./go-deb --no-gui --repo go.wit.com/apps/control-panel-dns + ./go-deb --no-gui --repo go.wit.com/apps/autotypist build: -cp ~/go/src/go.wit.com/toolkits/*.so resources/ diff --git a/addRepo.go b/addRepo.go index 7fd9994..78a5fac 100644 --- a/addRepo.go +++ b/addRepo.go @@ -1,4 +1,3 @@ -// This is a simple example package main import ( diff --git a/controlBox.go b/controlBox.go index fc4fc36..4d1b893 100644 --- a/controlBox.go +++ b/controlBox.go @@ -80,6 +80,3 @@ func newControl(parent *gui.Node) *controlBox { return c } - -func scanConfigFile() { -} diff --git a/main.go b/main.go index 5ebdc7b..78884ef 100644 --- a/main.go +++ b/main.go @@ -42,8 +42,17 @@ func main() { filepath := filepath.Join("/home/jcarr/go/src", args.Repo) os.Chdir(filepath) + // scan the repo cBox.addRepo(args.Repo) - cBox.readControlFile() + // look for a 'config' file in the repo + if cBox.readControlFile() == nil { + log.Warn("scan worked") + } else { + log.Warn("scan failed") + } + cBox.computeControlValues() + // verify the values for the package + if args.NoGui { if cBox.buildPackage() { log.Info("build worked") diff --git a/readControlFile.go b/readControlFile.go index 7b07430..9def952 100644 --- a/readControlFile.go +++ b/readControlFile.go @@ -2,6 +2,7 @@ package main import ( "bufio" + "errors" "os" "strings" @@ -13,6 +14,7 @@ func (c *controlBox) readControlFile() error { file, err := os.Open("control") if err != nil { log.Warn("readControlFile() could not find the file") + return errors.New("'control': file not found") } defer file.Close() diff --git a/stateWindow.go b/stateWindow.go index 9f9f166..d42de22 100644 --- a/stateWindow.go +++ b/stateWindow.go @@ -56,11 +56,10 @@ func makebasicWindow() *gadgets.BasicWindow { } func (c *controlBox) buildPackage() bool { - if c.readControlFile() == nil { - log.Warn("scan worked") - } else { - log.Warn("scan failed") - return false + // TODO: if dirty, set GO111MODULE + // also, if last tag != version + if c.status.CheckDirty() { + os.Setenv("GO111MODULE", "off") } if shell.Run([]string{"go", "build", "-v", "-x"}) { log.Warn("build worked") @@ -91,10 +90,6 @@ func (c *controlBox) buildPackage() bool { log.Warn("mkdir failed") return false } - if !shell.Mkdir("files/usr/lib/" + filename) { - log.Warn("mkdir failed") - return false - } if shell.Exists("files/DEBIAN") { if !shell.Run([]string{"rm", "-rf", "files/DEBIAN"}) { log.Warn("rm failed") @@ -117,10 +112,29 @@ func (c *controlBox) buildPackage() bool { log.Warn("strip failed") return false } - if !shell.Run([]string{"cp", "README.md", "files/usr/lib/" + filename}) { - log.Warn("cp failed") - return false + + // put the README in there (if missing, generate it?) + var readme string = "" + if shell.Exists("README.md") { + readme = "README.md" } + + if shell.Exists("README") { + readme = "README" + } + + if readme != "" { + path := filepath.Join("files/usr/lib/" + filename) + if !shell.Mkdir(path) { + log.Warn("mkdir failed") + return false + } + if !shell.Run([]string{"cp", readme, path}) { + log.Warn("cp failed") + return false + } + } + if !c.writeFiles() { log.Warn("write control file failed") return false @@ -164,3 +178,34 @@ func (c *controlBox) writeFiles() bool { return true } + +// try to guess or figure out the config file values +// if there is not a control file +func (c *controlBox) computeControlValues() bool { + if c.Package.String() == "" { + // get the package name from the repo name + path := c.pathL.String() + parts := strings.Split(path, "/") + name := parts[len(parts) - 1] + c.Package.SetText(name) + } + if c.Source.String() == "" { + c.Source.SetText(c.Package.String()) + } + if c.BuildDepends.String() == "" { + c.BuildDepends.SetText("golang") + } + if c.Recommends.String() == "" { + c.Recommends.SetText("go-gui-toolkits") + } + // TODO: get this from the git log + if c.Maintainer.String() == "" { + c.Maintainer.SetText("Jeff Carr ") + } + // TODO: get this from gitea (or gitlab or github, etc) + // or from the README.md ? + if c.Description.String() == "" { + c.Description.SetText("no control file") + } + return true +}