aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'master/setup-master.py')
-rwxr-xr-xmaster/setup-master.py43
1 files changed, 29 insertions, 14 deletions
diff --git a/master/setup-master.py b/master/setup-master.py
index e74931e..78e73e7 100755
--- a/master/setup-master.py
+++ b/master/setup-master.py
@@ -6,6 +6,7 @@
#
# Immortal lh!
#
+# FIXME: This is so fucking ugly.
import sys, os, shutil
try:
@@ -22,6 +23,7 @@ if os.environ.has_key('PYTHONPATH'):
DESTDIR = 'autotua_master'
SYMLINKS = True
+srcdir = None
def print_help():
print \
@@ -150,34 +152,47 @@ def setup_sample_job():
job.slaves.add(Slave.objects.get(name=sample_job['slave']))
job.save()
+def setup_dirs(dir):
+ """This must be called before doing anything else."""
+ # cd to setup-master.py location
+ os.chdir(os.path.dirname(sys.argv[0]))
+ # Store the current directory
+ # We cd and store to work around relative invocations
+ global srcdir
+ srcdir = os.getcwd()
+
+ if not os.path.isdir(dir):
+ os.makedirs(dir)
+ os.chdir(dir)
+ sys.path.append(os.getcwd())
+
+ # Add cwd+/custom
+ sys.path.append(srcdir+'/custom')
+
### Start Work ###
if len(sys.argv) < 3:
print_help()
sys.exit(1)
-# cd to setup-master.py location
-os.chdir(os.path.dirname(sys.argv[0]))
-# Store the current directory
-# We cd and store to work around relative invocations
-srcdir = os.getcwd()
-if not os.path.isdir(sys.argv[2]):
- os.makedirs(sys.argv[2])
-os.chdir(sys.argv[2])
-
if management.get_version() < '0.99':
print "You need django-1.0 to use this."
sys.exit(1)
-sys.path.append(os.getcwd())
-# Add cwd+/custom
-sys.path.append(srcdir+'/custom')
-
if sys.argv[1] == 'install':
+ if sys.argv[2] == '--final':
+ where = os.path.dirname(sys.argv[3].rstrip('/'))
+ DESTDIR = os.path.basename(sys.argv[3].rstrip('/'))
+ elif sys.argv[1] == 'install':
+ where = os.path.dirname(sys.argv[2].rstrip('/'))
+ setup_dirs(where)
install_master()
print """Setup done.
Now you need to edit the database settings in %(dest)s/settings.py
-and run `./setup-master.py syncdb %(dest)s`""" % { 'dest': os.path.join(sys.argv[2], DESTDIR) }
+and run `./setup-master.py syncdb %(dest)s`""" % { 'dest': os.path.join(where, DESTDIR) }
elif sys.argv[1] == 'syncdb':
+ # Setup the relevant directories
+ where = os.path.dirname(sys.argv[2].rstrip('/'))
+ setup_dirs(where)
# Import stuff
import settings
from django.core.management import setup_environ