#!/usr/bin/env python
#
#

""" install the GAE upload dir so it can be uploaded. """


## imports

import sys
import os
import pkg_resources
import shutil

## boot

sys.path.insert(0, os.getcwd())


## gozerlib imports

from gozerlib.utils.generic import gethighest, dosed

if len(sys.argv) > 1:
     if not os.path.isdir('releases'):
         os.mkdir('releases')
     release = 'releases' + os.sep + sys.argv[1]
     if not os.path.isdir(release):
         os.mkdir(release)
     targetin = sys.argv[1]
else:
     release = "releases" + os.sep + 'feedprovider'
     targetin = 'feedprovider'


if os.path.isdir(release + '.old'):
    backup = 'releases' + os.sep + gethighest('releases', targetin + '.old')
else:
    backup = release + '.old'

if os.path.isdir(release):
    print "MOVING %s TO %s" % (release, backup)
    os.rename(release, backup)

#sys.path.insert(0, os.getcwd())
#pkg_resources.require("feedprovider>=0.1")

## define

orig = 'feedprovider'

## functions

def copyover(source, target):
    print "COPYING RESULTS TO %s" % target
    shutil.copytree(source, target)   
    if len(sys.argv) > 1:
        sed(source, target)
  
def sed(source, target):
    print "source: %s target: %s" % (source, target)

    for f in os.listdir(target):
        if f.startswith('..'):
            continue
        if f.endswith(".pyc"):
            continue
        if f.endswith("~"):
            continue
        if os.path.isdir(target + os.sep + f):
            sed(source + os.sep + f, target + os.sep + f)
            continue
        else:
            print "sedding %s (%s) - %s" % (f, orig, targetin)
            dosed(target + os.sep + f, 's/%s/%s/' % (orig, targetin))
            dosed(target + os.sep + f, 's/%s/%s/' % (orig.upper(), targetin.upper()))


## doit

source = pkg_resources.resource_filename("gaeupload", '')
copyover(source, release)
source = pkg_resources.resource_filename("tests", '')
copyover(source, release + os.sep + 'tests')
source = pkg_resources.resource_filename('gozerlib', '')
copyover(source, release + os.sep + 'gozerlib')
source = pkg_resources.resource_filename('commonplugs', '')
copyover(source, release + os.sep + 'commonplugs')
source = pkg_resources.resource_filename('socketplugs', '')
copyover(source, release + os.sep + 'socketplugs')
source = pkg_resources.resource_filename('waveplugs', '')
copyover(source, release + os.sep + 'waveplugs')
source = pkg_resources.resource_filename('simplejson', '')
copyover(source, release + os.sep + 'simplejson')

homedir = os.path.expanduser("~")
try:
    copyover(homedir + os.sep + "regs" + os.sep + targetin, release + os.sep + 'config')
except OSError, ex:
    print str(ex)
    try:
        source = pkg_resources.resource_filename("config", '')
        copyover(source, release + os.sep + 'config')
    except OSError, ex:
        print str(ex)
try:
    shutil.copy(release + os.sep + 'config' + os.sep + 'app.yaml', release + os.sep + 'app.yaml')
except IOError:
    print "app.yaml is missing in %s." % (release + os.sep + 'config' + os.sep + targetin, )
    try:
        copyover(release + os.sep + 'config', homedir + os.sep + "regs" + os.sep + targetin)
        print "please edit ~/regs/%s/ dir and rerun this program." % (targetin,)
    except OSError:
        pass
    try:
        shutil.copy(release + os.sep + 'config' + os.sep + 'app.yaml.example', release + os.sep + 'app.yaml')
    except IOError:
        print "app.yaml is missing in %s. see app.yaml.example" % (homedir + os.sep + 'regs'  + os.sep + targetin, )
    try:
        shutil.copy(release + os.sep + 'config' + os.sep + 'mainconfig.example', release + os.sep + 'config' + os.sep + 'mainconfig')
    except IOError:
        print "mainconfig is missing in %s. see mainconfig.example" % (homedir + os.sep + 'regs'  + os.sep + targetin, )

if os.path.isdir('docs'):
    copyover('docs', release + os.sep + 'docs')
