Skip to content

Commit

Permalink
Merge pull request #597 from puppetlabs/revert-595-maint/master/shuuu…
Browse files Browse the repository at this point in the history
…uttt_uuuuppppp

Revert "(PA-552) OSX signing should not echo the command output"
  • Loading branch information
mckern committed Oct 19, 2016
2 parents ffda8a4 + c99d235 commit c192889
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 16 deletions.
17 changes: 8 additions & 9 deletions lib/packaging/osx.rb
Expand Up @@ -13,16 +13,15 @@ def sign(target_dir = 'pkg')
dmgs = Dir.glob("#{target_dir}/apple/**/*.dmg")
Pkg::Util::Net.rsync_to(dmgs.join(" "), rsync_host_string, work_dir)
Pkg::Util::Net.remote_ssh_cmd(ssh_host_string, %Q[for dmg in #{dmgs.map { |d| File.basename(d, ".dmg") }.join(" ")}; do
/usr/bin/hdiutil attach #{work_dir}/${dmg}.dmg -mountpoint #{mount} -nobrowse -quiet &&
/usr/bin/security -v unlock-keychain -p "#{Pkg::Config.osx_signing_keychain_pw}" "#{Pkg::Config.osx_signing_keychain}" &&
/usr/bin/hdiutil attach #{work_dir}/$dmg.dmg -mountpoint #{mount} -nobrowse -quiet ;
/usr/bin/security -v unlock-keychain -p "#{Pkg::Config.osx_signing_keychain_pw}" "#{Pkg::Config.osx_signing_keychain}" ;
for pkg in $(ls #{mount}/*.pkg | xargs -n 1 basename); do
/usr/bin/productsign --keychain "#{Pkg::Config.osx_signing_keychain}" --sign "#{Pkg::Config.osx_signing_cert}" #{mount}/${pkg} #{signed}/${pkg} &&
/usr/sbin/pkgutil --check-signature #{signed}/${pkg}
done &&
/usr/bin/hdiutil detach #{mount} -quiet &&
/bin/rm #{work_dir}/${dmg}.dmg &&
/usr/bin/hdiutil create -volname ${dmg} -srcfolder #{signed}/ #{work_dir}/${dmg}.dmg &&
/bin/rm #{signed}/* ; done], false)
/usr/bin/productsign --keychain "#{Pkg::Config.osx_signing_keychain}" --sign "#{Pkg::Config.osx_signing_cert}" #{mount}/$pkg #{signed}/$pkg ;
done
/usr/bin/hdiutil detach #{mount} -quiet ;
/bin/rm #{work_dir}/$dmg.dmg ;
/usr/bin/hdiutil create -volname $dmg -srcfolder #{signed}/ #{work_dir}/$dmg.dmg ;
/bin/rm #{signed}/* ; done])
dmgs.each do | dmg |
Pkg::Util::Net.rsync_from("#{work_dir}/#{File.basename(dmg)}", rsync_host_string, File.dirname(dmg))
end
Expand Down
8 changes: 4 additions & 4 deletions lib/packaging/util/net.rb
Expand Up @@ -49,11 +49,11 @@ def remote_ssh_cmd(target, command, capture_output = false)
if capture_output
require 'open3'
stdout, stderr, exitstatus = Open3.capture3(cmd)
Pkg::Util::Execution.success?(exitstatus) || raise("Remote ssh command failed: #{stdout} #{stderr}")
puts stdout, stderr
Pkg::Util::Execution.success?(exitstatus) or raise "Remote ssh command failed."
return stdout, stderr
else
Kernel.system("#{cmd} > /dev/null 2>&1")
Pkg::Util::Execution.success? || raise("Remote ssh command failed.")
Kernel.system(cmd)
Pkg::Util::Execution.success? or raise "Remote ssh command failed."
end
end

Expand Down
6 changes: 3 additions & 3 deletions spec/lib/packaging/util/net_spec.rb
Expand Up @@ -63,21 +63,21 @@
context "without output captured" do
it "should execute a command :foo on a host :bar using Kernel" do
Pkg::Util::Tool.should_receive(:check_tool).with("ssh").and_return(ssh)
Kernel.should_receive(:system).with("#{ssh} -t foo 'bar' > /dev/null 2>&1")
Kernel.should_receive(:system).with("#{ssh} -t foo 'bar'")
Pkg::Util::Execution.should_receive(:success?).and_return(true)
Pkg::Util::Net.remote_ssh_cmd("foo", "bar")
end

it "should escape single quotes in the command" do
Pkg::Util::Tool.should_receive(:check_tool).with("ssh").and_return(ssh)
Kernel.should_receive(:system).with("#{ssh} -t foo 'b'\\''ar' > /dev/null 2>&1")
Kernel.should_receive(:system).with("#{ssh} -t foo 'b'\\''ar'")
Pkg::Util::Execution.should_receive(:success?).and_return(true)
Pkg::Util::Net.remote_ssh_cmd("foo", "b'ar")
end

it "should raise an error if ssh fails" do
Pkg::Util::Tool.should_receive(:check_tool).with("ssh").and_return(ssh)
Kernel.should_receive(:system).with("#{ssh} -t foo 'bar' > /dev/null 2>&1")
Kernel.should_receive(:system).with("#{ssh} -t foo 'bar'")
Pkg::Util::Execution.should_receive(:success?).and_return(false)
expect{ Pkg::Util::Net.remote_ssh_cmd("foo", "bar") }.to raise_error(RuntimeError, /Remote ssh command failed./)
end
Expand Down

0 comments on commit c192889

Please sign in to comment.