lib/chef/knife/cookbook_site_vendor.rb in chef-0.9.12 vs lib/chef/knife/cookbook_site_vendor.rb in chef-0.9.14.beta.1
- old
+ new
@@ -4,13 +4,13 @@
# License:: Apache License, Version 2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
@@ -36,10 +36,16 @@
:short => "-o PATH:PATH",
:long => "--cookbook-path PATH:PATH",
:description => "A colon-separated path to look for cookbooks in",
:proc => lambda { |o| o.split(":") }
+ option :branch_default,
+ :short => "-B BRANCH",
+ :long => "--branch BRANCH",
+ :description => "Default branch to work with",
+ :default => "master"
+
def run
if config[:cookbook_path]
Chef::Config[:cookbook_path] = config[:cookbook_path]
else
config[:cookbook_path] = Chef::Config[:cookbook_path]
@@ -55,18 +61,18 @@
cookbook_path = File.join(vendor_path, name_args[0])
upstream_file = File.join(vendor_path, "#{name_args[0]}.tar.gz")
branch_name = "chef-vendor-#{name_args[0]}"
download = Chef::Knife::CookbookSiteDownload.new
- download.config[:file] = upstream_file
+ download.config[:file] = upstream_file
download.name_args = name_args
download.run
- Chef::Log.info("Checking out the master branch.")
- Chef::Mixin::Command.run_command(:command => "git checkout master", :cwd => vendor_path)
+ Chef::Log.info("Checking out the #{config[:branch_default]} branch.")
+ Chef::Mixin::Command.run_command(:command => "git checkout #{config[:branch_default]}", :cwd => vendor_path)
Chef::Log.info("Checking the status of the vendor branch.")
- status, branch_output, branch_error = Chef::Mixin::Command.output_of_command("git branch --no-color | grep #{branch_name}", :cwd => vendor_path)
+ status, branch_output, branch_error = Chef::Mixin::Command.output_of_command("git branch --no-color | grep #{branch_name}", :cwd => vendor_path)
if branch_output =~ /#{Regexp.escape(branch_name)}$/m
Chef::Log.info("Vendor branch found.")
Chef::Mixin::Command.run_command(:command => "git checkout #{branch_name}", :cwd => vendor_path)
else
Chef::Log.info("Creating vendor branch.")
@@ -83,28 +89,28 @@
Chef::Log.info("Committing changes.")
changes = true
begin
Chef::Mixin::Command.run_command(:command => "git commit -a -m 'Import #{name_args[0]} version #{download.version}'", :cwd => vendor_path)
rescue Chef::Exceptions::Exec => e
- Chef::Log.warn("Checking out the master branch.")
+ Chef::Log.warn("Checking out the #{config[:branch_default]} branch.")
Chef::Log.warn("No changes from current vendor #{name_args[0]}")
- Chef::Mixin::Command.run_command(:command => "git checkout master", :cwd => vendor_path)
+ Chef::Mixin::Command.run_command(:command => "git checkout #{config[:branch_default]}", :cwd => vendor_path)
changes = false
end
if changes
Chef::Log.info("Creating tag chef-vendor-#{name_args[0]}-#{download.version}.")
Chef::Mixin::Command.run_command(:command => "git tag -f chef-vendor-#{name_args[0]}-#{download.version}", :cwd => vendor_path)
- Chef::Log.info("Checking out the master branch.")
- Chef::Mixin::Command.run_command(:command => "git checkout master", :cwd => vendor_path)
+ Chef::Log.info("Checking out the #{config[:branch_default]} branch.")
+ Chef::Mixin::Command.run_command(:command => "git checkout #{config[:branch_default]}", :cwd => vendor_path)
Chef::Log.info("Merging changes from #{name_args[0]} version #{download.version}.")
Dir.chdir(vendor_path) do
if system("git merge #{branch_name}")
Chef::Log.info("Cookbook #{name_args[0]} version #{download.version} successfully vendored!")
else
Chef::Log.error("You have merge conflicts - please resolve manually!")
- Chef::Log.error("(Hint: cd #{vendor_path}; git status)")
+ Chef::Log.error("(Hint: cd #{vendor_path}; git status)")
exit 1
end
end
end