remove the hard-coded migration ID from setup.sh

This commit is contained in:
Joshua Tauberer 2014-07-10 12:49:19 +00:00
parent 41b3df6d78
commit 6f51b49671
2 changed files with 20 additions and 3 deletions

View File

@ -36,7 +36,16 @@ def migration_1(env):
except: except:
pass pass
if __name__ == "__main__": def get_current_migration():
ver = 0
while True:
next_ver = (ver + 1)
migration_func = globals().get("migration_%d" % next_ver)
if not migration_func:
return ver
ver = next_ver
def run_migrations():
if not os.access("/etc/mailinabox.conf", os.W_OK, effective_ids=True): if not os.access("/etc/mailinabox.conf", os.W_OK, effective_ids=True):
print("This script must be run as root.", file=sys.stderr) print("This script must be run as root.", file=sys.stderr)
sys.exit(1) sys.exit(1)
@ -75,3 +84,11 @@ if __name__ == "__main__":
# iterate and try next version... # iterate and try next version...
if __name__ == "__main__":
if sys.argv[-1] == "--current":
# Return the number of the highest migration.
print(str(get_current_migration()))
elif sys.argv[-1] == "--migrate":
# Perform migrations.
run_migrations()

View File

@ -30,7 +30,7 @@ fi
if [ -f /etc/mailinabox.conf ]; then if [ -f /etc/mailinabox.conf ]; then
# Run any system migrations before proceeding. Since this is a second run, # Run any system migrations before proceeding. Since this is a second run,
# we assume we have Python already installed. # we assume we have Python already installed.
setup/migrate.py setup/migrate.py --migrate
# Okay now load the old .conf file to get existing configuration options. # Okay now load the old .conf file to get existing configuration options.
cat /etc/mailinabox.conf | sed s/^/DEFAULT_/ > /tmp/mailinabox.prev.conf cat /etc/mailinabox.conf | sed s/^/DEFAULT_/ > /tmp/mailinabox.prev.conf
@ -38,7 +38,7 @@ if [ -f /etc/mailinabox.conf ]; then
MIGRATIONID=$DEFAULT_MIGRATIONID MIGRATIONID=$DEFAULT_MIGRATIONID
else else
# What migration are we at for new installs? # What migration are we at for new installs?
MIGRATIONID=1 MIGRATIONID=$(setup/migrate.py --current)
fi fi
# The box needs a name. # The box needs a name.