func NewUpdateParams(oldSpec, newSpec boshas.V1ApplySpec) ScriptParams { p := concreteScriptParams{ oldSpec: oldSpec, newSpec: &newSpec, } switch { case len(oldSpec.Jobs()) == 0: p.jobChange = "job_new" case oldSpec.JobSpec.Sha1 == newSpec.JobSpec.Sha1: p.jobChange = "job_unchanged" default: p.jobChange = "job_changed" } switch { case oldSpec.ConfigurationHash == "": p.hashChange = "hash_new" case oldSpec.ConfigurationHash == newSpec.ConfigurationHash: p.hashChange = "hash_unchanged" default: p.hashChange = "hash_changed" } for _, pkg := range newSpec.PackageSpecs { currentPkg, found := oldSpec.PackageSpecs[pkg.Name] switch { case !found: p.updatedPackages = append(p.updatedPackages, pkg.Name) case currentPkg.Sha1 != pkg.Sha1: p.updatedPackages = append(p.updatedPackages, pkg.Name) } } sort.Strings(p.updatedPackages) return p }