module Josef::Diff
Public Instance Methods
be_create?(local_group)
click to toggle source
# File lib/josef/diff.rb, line 21 def be_create?(local_group) remote.find{|g| g[:group_mail_address] == local_group[:group_mail_address]}.nil? end
be_delete?(remote_group)
click to toggle source
# File lib/josef/diff.rb, line 25 def be_delete?(remote_group) local.find{|g| g[:group_mail_address] == remote_group[:group_mail_address]}.nil? end
changed?(local_group)
click to toggle source
# File lib/josef/diff.rb, line 14 def changed?(local_group) remote_group = remote.find{|g| g[:group_mail_address] == local_group[:group_mail_address]} return false if local_group[:members].sort == remote_group[:members].sort true end
remote_diff(remote, local, mode = "apply")
click to toggle source
# File lib/josef/diff.rb, line 29 def remote_diff(remote, local, mode = "apply") local.each do | local_group | next unless should_be_tareget?(local_group) if be_create?(local_group) puts "#{local_group[:group_mail_address]} will be create:#{mode}" local_group[:members].each do | member | puts "+ #{member}" end elsif changed?(local_group) puts "#{local_group[:group_mail_address]} will be change:#{mode}" remote_members = remote.find{|g| g[:group_mail_address] == local_group[:group_mail_address]}[:members] add = local_group[:members] - remote_members del = remote_members - local_group[:members] add.each do | add_member | puts "+ #{add_member}" end del.each do | del_member | puts "- #{del_member}" end end end remote.each do | remote_group | next unless should_be_tareget?(remote_group) if be_delete?(remote_group) puts "#{remote_group[:group_mail_address]} will be delete:#{mode}" end end end
should_be_tareget?(local_group)
click to toggle source
# File lib/josef/diff.rb, line 8 def should_be_tareget?(local_group) return false if exculued?(local_group[:group_mail_address]) true end