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