plugins/packages/packages_model.rb in machinery-tool-1.16.4 vs plugins/packages/packages_model.rb in machinery-tool-1.17.0

- old
+ new

@@ -17,24 +17,43 @@ class Package < Machinery::Object end +class RpmPackage < Package +end + +class DpkgPackage < Package +end + class PackagesScope < Machinery::Array include Machinery::Scope - has_elements class: Package + has_attributes :package_system + has_elements class: DpkgPackage, if: { package_system: "dpkg" } + has_elements class: RpmPackage, if: { package_system: "rpm" } def compare_with(other) - only_self = self - other - only_other = other - self - common = self & other - changed = Machinery::Scope.extract_changed_elements(only_self, only_other, :name) + if self.package_system != other.package_system + [self, other, nil, nil] + else + only_self = self - other + only_other = other - self + common = self & other + changed = Machinery::Scope.extract_changed_elements(only_self, only_other, :name) + changed = nil if changed.empty? - [ - only_self, - only_other, - changed, - common - ].map { |e| (e && !e.empty?) ? e : nil } + [ + package_list_to_scope(only_self), + package_list_to_scope(only_other), + changed, + package_list_to_scope(common) + ].map { |e| (e && !e.empty?) ? e : nil } + end + end + + private + + def package_list_to_scope(packages) + self.class.new(packages, package_system: package_system) unless packages.elements.empty? end end