module GClouder::Resource::Cleaner

Public Class Methods

included(klass) click to toggle source
# File lib/gclouder/resource_cleaner.rb, line 6
def self.included(klass)
  klass.extend Cleaner
end

Public Instance Methods

clean() click to toggle source
# File lib/gclouder/resource_cleaner.rb, line 10
def clean
  return if undefined.empty?

  header :clean

  undefined.each do |namespace, resources|
    info namespace, indent: 2, heading: true
    info
    resources.each do |resource|
      message = resource['name']
      message += " (not defined locally)"
      warning message
      # FIXME: enable purge on --purge flag..
      #Resource.symlink.send(:purge, namespace, resource)
    end
  end
end
cleaner() click to toggle source
# File lib/gclouder/resource_cleaner.rb, line 39
def cleaner
  (self.const_defined?(:Cleaner) && self::Cleaner.respond_to?(:custom)) ? self::Cleaner.custom : Default.cleaner
end
undefined() click to toggle source
# File lib/gclouder/resource_cleaner.rb, line 43
def undefined
  self::Remote.list.each_with_object({}) do |(namespace, resources), collection|
    resources.each do |resource|
      namespace_resources = self::Local.list[namespace]

      # accept PROC for custom matching of undefined resources
      next if namespace_resources && cleaner.call(namespace_resources, resource["name"])

      collection[namespace] ||= []
      collection[namespace] << resource
    end
  end
end