113 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
require_relative 'platform_specific_builders'
 | 
						|
require_relative 'resource_deprecations'
 | 
						|
require_relative 'resource_defaults'
 | 
						|
require_relative 'sevenzip_command_builder'
 | 
						|
require_relative 'unzip_command_builder'
 | 
						|
require_relative 'tar_command_builder'
 | 
						|
require_relative 'general_owner'
 | 
						|
require_relative 'windows_owner'
 | 
						|
 | 
						|
module Ark
 | 
						|
  module ProviderHelpers
 | 
						|
    extend ::Ark::PlatformSpecificBuilders
 | 
						|
 | 
						|
    generates_archive_commands_for :seven_zip,
 | 
						|
      when_the: -> { node['platform_family'] == 'windows' },
 | 
						|
      with_klass: ::Ark::SevenZipCommandBuilder
 | 
						|
 | 
						|
    generates_archive_commands_for :unzip,
 | 
						|
      when_the: -> { new_resource.extension =~ /zip|war|jar/ },
 | 
						|
      with_klass: ::Ark::UnzipCommandBuilder
 | 
						|
 | 
						|
    generates_archive_commands_for :tar,
 | 
						|
      when_the: -> { true },
 | 
						|
      with_klass: ::Ark::TarCommandBuilder
 | 
						|
 | 
						|
    generates_owner_commands_for :windows,
 | 
						|
      when_the: -> { node['platform_family'] == 'windows' },
 | 
						|
      with_klass: ::Ark::WindowsOwner
 | 
						|
 | 
						|
    generates_owner_commands_for :all_other_platforms,
 | 
						|
      when_the: -> { true },
 | 
						|
      with_klass: ::Ark::GeneralOwner
 | 
						|
 | 
						|
    def deprecations
 | 
						|
      ::Ark::ResourceDeprecations.on(new_resource)
 | 
						|
    end
 | 
						|
 | 
						|
    def show_deprecations
 | 
						|
      deprecations.each { |message| Chef::Log.warn("DEPRECATED: #{message}") }
 | 
						|
    end
 | 
						|
 | 
						|
    def defaults
 | 
						|
      @resource_defaults ||= ::Ark::ResourceDefaults.new(new_resource)
 | 
						|
    end
 | 
						|
 | 
						|
    def set_paths
 | 
						|
      new_resource.extension = defaults.extension
 | 
						|
      new_resource.prefix_bin = defaults.prefix_bin
 | 
						|
      new_resource.prefix_root = defaults.prefix_root
 | 
						|
      new_resource.home_dir = defaults.home_dir
 | 
						|
      new_resource.version = defaults.version
 | 
						|
      new_resource.owner = defaults.owner
 | 
						|
 | 
						|
      # TODO: what happens when the path is already set --
 | 
						|
      #   with the current logic we overwrite it
 | 
						|
      #   if you are in windows we overwrite it
 | 
						|
      #   otherwise we overwrite it with the root/name-version
 | 
						|
      new_resource.path = defaults.path
 | 
						|
      new_resource.release_file = defaults.release_file
 | 
						|
    end
 | 
						|
 | 
						|
    def set_put_paths
 | 
						|
      new_resource.extension = defaults.extension
 | 
						|
 | 
						|
      # TODO: Should we be setting the prefix_root -
 | 
						|
      #   as the prefix_root could be used in the path_with_version
 | 
						|
      # new_resource.prefix_root = default.prefix_root
 | 
						|
      new_resource.path = defaults.path_without_version
 | 
						|
      new_resource.release_file = defaults.release_file_without_version
 | 
						|
    end
 | 
						|
 | 
						|
    def set_dump_paths
 | 
						|
      new_resource.extension = defaults.extension
 | 
						|
      new_resource.release_file = defaults.release_file_without_version
 | 
						|
    end
 | 
						|
 | 
						|
    def unpack_command
 | 
						|
      archive_application.unpack
 | 
						|
    end
 | 
						|
 | 
						|
    def dump_command
 | 
						|
      archive_application.dump
 | 
						|
    end
 | 
						|
 | 
						|
    def cherry_pick_command
 | 
						|
      archive_application.cherry_pick
 | 
						|
    end
 | 
						|
 | 
						|
    def unzip_command
 | 
						|
      archive_application.unpack
 | 
						|
    end
 | 
						|
 | 
						|
    def owner_command
 | 
						|
      owner_builder_klass.new(new_resource).command
 | 
						|
    end
 | 
						|
 | 
						|
    private
 | 
						|
 | 
						|
    def archive_application
 | 
						|
      @archive_application ||= archive_builder_klass.new(new_resource)
 | 
						|
    end
 | 
						|
 | 
						|
    def archive_builder_klass
 | 
						|
      new_resource.extension ||= defaults.extension
 | 
						|
      Ark::ProviderHelpers.archive_command_generators.find { |condition, _klass| instance_exec(&condition) }.last
 | 
						|
    end
 | 
						|
 | 
						|
    def owner_builder_klass
 | 
						|
      Ark::ProviderHelpers.owner_command_generators.find { |condition, _klass| instance_exec(&condition) }.last
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |