mirror of
https://github.com/nikdoof/pacmanager.git
synced 2025-12-11 14:42:16 +00:00
Added basic fabric file
This commit is contained in:
71
fabfile.py
vendored
Normal file
71
fabfile.py
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
from __future__ import with_statement
|
||||
import os.path
|
||||
from fabric.api import lcd, cd, run, require, prefix, env, task, local
|
||||
from fabric.contrib.files import exists
|
||||
from fabric.utils import warn
|
||||
from contextlib import contextmanager as _contextmanager
|
||||
|
||||
env.shell = '/bin/bash -l -c'
|
||||
env.repo = 'git@github.com:nikdoof/pacmanager.git'
|
||||
env.local = True
|
||||
env.managepath = 'pacmanager/manage.py'
|
||||
env.path = os.path.dirname(__file__)
|
||||
|
||||
## Envs
|
||||
|
||||
@task
|
||||
def production(alias='prod'):
|
||||
env.hosts = ['dreddit@web1.pleaseignore.com']
|
||||
env.path = '/home/dreddit/apps/pacmanager'
|
||||
env.local = False
|
||||
|
||||
## Common Functions
|
||||
|
||||
def runcmd(*args, **kwargs):
|
||||
if env.local:
|
||||
return local(*args, **kwargs)
|
||||
else:
|
||||
return run(*args, **kwargs)
|
||||
|
||||
@_contextmanager
|
||||
def chdir(path):
|
||||
if env.local:
|
||||
with lcd(path):
|
||||
yield
|
||||
with cd(path):
|
||||
yield
|
||||
|
||||
@_contextmanager
|
||||
def virtualenv():
|
||||
with chdir(env.path):
|
||||
with prefix('. %s' % os.path.join(env.path, 'env/bin/activate')):
|
||||
yield
|
||||
|
||||
def manage(args):
|
||||
"""Run and Django manage.py command"""
|
||||
with virtualenv():
|
||||
runcmd('%s %s' % (env.managepath, args))
|
||||
|
||||
## Tasks
|
||||
|
||||
@task
|
||||
def virtualenv_setup():
|
||||
if not os.path.exists('env'):
|
||||
runcmd('virtualenv env')
|
||||
with virtualenv():
|
||||
runcmd('pip install -r requirements.txt')
|
||||
|
||||
@task
|
||||
def runserver(port=3333):
|
||||
if not os.path.exists('pacmanager.db'):
|
||||
warn('No pacmanager.db found, have you syncdb?')
|
||||
ip = runcmd("""ip addr list eth0 |grep "inet " |cut -d' ' -f6|cut -d/ -f1""", capture=True)
|
||||
manage('runserver %s:%s' % (ip, port))
|
||||
|
||||
@task
|
||||
def syncdb():
|
||||
manage('syncdb --migrate --noinput')
|
||||
|
||||
@task
|
||||
def test():
|
||||
manage('test --noinput --failfast')
|
||||
Reference in New Issue
Block a user