class ChefConfig::PackageTask

def define

def define
  raise "Need to provide package root and module name" if root_path.nil? || module_name.nil?
  desc "Build Gems of component dependencies"
  task :package_components do
    component_full_paths.each do |component_path|
      Dir.chdir(component_path) do
        sh "rake package"
      end
    end
  end
  task :package => :package_components
  desc "Build and install component dependencies"
  task :install_components => :package_components do
    component_full_paths.each do |component_path|
      Dir.chdir(component_path) do
        sh "rake install"
      end
    end
  end
  task :install => :install_components
  desc "Clean up builds of component dependencies"
  task :clobber_component_packages do
    component_full_paths.each do |component_path|
      Dir.chdir(component_path) do
        sh "rake clobber_package"
      end
    end
  end
  task :clobber_package => :clobber_component_packages
  desc "Update the version number for component dependencies"
  task :update_components_versions do
    component_full_paths.each do |component_path|
      Dir.chdir(component_path) do
        sh "rake version"
      end
    end
  end
  namespace :version do
    desc 'Regenerate lib/#{@module_path}/version.rb from VERSION file'
    task :update => :update_components_versions do
      contents = <<-VERSION_RB
pyright:: Copyright 2010-2016, Chef Software, Inc.
cense:: Apache License, Version 2.0
censed under the Apache License, Version 2.0 (the "License");
u may not use this file except in compliance with the License.
u may obtain a copy of the License at
  http://www.apache.org/licenses/LICENSE-2.0
less required by applicable law or agreed to in writing, software
stributed under the License is distributed on an "AS IS" BASIS,
THOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
e the License for the specific language governing permissions and
mitations under the License.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
TE: This file is generated by running `rake version` in the top level of
is repo. Do not edit this manually. Edit the VERSION file and run the rake
sk instead.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ass_or_module} #{module_name}
module_name.upcase}_ROOT = File.expand_path("../..", __FILE__)
RSION = "#{version}"
TE: the Chef::Version class is defined in version_class.rb
TE: DO NOT Use the Chef::Version class on #{module_name}::VERSIONs.  The
    Chef::Version class is for _cookbooks_ only, and cannot handle
    pre-release versions like "10.14.0.rc.2".  Please use Rubygem's
    Gem::Version class instead.
      VERSION_RB
      IO.write(version_rb_path, contents)
    end
    task :bump => %w{version:bump_patch version:update}
    task :show do
      puts version
    end
    # Add 1 to the current patch version in the VERSION file, and write it back out.
    task :bump_patch do
      current_version = version
      new_version = current_version.sub(/^(\d+\.\d+\.)(\d+)/) { "#{$1}#{$2.to_i + 1}" }
      puts "Updating version in #{version_rb_path} from #{current_version.chomp} to #{new_version.chomp}"
      IO.write(version_file_path, new_version)
    end
  end
  task :version => "version:update"
  gemspec_platform_to_install = ""
  Dir[File.expand_path("*.gemspec", root_path)].reverse_each do |gemspec_path|
    gemspec = eval(IO.read(gemspec_path))
    Gem::PackageTask.new(gemspec) do |task|
      task.package_dir = full_package_dir
    end
    gemspec_platform_to_install = "-#{gemspec.platform}" if gemspec.platform != Gem::Platform::RUBY && Gem::Platform.match(gemspec.platform)
  end
  desc "Build and install a #{module_path} gem"
  task :install => [:package] do
    with_clean_env do
      full_module_path = File.join(full_package_dir, module_path)
      sh %{gem install #{full_module_path}-#{version}#{gemspec_platform_to_install}.gem --no-rdoc --no-ri}
    end
  end
  task :uninstall do
    sh %{gem uninstall #{module_path} -x -v #{version} }
  end
  desc "Build it, tag it and ship it"
  task :ship => [:clobber_package, :gem] do
    sh("git tag #{version}")
    sh("git push #{git_remote} --tags")
    Dir[File.expand_path("*.gem", full_package_dir)].reverse_each do |built_gem|
      sh("gem push #{built_gem}")
    end
  end
end