#!/usr/bin/expect
# usage: expect_scp <remote-ip-addr>:<remote-path> <local-path>

# Sometimes, the network connection time may be more than the default
# timeout duration of expect, i.e., 10 seconds. Hence, set a longer timeout.
set timeout 20

set local_path [lindex $argv 1]
set remote_path [lindex $argv 0]
spawn scp -r -o StrictHostKeyChecking=no -o UserKnownHostsFile="/tmp/null" \
      "$local_path" "$remote_path"

# The prompts from the remote machine are not deterministic.
# For example, it may prompt (yes/no) for 0, 1, or even 2 times;
# it may or may not prompt the user for a password, etc.
# We used a loop to handle various combinations of such possibilities.
expect {
  # The remote machine has closed the connection.
  eof {
    puts "Has copied the .version file to the remote machine."
    exit 0
  }

  # The scp connection times out.
  timeout {
    send_error "Error: scp timeout!";
    exit 1
  }

  -nocase "(yes/no)?" {
    send "yes\r";
    exp_continue
  }

  -nocase "password:" {
    send "test0000\r";
    exp_continue
  }

  -nocase "Permanently added" {}

  # This exception may occur when the .version file was not created for any
  # reason. This causes the spawned process for scp to abort and thus
  # this script was killed in a cascaded way.
  -nocase "killed by signal" {
    send_error "Error: the spawned scp process was killed.\n";
    exit 1
  }

  # This exception may occur when the machine IP is incorrect.
  -nocase "lost connection" {
    send_error "Error: lost connection to the chromebook machine.\n";
    exit 1
  }
}
