summaryrefslogtreecommitdiff
path: root/readControlFile.go
diff options
context:
space:
mode:
Diffstat (limited to 'readControlFile.go')
-rw-r--r--readControlFile.go145
1 files changed, 0 insertions, 145 deletions
diff --git a/readControlFile.go b/readControlFile.go
deleted file mode 100644
index d6a4c0d..0000000
--- a/readControlFile.go
+++ /dev/null
@@ -1,145 +0,0 @@
-package main
-
-import (
- "bufio"
- "os"
- "path/filepath"
- "strings"
- "unicode"
-
- "go.wit.com/lib/protobuf/gitpb"
- "go.wit.com/log"
-)
-
-func trimNonNumericPrefix(s string) string {
- // Find the index of the first character that IS a digit.
- firstDigitIndex := strings.IndexFunc(s, unicode.IsDigit)
-
- // If no digit is found, IndexFunc returns -1.
- // In this case, the result should be an empty string.
- if firstDigitIndex == -1 {
- return ""
- }
-
- // Return the substring starting from the first digit.
- return s[firstDigitIndex:]
-}
-
-// readGitConfig reads and parses the control file
-func readControlFile(repo *gitpb.Repo) error {
- pairs := make(map[string]string)
- var key string
-
- file, err := os.Open("control")
- if err != nil {
- log.Warn("readControlFile() could not find the file")
- // return errors.New("'control': file not found")
- // if this happens, make up a fake control file
- pairs["Architecture"] = "amd64" // TODO: figure this out
- pairs["Recommends"] = ""
- pairs["Source"] = "notsure"
- if me.repo == nil {
- pairs["Description"] = "put something here"
- } else {
- pairs["Description"] = me.repo.GetGoPath()
- }
- if repo.Control == nil {
- repo.Control = make(map[string]string)
- }
- for key, value := range pairs {
- repo.Control[key] = value
- }
- if os.Getenv("GIT_AUTHOR_NAME") != "" {
- author := log.Sprintf("%s <%s>", os.Getenv("GIT_AUTHOR_NAME"), os.Getenv("GIT_AUTHOR_EMAIL"))
- repo.Control["Packager"] = author
- }
- _, fname := filepath.Split(repo.GetFullPath())
- repo.Control["Package"] = fname
- repo.Control["Version"] = trimNonNumericPrefix(repo.GetCurrentVersion())
- repo.Control["URL"] = repo.URL
- return nil
- }
- defer file.Close()
-
- pairs["Version"] = trimNonNumericPrefix(repo.GetCurrentVersion())
-
- scanner := bufio.NewScanner(file)
- for scanner.Scan() {
- line := scanner.Text()
-
- // Skip empty lines and comments
- if line == "" || strings.HasPrefix(line, "#") || strings.HasPrefix(line, ";") {
- continue
- }
-
- // if line starts with a space, it's part of the last key
- if strings.HasPrefix(line, " ") {
- pairs[key] = pairs[key] + "\n" + strings.TrimSpace(line)
- continue
- }
-
- partsNew := strings.SplitN(line, ":", 2)
- if len(partsNew) < 2 {
- log.Warn("error on line:", line)
- continue
- }
-
- key = strings.TrimSpace(partsNew[0])
- value := strings.TrimSpace(partsNew[1])
- pairs[key] = value
- }
- if repo.Control == nil {
- repo.Control = make(map[string]string)
- }
- for key, value := range pairs {
- repo.Control[key] = value
- /*
- switch key {
- case "Source":
- c.Source.SetText(value)
- case "Build-Depends":
- c.BuildDepends.SetText(value)
- case "Description":
- c.Description.SetText(value)
- case "Maintainer":
- c.Maintainer.SetText(value)
- case "Packager":
- c.Packager.SetText(value)
- case "GoPath":
- c.GoPath.SetText(value)
- case "URL":
- c.URL.SetText(value)
- case "Depends":
- c.Depends.SetText(value)
- case "Recommends":
- c.Recommends.SetText(value)
- case "Conflicts":
- c.Conflicts.SetText(value)
- case "Version":
- c.Version.SetText(value)
- case "Package":
- c.Package.SetText(value)
- // if c.Package.String() != value {
- // log.Warn("not sure what to do with Package", c.Package.String(), value)
- // }
- case "Architecture":
- // todo: add logic to find OS arch
- if c.Architecture.String() != value {
- log.Warn("attempting to set arch to", value)
- c.Architecture.SetText(value)
-
- }
- default:
- log.Warn("the 'control' file has a value I don't know about")
- log.Warn("error unknown key", key, "value:", value)
- }
- */
- }
- pairs["Architecture"] = "amd64" // TODO: figure this out
-
- if err := scanner.Err(); err != nil {
- return err
- }
-
- return nil
-}