func addNewPackagesToWorkspace()

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)
}