summaryrefslogtreecommitdiff
path: root/getKeyFromPackaagePB.go
blob: bf935dfb96e946834d77e9a4ed673eb5bc651b97 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
package debian

import (
	"strings"

	"go.wit.com/lib/ENV"
	"go.wit.com/lib/cobol"
	"go.wit.com/lib/protobuf/zoopb"
	"go.wit.com/log"
)

// returns the standard .deb string from a package PB
func GetKeyFromPackagePB(p *zoopb.Package, varname string) (string, string) {
	switch varname {
	case "Package":
		return "Package", p.Package
	case "Filename":
		return "Filename", p.Filename
	case "Version":
		return "Version", p.Version
	case "Architecture":
		return "Architecture", p.Architecture
	case "Maintainer":
		return "Maintainer", p.DebInfo.Maintainer
		// return "Maintainer", p.Author
	case "Source":
		if ENV.Verbose() {
			log.Info("skipping from controlfile", varname)
			// return "Source", p.DebInfo.Source
		}
		return "Source", ""
	case "Conflicts":
		return "Conflicts", p.DebInfo.Conflicts
	case "Packager":
		return "Packager", p.DebInfo.Packager
		// return "Packager", p.Packager
	case "Depends":
		return "Depends", p.DebInfo.Depends
	case "Breaks":
		return "Breaks", p.DebInfo.Breaks
	case "Replaces":
		return "Replaces", p.DebInfo.Replaces
	case "Namespace":
		return "Namespace", p.Namespace
	case "GitHash":
		return "Last-Git-Hash", p.DebInfo.GitHash
	case "GitDate":
		if p.DebInfo.GitDate == "" {
			return "Git-Hash-Date", ""
		}
		return "Git-Hash-Date", cobol.Time(p.DebInfo.GitDate)
	case "BuildDepends":
		return "Build-Depends", p.DebInfo.BuildDepends
	case "InstalledSize":
		return "Installed-Size", p.DebInfo.InstalledSize
	case "Homepage":
		return "Homepage", p.DebInfo.Homepage
	case "PreDepends":
		return "Pre-Depends", p.DebInfo.PreDepends
	case "Suggests":
		return "Suggests", p.DebInfo.Suggests
	case "Recommends":
		return "Recommends", p.DebInfo.Recommends
	case "MultiArch":
		return "Multi-Arch", p.DebInfo.MultiArch
	case "Tag":
		return "Tag", p.DebInfo.Tag
	case "Size":
		return "Size", p.DebInfo.Size
	case "Section":
		return "Section", p.DebInfo.Section
	case "URL":
		return "URL", p.DebInfo.URL
	//case "Size":
	//	return "Size", p.DebInfo.Size
	case "BuildDate":
		if p.BuildDate == nil {
			return "Build-Date", ""
		}
		return "Build-Date", cobol.Time(p.BuildDate)
	case "DebCtime":
		if p.Ctime == nil {
			return "Deb-File-Date", ""
		}
		return "Deb-File-Date", cobol.Time(p.Ctime)
	case "SHA1":
		return "SHA1", "" // deprecated
		// return "SHA1", p.DebInfo.SHA1
	case "MD5SUM":
		return "MD5Sum", p.DebInfo.MD5SUM
	case "SHA256":
		return "SHA256", p.DebInfo.SHA256
	case "SHA512":
		return "SHA512", "" // totally rediculously overkill
	case "Description":
		// log.Info("DESC:", p.DebInfo.Description)
		var out string
		lines := strings.Split(p.DebInfo.Description, "\n")
		if len(lines) == 0 {
			return "Description", ""
		}
		out = strings.TrimSpace(lines[0]) + "\n"
		if len(lines) == 1 {
			return "Description", out
		}
		for _, line := range lines[1:] {
			out += " " + strings.TrimSpace(line) + "\n"
		}
		return "Description", out
	default:
		dieTrying(varname)
	}
	return "", ""
}

// in here because this code is new and must catch every missing varname
func dieTrying(varname string) {
	log.Info("DebInfo sent a field we didn't have. fix the code above", varname)
	log.Printf("UNHANDLED ABOVE DEBINFO VAR: varname:%s\n", varname)
	// This forces me(it could be you!) to fix this parser
	panic("fix mirrors makeDebianControlFile()")
}