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
 |