lib/vagrant/scp/commands/scp.rb in vagrant-scp-0.3.0 vs lib/vagrant/scp/commands/scp.rb in vagrant-scp-0.4.0

- old
+ new

@@ -8,28 +8,38 @@ "copies data into a box via SCP" end def execute # Parse the arguments - source_files, target_dir, host = parse_args() - return if target_dir.nil? + file_1, file_2 = parse_args() + # Extract host info + # + # We want to get the name of the vm, from a [host_1]:file_1 [host_2]:file_2 description + host = [file_1, file_2].map{|file_spec| file_spec.match(/^([^:]*):/)[1] rescue nil}.compact.first # Get the info about the target VM with_target_vms(host) do |machine| ssh_info = machine.ssh_info raise Vagrant::Errors::SSHNotReady if ssh_info.nil? + if file_1.include? ':' + source_files = "#{ssh_info[:username]}@#{ssh_info[:host]}:#{file_1.split(':').last}" + target_files = file_2 + else + source_files = file_1 + target_files = "#{ssh_info[:username]}@#{ssh_info[:host]}:#{file_2.split(':').last}" + end # Run the SCP command = [ "scp", '-r', '-o StrictHostKeyChecking=no', '-o UserKnownHostsFile=/dev/null', "-o port=#{ssh_info[:port]}", "-i '#{ssh_info[:private_key_path][0]}'", source_files, - "#{ssh_info[:username]}@#{ssh_info[:host]}:#{target_dir}" + target_files ].join(' ') system(command) end end @@ -39,10 +49,10 @@ o.separator "" o.separator "Options:" o.separator "" end argv = parse_options(opts) - @env.ui.info(opts.help, prefix: false) if ! [2,3].include? argv.length + @env.ui.info(opts.help, prefix: false) unless argv.length == 2 return argv end end