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
|