Skip to content

Instantly share code, notes, and snippets.

@eduardo-matos
Forked from jpennell/fabfile.py
Created August 17, 2013 02:16

Revisions

  1. @jpennell jpennell created this gist Sep 18, 2012.
    86 changes: 86 additions & 0 deletions fabfile.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,86 @@
    from fabric.api import env, local, require


    def deploy():
    """fab [environment] deploy"""
    require('environment')
    maintenance_on()
    push()
    syncdb()
    migrate()
    maintenance_off()
    ps()


    def maintenance_on():
    """fab [environment] maintenance_on"""
    require('environment')
    local('heroku maintenance:on --remote %s' % env.environment)


    def maintenance_off():
    """fab [environment] maintenance_off"""
    require('environment')
    local('heroku maintenance:off --remote %s' % env.environment)


    def push():
    """fab [environment] push"""
    require('environment')
    local('git push %s master' % env.environment)


    def syncdb():
    """fab [environment] syncdb"""
    require('environment')
    if(env.environment == "development"):
    local('foreman run python manage.py syncdb')
    else:
    local('heroku run python manage.py syncdb --remote %s' % env.environment)


    def migrate(app=None):
    """fab [environment] migrate"""
    require('environment')
    if(env.environment == "development"):
    if(app is not None):
    local('foreman run python manage.py migrate %s' % app)
    else:
    local('foreman run python manage.py migrate')
    else:
    if(app is not None):
    local('heroku run python manage.py migrate %s --remote %s' % (app, env.environment))
    else:
    local('heroku run python manage.py migrate --remote %s' % env.environment)


    def schemamigration(app):
    """fab schemamigration:[app]"""
    local('foreman run "python manage.py schemamigration %s --auto"' % app)


    def ps():
    """fab [environment] ps"""
    require('environment')
    local('heroku ps --remote %s' % env.environment)


    def open():
    """fab [environment] open"""
    require('environment')
    local('heroku open --remote %s' % env.environment)


    def development():
    """fab development [command]"""
    env.environment = 'development'


    def staging():
    """fab staging [command]"""
    env.environment = 'staging'


    def production():
    """fab production [command]"""
    env.environment = 'production'