38 lines
853 B
Go
38 lines
853 B
Go
package interactors
|
|
|
|
import (
|
|
cst "repodiff/constants"
|
|
ent "repodiff/entities"
|
|
)
|
|
|
|
func ProjectNamesToType(manifests *ent.ManifestFileGroup) TypeMap {
|
|
commonProjects := extractProjectNames(manifests.Common)
|
|
distinctProjects := SetSubtract(
|
|
SetUnion(
|
|
extractProjectNames(manifests.Downstream),
|
|
extractProjectNames(manifests.Upstream),
|
|
),
|
|
commonProjects,
|
|
)
|
|
return toMap(commonProjects, distinctProjects)
|
|
}
|
|
|
|
func extractProjectNames(m ent.ManifestFile) []string {
|
|
projects := make([]string, len(m.Projects))
|
|
for i, p := range m.Projects {
|
|
projects[i] = p.Name
|
|
}
|
|
return projects
|
|
}
|
|
|
|
func toMap(common, distinct []string) TypeMap {
|
|
ret := make(map[string]cst.ProjectType, len(common)+len(distinct))
|
|
for _, k := range common {
|
|
ret[k] = cst.Global
|
|
}
|
|
for _, k := range distinct {
|
|
ret[k] = cst.DifferentialSpecific
|
|
}
|
|
return ret
|
|
}
|