diff options
Diffstat (limited to 'parser.go')
-rw-r--r-- | parser.go | 85 |
1 files changed, 0 insertions, 85 deletions
diff --git a/parser.go b/parser.go deleted file mode 100644 index 998df91..0000000 --- a/parser.go +++ /dev/null @@ -1,85 +0,0 @@ -package main - -import ( - "strconv" - "strings" - "time" -) - -type ( - // https://wiki.alpinelinux.org/wiki/Apk_spec - Entry struct { - Checksum string // C - Name string // P - Architecture *string // A - PackageSize int // S - InstalledSize *int // I - Description string // T - Url string // U - License string // L - Origin *string // o - Maintainer *string // m - BuildTime *time.Time // t - Commit *string // c - ProviderPriority *int // k - Dependencies []string // D - Provides []string // p - InstallIf []string // i - } -) - -func ptr[T any](v T) *T { - return &v -} - -func split(line string) (string, string) { - parts := strings.SplitN(line, ":", 2) - return parts[0], parts[1] -} - -func toInt(v string) int { - i, _ := strconv.Atoi(v) - return i -} - -func Parse(lines []string) *Entry { - entry := &Entry{} - for _, line := range lines { - r, c := split(line) - switch r { - case "C": - entry.Checksum = c - case "P": - entry.Name = c - case "A": - entry.Architecture = &c - case "S": - entry.PackageSize = toInt(c) - case "I": - entry.InstalledSize = ptr(toInt(c)) - case "T": - entry.Description = c - case "U": - entry.Url = c - case "L": - entry.License = c - case "o": - entry.Origin = &c - case "m": - entry.Maintainer = &c - case "t": - entry.BuildTime = ptr(time.Unix(int64(toInt(c)), 0)) - case "c": - entry.Commit = &c - case "k": - entry.ProviderPriority = ptr(toInt(c)) - case "D": - entry.Dependencies = strings.Split(c, " ") - case "p": - entry.Dependencies = strings.Split(c, " ") - case "i": - entry.Dependencies = strings.Split(c, " ") - } - } - return entry -} |