in deb_packages/tools/update_deb_packages/src/update_deb_packages.go [574:620]
func addNewPackagesToWorkspace(workspaceContents []byte) string {
// TODO: add more rule types here if necessary
// e.g. cacerts()
allDebs := make(map[string][]string)
for _, rule_type := range []string{"container_layer", "container_image"} {
tmp := getAllLabels("debs", "//...", "%"+rule_type, workspaceContents)
for k, _ := range tmp {
if _, ok := allDebs[k]; !ok {
allDebs[k] = make([]string, 0)
}
for _, pack := range tmp[k] {
allDebs[k] = appendUniq(allDebs[k], pack)
}
}
}
for rule := range allDebs {
tags := getListField("tags", "-", rule, workspaceContents)
for _, tag := range tags {
// drop rules with the "manual_update" tag
if tag == "manual_update" {
delete(allDebs, rule)
}
}
}
for rule, debs := range allDebs {
packages := getMapField("packages", "-", rule, workspaceContents)
packagesSha256 := getMapField("packages_sha256", "-", rule, workspaceContents)
for _, deb := range debs {
packages[deb] = "placeholder"
packagesSha256[deb] = "placeholder"
}
pkgstring, err := json.Marshal(packages)
logFatalErr(err)
pkgshastring, err := json.Marshal(packagesSha256)
logFatalErr(err)
// set packages
workspaceContents = []byte(setStringField("packages", string(pkgstring), "-", rule, workspaceContents, &FORCE_PACKAGE_IDENT))
// set packages_sha256
workspaceContents = []byte(setStringField("packages_sha256", string(pkgshastring), "-", rule, workspaceContents, nil))
}
return string(workspaceContents)
}