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:
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):
print("This script must be run as root.", file=sys.stderr)
sys.exit(1)
@ -75,3 +84,11 @@ if __name__ == "__main__":
# 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
# Run any system migrations before proceeding. Since this is a second run,
# 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.
cat /etc/mailinabox.conf | sed s/^/DEFAULT_/ > /tmp/mailinabox.prev.conf
@ -38,7 +38,7 @@ if [ -f /etc/mailinabox.conf ]; then
MIGRATIONID=$DEFAULT_MIGRATIONID
else
# What migration are we at for new installs?
MIGRATIONID=1
MIGRATIONID=$(setup/migrate.py --current)
fi
# The box needs a name.