module RCM class Service attr_accessor :name, :depends_file, :depends_package def ==(other) return false unless other.is_a?(RCM::Service) return false unless @name == other.name @depends_file.each do |dep_name, dep_object| other_depends = other.depends_file # Return false if dependencies are not same. return false unless other_depends.key?(dep_name) # Return false if any of the attributes does not match unless other_depends[dep_name].checksum == dep_object.checksum && other_depends[dep_name].mode == dep_object.mode && other_depends[dep_name].owner == dep_object.owner && other_depends[dep_name].group == dep_object.group && other_depends[dep_name].path == dep_object.path return false end end @depends_package.each do |dep_name, dep_object| other_depends = other.depends_package unless other_depends[dep_name].name == dep_object.name && other_depends[dep_name].version == dep_object.version return false end end true end def initialize(name, depends_file, depends_package) @name = name @depends_file = depends_file @depends_package = depends_package end def to_s "Name = #{@name}\n" + "Depends = #{@depends}\n" end end end