-
Notifications
You must be signed in to change notification settings - Fork 0
/
fabfile.py
126 lines (93 loc) · 3.03 KB
/
fabfile.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
from fabric.api import local, task
from edjango.common.utils import booleanize
from edjango.common.utils import discover_apps
import os
# Try to understand where we are
if not os.path.isfile('manage.py'):
if os.path.isfile('../../manage.py'):
os.chdir('../../')
else:
abort('Sorry, could not find fabfile. Are you in the root directory or in an app directory?')
# Set Python executable
PYTHON = os.environ.get('EDJANGO_PYTHON', 'python')
#--------------------
# Utility functions
#--------------------
def run(command):
local(command)
#--------------------
# Run
#--------------------
@task
def shell():
run('{} manage.py shell'.format(PYTHON))
@task
def runserver(noreload=False):
if isinstance(noreload,str) and noreload.upper()=='FALSE':
noreload=False
if noreload:
run('{} manage.py runserver 0.0.0.0:8080 --noreload'.format(PYTHON))
else:
run('{} manage.py runserver 0.0.0.0:8080'.format(PYTHON))
#-----------------------------
# Install
#-----------------------------
@task
def install(what=None, env="local", noinput=False):
if noinput:
run('{} manage.py makemigrations --noinput'.format(PYTHON))
run('{} manage.py migrate --noinput'.format(PYTHON))
else:
run('{} manage.py makemigrations'.format(PYTHON))
run('{} manage.py migrate'.format(PYTHON))
#-----------------------------
# Populate
#-----------------------------
@task
def populate(env="local"):
for app in discover_apps('edjango', only_names=True):
# Check if we have the populate:
populate_file = 'edjango/{}/management/commands/{}_populate.py'.format(app,app)
if os.path.isfile(populate_file):
print('Poulate found for {} and executing...'.format(app))
run('{} manage.py {}_populate'.format(PYTHON, app))
else:
print('No poulate found for {}... ({})'.format(app,populate_file))
#-----------------------------
# Custom management
#-----------------------------
@task
def management(app=None, command=None, env="local"):
if not app or not command:
raise Exception('app and command are required!')
run("{} manage.py {}_{}".format(PYTHON,app,command))
#-----------------------------
# Migrations
#-----------------------------
@task
def makemigrations(what=None, env="local", noinput=False):
if noinput:
run('{} manage.py makemigrations --noinput'.format(PYTHON))
else:
run('{} manage.py makemigrations'.format(PYTHON))
@task
def migrate(app=None, noinput=False):
if noinput:
run('{} manage.py migrate --noinput'.format(PYTHON))
else:
run('{} manage.py migrate'.format(PYTHON))
#-----------------------------
# Tests
#-----------------------------
@task
def test(what=None):
if what:
run('{} manage.py test {}'.format(PYTHON, what))
else:
run('{} manage.py test'.format(PYTHON))
#-----------------------------
# Deploy
#-----------------------------
@task
def collect():
run('{} manage.py collectstatic'.format(PYTHON))