lib/ztk/ssh/file.rb
# Opens a temporary local file, yielding this to the supplied block.  Once
# the block returns the temporary file is uploaded to the remote host and
# installed as the supplied target.
#
# If the optional 'chown' or 'chmod' options are supplied then their
# respective actions will be taken on the target file on the remote host.
#
# @param [Hash] options The options hash.
# @option options [String] :target The target file on the remote host.
# @option options [String] :chown A user:group representation of who
#   to change ownership of the target file to (i.e. 'root:root').
# @option options [String] :chmod An octal file mode which to set the
#   target file to (i.e. '0755').
# @return [Boolean] Returns true if successful.
Opens a temporary local file, yielding this to the supplied block.  Once
the block returns the temporary file is uploaded to the remote host and
installed as the supplied target.

If the optional 'chown' or 'chmod' options are supplied then their
respective actions will be taken on the target file on the remote host.
Opens a temporary local file yielding this to the supplied block . Once the block returns the temporary file is uploaded to the remote host and installed as the supplied target . If the optional ' chown ' or ' chmod ' options are supplied then their respective actions will be taken on the target file on the remote host .
def file(options={}, &block)
        target = options[:target]
        chown  = options[:chown]
        chmod  = options[:chmod]
        target.nil? and raise SSHError, "You must supply a target file!"
        !block_given? and raise SSHError, "You must supply a block!"
        file_tempfile = Tempfile.new("file")
        remote_tempfile = ::File.join("", "tmp", ::File.basename(file_tempfile.path.dup))
        file_tempfile.close!
        local_tempfile  = Tempfile.new("tempfile-local")
        !block.nil? and block.call(local_tempfile)
        local_tempfile.respond_to?(:flush) and local_tempfile.flush
        self.upload(local_tempfile.path, remote_tempfile)
        self.exec(%(sudo mv -fv #{remote_tempfile} #{target}), :silence => true)
        chown.nil? or self.exec(%(sudo chown -v #{chown} #{target}), :silence => true)
        chmod.nil? or self.exec(%(sudo chmod -v #{chmod} #{target}), :silence => true)
        local_tempfile.close!
        true
      end
def file ( options = { } , & block ) target = options [ :target ] chown = options [ :chown ] chmod = options [ :chmod ] target . nil? and raise SSHError , "You must supply a target file!" ! block_given? and raise SSHError , "You must supply a block!" file_tempfile = Tempfile . new ( "file" ) remote_tempfile = :: File . join ( "" , "tmp" , :: File . basename ( file_tempfile . path . dup ) ) file_tempfile . close! local_tempfile = Tempfile . new ( "tempfile-local" ) ! block . nil? and block . call ( local_tempfile ) local_tempfile . respond_to? ( :flush ) and local_tempfile . flush self . upload ( local_tempfile . path , remote_tempfile ) self . exec ( %(sudo mv -fv #{remote_tempfile} #{target}) , :silence => true ) chown . nil? or self . exec ( %(sudo chown -v #{chown} #{target}) , :silence => true ) chmod . nil? or self . exec ( %(sudo chmod -v #{chmod} #{target}) , :silence => true ) local_tempfile . close! true end
Opens a temporary local file, yielding this to the supplied block.
Opens a temporary local file yielding this to the supplied block .
Returns true if successful.
Returns true if successful .
Boolean
options
:chmod An octal file mode which to set the target file to .
: chmod An octal file mode which to set the target file to .
block
<not_specific>
<not_specific>
options The options hash.
options The options hash .