sbin/sync/fabfile.py
author bastiena
Thu, 16 Aug 2012 14:32:19 +0200
changeset 79 9eff85166868
parent 66 20da47bd9408
permissions -rw-r--r--
Front IDILL : spaces in img names removed touch interactions finished can't select timeline before player is reading

from fabric.api import task, run, local, env, cd, put, prefix, sudo
from fabric.colors import green
from fabric.contrib.project import rsync_project
from fabric.contrib.files import exists, upload_template
from fabric.context_managers import settings 
from mercurial import commands, ui, hg, cmdutil
import imp
import os, os.path
import shutil
import sys

import config

def get_export_path(version):
    base_path = os.path.join(env.base_export_path,env.export_prefix).lstrip("/")
    return os.path.expanduser(base_path) + "_%s" % (str(version))

def clean_export_folder(path):
    print("Removing %s" % path)
    if os.path.isdir(path):
        shutil.rmtree(path, ignore_errors=True)

def do_export_version(path, version):
    print("Export version %s"%str(version))
    
    #hgui = ui.ui() 
    #repo = hg.repository(hgui, cmdutil.findrepo(os.getcwd()))
    #commands.archive(hgui, repo, path, rev=str(version))
    
    local("hg archive -r \'%s\' \"%s\"" % (str(version),path))
    print("Export version %s done"%str(version))
    
def rsync_export(path, remotepath, filters):
    print("Rsync %s to %s",(path,remotepath))
    
    if filters:
        filter_option_str = " ".join(["--filter \"%s\"" % (f) for f in filters])
    else:
        filter_option_str =""
    
    run("mkdir -p \"%s\"" % remotepath)
    rsync_project(remotepath, local_dir=path, extra_opts=filter_option_str, delete=True)
    print("Rsync %s to %s done",(path,remotepath))
    
def clean_rsync_folder(remotepath):
    print("clean rsync folder %s" % remotepath)
    run("rm -fr \"%s\"" % remotepath)    

        
def export_version(version):
    print("export version %s" % str(version))
    
    export_path = get_export_path(version)
    
    clean_export_folder(export_path)
    do_export_version(export_path,version)
    
    return export_path

def do_sync_web(version, export_path):
    print("do_sync_web with version %s and path %s" % (version,export_path))
    web_path = os.path.join(export_path,"front_idill/") 
    rsync_export(web_path, env.remote_web_path, env.web_rsync_filters)    
    
def relaunch_server():
    print("Relaunch server")
    sudo(env.web_relaunch_cmd, shell=False)

@task
def sync_web(version):
    print(green("sync web with version %s" % version))
    export_path = export_version(version)
    do_sync_web(version, export_path)
    clean_export_folder(export_path)
    relaunch_server()