root / conf / ci / manage.py @ 1ad2fdbc
History | View | Annotate | Download (2 kB)
1 | b216cb77 | Georgios Gousios | #!/usr/bin/env python2.6
|
---|---|---|---|
2 | b216cb77 | Georgios Gousios | # -*- coding: utf-8 -*-
|
3 | b216cb77 | Georgios Gousios | from os import path |
4 | b216cb77 | Georgios Gousios | import shutil, sys, virtualenv, subprocess |
5 | b216cb77 | Georgios Gousios | |
6 | b216cb77 | Georgios Gousios | PROJECT_ROOT = path.abspath(path.dirname(__file__)) |
7 | b216cb77 | Georgios Gousios | REQUIREMENTS = path.join(PROJECT_ROOT, 'requirements.pip')
|
8 | b216cb77 | Georgios Gousios | |
9 | b216cb77 | Georgios Gousios | VE_ROOT = path.join(PROJECT_ROOT, '.ve')
|
10 | b216cb77 | Georgios Gousios | VE_TIMESTAMP = path.join(VE_ROOT, 'timestamp')
|
11 | b216cb77 | Georgios Gousios | |
12 | b216cb77 | Georgios Gousios | envtime = path.exists(VE_ROOT) and path.getmtime(VE_ROOT) or 0 |
13 | b216cb77 | Georgios Gousios | envreqs = path.exists(VE_TIMESTAMP) and path.getmtime(VE_TIMESTAMP) or 0 |
14 | b216cb77 | Georgios Gousios | envspec = path.getmtime(REQUIREMENTS) |
15 | b216cb77 | Georgios Gousios | |
16 | b216cb77 | Georgios Gousios | def go_to_ve(): |
17 | b216cb77 | Georgios Gousios | # going into ve
|
18 | b216cb77 | Georgios Gousios | if not sys.prefix == VE_ROOT: |
19 | b216cb77 | Georgios Gousios | if sys.platform == 'win32': |
20 | b216cb77 | Georgios Gousios | python = path.join(VE_ROOT, 'Scripts', 'python.exe') |
21 | b216cb77 | Georgios Gousios | else:
|
22 | b216cb77 | Georgios Gousios | python = path.join(VE_ROOT, 'bin', 'python') |
23 | b216cb77 | Georgios Gousios | |
24 | b216cb77 | Georgios Gousios | retcode = subprocess.call([python, __file__] + sys.argv[1:])
|
25 | b216cb77 | Georgios Gousios | sys.exit(retcode) |
26 | b216cb77 | Georgios Gousios | |
27 | b216cb77 | Georgios Gousios | update_ve = 'update_ve' in sys.argv |
28 | b216cb77 | Georgios Gousios | if update_ve or envtime < envspec or envreqs < envspec: |
29 | b216cb77 | Georgios Gousios | if update_ve:
|
30 | b216cb77 | Georgios Gousios | # install ve
|
31 | b216cb77 | Georgios Gousios | if envtime < envspec:
|
32 | b216cb77 | Georgios Gousios | if path.exists(VE_ROOT):
|
33 | b216cb77 | Georgios Gousios | shutil.rmtree(VE_ROOT) |
34 | b216cb77 | Georgios Gousios | virtualenv.logger = virtualenv.Logger(consumers=[]) |
35 | b216cb77 | Georgios Gousios | virtualenv.create_environment(VE_ROOT, site_packages=True)
|
36 | b216cb77 | Georgios Gousios | |
37 | b216cb77 | Georgios Gousios | go_to_ve() |
38 | b216cb77 | Georgios Gousios | |
39 | b216cb77 | Georgios Gousios | # check requirements
|
40 | b216cb77 | Georgios Gousios | if update_ve or envreqs < envspec: |
41 | b216cb77 | Georgios Gousios | import pip |
42 | b216cb77 | Georgios Gousios | pip.main(initial_args=['install', '-r', REQUIREMENTS]) |
43 | b216cb77 | Georgios Gousios | file(VE_TIMESTAMP, 'w').close() |
44 | b216cb77 | Georgios Gousios | sys.exit(0)
|
45 | b216cb77 | Georgios Gousios | else:
|
46 | b216cb77 | Georgios Gousios | print "VirtualEnv need to be updated" |
47 | b216cb77 | Georgios Gousios | print "Run ./manage.py update_ve" |
48 | b216cb77 | Georgios Gousios | sys.exit(1)
|
49 | b216cb77 | Georgios Gousios | |
50 | b216cb77 | Georgios Gousios | go_to_ve() |
51 | b216cb77 | Georgios Gousios | |
52 | b216cb77 | Georgios Gousios | # run django
|
53 | b216cb77 | Georgios Gousios | from django.core.management import execute_manager |
54 | b216cb77 | Georgios Gousios | try:
|
55 | b216cb77 | Georgios Gousios | import settings # Assumed to be in the same directory. |
56 | 1ad2fdbc | Georgios Gousios | import os |
57 | a7d2ae87 | Georgios Gousios | path = os.path.normpath(os.path.join(os.getcwd(), '..'))
|
58 | a7d2ae87 | Georgios Gousios | sys.path.append(path) |
59 | b216cb77 | Georgios Gousios | except ImportError: |
60 | b216cb77 | Georgios Gousios | import sys |
61 | b216cb77 | Georgios Gousios | sys.stderr.write("Error: Can't find the file 'settings.py' in the directory")
|
62 | b216cb77 | Georgios Gousios | sys.exit(1)
|
63 | b216cb77 | Georgios Gousios | |
64 | b216cb77 | Georgios Gousios | if __name__ == "__main__": |
65 | b216cb77 | Georgios Gousios | execute_manager(settings) |