#!/usr/bin/env python

import sys
import arc

# Copies a file from source to destination

# Wait for all the background threads to exit before exiting
import atexit
@atexit.register
def wait_exit():
    arc.ThreadInitializer().waitExit()

def usage():
    sys.stdout.write(' Usage: copy_file.py source destination\n')
    
if len(sys.argv) != 3:
    usage()
    sys.exit(1)
    
# Logging to stdout
root_logger = arc.Logger.getRootLogger()
stream = arc.LogStream(sys.stdout)
root_logger.addDestination(stream)
# Set threshold to VERBOSE or DEBUG for more information
root_logger.setThreshold(arc.ERROR)

# User configuration - paths to proxy certificates etc can be set here
# With no arguments default values are used
cfg = arc.UserConfig()

# Convert the arguments to DataPoint objects
source = arc.datapoint_from_url(sys.argv[1], cfg)
if source is None:
    root_logger.msg(arc.ERROR, "Can't handle source "+sys.argv[1])
    sys.exit(1)
    
destination = arc.datapoint_from_url(sys.argv[2], cfg)
if destination is None:
    root_logger.msg(arc.ERROR, "Can't handle destination "+sys.argv[2])
    sys.exit(1)

# DataMover does the transfer
mover = arc.DataMover()
# Show transfer progress
mover.verbose(True)
# Don't attempt to retry on error
mover.retry(False)
# Do the transfer
status = mover.Transfer(source, destination, arc.FileCache(), arc.URLMap())

# Print the exit status of the transfer
sys.stdout.write("%s\n"%str(status))
