Sha256: 79655ead74efa50c8b785f126e514717d5c3a032e8a5a3044593650243c37889

Contents?: true

Size: 1.65 KB

Versions: 5

Compression:

Stored size: 1.65 KB

Contents

module ForemanTemplates
  class Action
    delegate :logger, :to => :Rails

    def self.git_repo_start_with
      %w{http:// https:// git:// ssh:// git+ssh:// ssh+git://}
    end

    def self.file_repo_start_with
      ['/']
    end

    def self.repo_start_with
      git_repo_start_with + file_repo_start_with
    end

    def self.setting_overrides
      %i(verbose prefix dirname filter repo negate branch)
    end

    def method_missing(method, *args, &block)
      if self.class.setting_overrides.include?(method)
        instance_variable_get("@#{method}")
      else
        super
      end
    end

    def respond_to_missing?(method, include_private = false)
      self.class.setting_overrides.include?(method)
    end

    def initialize(args = {})
      @taxonomies = { :organizations => args[:organization_params] || {},
                      :locations => args[:location_params] || {} }
      assign_attributes args
    end

    def git_repo?
      @repo.start_with?(*self.class.git_repo_start_with)
    end

    def get_absolute_repo_path
      File.expand_path(@repo)
    end

    def verify_path!(path)
      msg = _("Using file-based synchronization, but couldn't access %s. ") % path
      msg += _("Please check the access permissions/SELinux and make sure it is readable/writable for the web application user account, typically 'foreman'.")
      raise PathAccessException, msg unless Dir.exist?(path)
    end

    private

    def assign_attributes(args = {})
      self.class.setting_overrides.each do |attribute|
        instance_variable_set("@#{attribute}", args[attribute.to_sym] || Setting["template_sync_#{attribute}".to_sym])
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
foreman_templates-7.0.4 app/services/foreman_templates/action.rb
foreman_templates-7.0.3 app/services/foreman_templates/action.rb
foreman_templates-7.0.2 app/services/foreman_templates/action.rb
foreman_templates-7.0.1 app/services/foreman_templates/action.rb
foreman_templates-7.0.0 app/services/foreman_templates/action.rb