Statistics
| Branch: | Tag: | Revision:

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)