diff options
author | Serdar Sutay <serdar@opscode.com> | 2014-10-10 13:28:23 -0700 |
---|---|---|
committer | Serdar Sutay <serdar@opscode.com> | 2014-10-10 13:28:23 -0700 |
commit | 937a0394a1a3749bacebaee23f2bdd103e38991e (patch) | |
tree | f91b999d383c8c5bc967ac2cc9aa4e079b284867 | |
parent | 57d2c50408a356f5fdde79b9471ddfef3e767b04 (diff) | |
parent | 3794f12abf6f1760d5f3f125a7c8972d21010663 (diff) | |
download | chef-937a0394a1a3749bacebaee23f2bdd103e38991e.tar.gz |
Merge pull request #1724 from higanworks/prevew_archive_before_site_share
Add option --prevew-archive to `knife cookbook site share`
-rw-r--r-- | lib/chef/knife/cookbook_site_share.rb | 15 | ||||
-rw-r--r-- | spec/unit/knife/cookbook_site_share_spec.rb | 26 |
2 files changed, 41 insertions, 0 deletions
diff --git a/lib/chef/knife/cookbook_site_share.rb b/lib/chef/knife/cookbook_site_share.rb index 7204ccdb1c..d6cd570067 100644 --- a/lib/chef/knife/cookbook_site_share.rb +++ b/lib/chef/knife/cookbook_site_share.rb @@ -40,6 +40,13 @@ class Chef :description => "A colon-separated path to look for cookbooks in", :proc => lambda { |o| Chef::Config.cookbook_path = o.split(":") } + option :dry_run, + :long => '--dry-run', + :short => '-n', + :boolean => true, + :default => false, + :description => "Don't take action, only print what files will be upload to SuperMarket." + def run if @name_args.length < 2 show_usage @@ -66,6 +73,14 @@ class Chef exit(1) end + if config[:dry_run] + ui.info("Not uploading #{cookbook_name}.tgz due to --dry-run flag.") + result = shell_out!("tar -tzf #{cookbook_name}.tgz", :cwd => tmp_cookbook_dir) + ui.info(result.stdout) + FileUtils.rm_rf tmp_cookbook_dir + return + end + begin do_upload("#{tmp_cookbook_dir}/#{cookbook_name}.tgz", category, Chef::Config[:node_name], Chef::Config[:client_key]) ui.info("Upload complete!") diff --git a/spec/unit/knife/cookbook_site_share_spec.rb b/spec/unit/knife/cookbook_site_share_spec.rb index ad3f32fecc..744472cab7 100644 --- a/spec/unit/knife/cookbook_site_share_spec.rb +++ b/spec/unit/knife/cookbook_site_share_spec.rb @@ -25,6 +25,8 @@ describe Chef::Knife::CookbookSiteShare do before(:each) do @knife = Chef::Knife::CookbookSiteShare.new + # Merge default settings in. + @knife.merge_configs @knife.name_args = ['cookbook_name', 'AwesomeSausage'] @cookbook = Chef::CookbookVersion.new('cookbook_name') @@ -50,6 +52,10 @@ describe Chef::Knife::CookbookSiteShare do @knife.stub(:do_upload).and_return(true) end + it 'should set true to config[:dry_run] as default' do + @knife.config[:dry_run].should be_false + end + it 'should should print usage and exit when given no arguments' do @knife.name_args = [] @knife.should_receive(:show_usage) @@ -93,6 +99,26 @@ describe Chef::Knife::CookbookSiteShare do FileUtils.should_receive(:rm_rf) @knife.run end + + context "when the --dry-run flag is specified" do + before do + Chef::CookbookSiteStreamingUploader.stub(:create_build_dir).and_return("/var/tmp/dummy") + @knife.config = { :dry_run => true } + @knife.stub_chain(:shell_out!, :stdout).and_return('file') + end + + it "should list files in the tarball" do + expect(@knife).to receive(:shell_out!).with("tar -czf #{@cookbook.name}.tgz #{@cookbook.name}", {:cwd => "/var/tmp/dummy"}) + expect(@knife).to receive(:shell_out!).with("tar -tzf #{@cookbook.name}.tgz", {:cwd => "/var/tmp/dummy"}) + @knife.run + end + + it "does not upload the cookbook" do + allow(@knife).to receive(:shell_out!).and_return(true) + expect(@knife).not_to receive(:do_upload) + @knife.run + end + end end describe 'do_upload' do |