#!/usr/bin/python

import json
import os
import pyrax
import sys


def copy_dir(topdir, path, container):
    for ent in os.listdir(path):
        fullpath = os.path.join(path, ent)
        shortpath = fullpath.replace(topdir + '/', '')
        if os.path.isdir(fullpath):
            copy_dir(topdir, fullpath, container)
        else:
            print shortpath
            container.upload_file(fullpath, obj_name=shortpath)


def push(topdir, region, container_name):
    pyrax.set_setting('identity_type', 'rackspace')
    with open(os.path.expanduser('~/.cloudfiles'), 'r') as f:
        conf = json.loads(f.read())
        pyrax.set_credentials(conf['access_key'],
                              conf['secret_key'],
                              region=region)
    conn = pyrax.connect_to_cloudfiles(region=region.upper(), public=False)
    container = conn.create_container(container_name)
    copy_dir(topdir, topdir, container)


if __name__ == '__main__':
    push(sys.argv[1], sys.argv[2], sys.argv[3])