892: def sh(*cmd, &block)
893: options = (Hash === cmd.last) ? cmd.pop : {}
894: unless block_given?
895: show_command = cmd.join(" ")
896: show_command = show_command[0,42] + "..."
897:
898: block = lambda { |ok, status|
899: ok or fail "Command failed with status (#{status.exitstatus}): [#{show_command}]"
900: }
901: end
902: rake_check_options options, :noop, :verbose
903: rake_output_message cmd.join(" ") if options[:verbose]
904: unless options[:noop]
905: res = system(*cmd)
906: block.call(res, $?)
907: end
908: end