diff options
Diffstat (limited to 'ganarchy.py')
-rwxr-xr-x | ganarchy.py | 49 |
1 files changed, 40 insertions, 9 deletions
diff --git a/ganarchy.py b/ganarchy.py index a5d68bc..8279681 100755 --- a/ganarchy.py +++ b/ganarchy.py @@ -66,6 +66,10 @@ TEMPLATE = """<!DOCTYPE html> </html> """ +MIGRATIONS = { + "test": ("-- apply", "-- revert", "does nothing") + } + try: data_home = os.environ['XDG_DATA_HOME'] except KeyError: @@ -170,19 +174,46 @@ def remove(url): conn.commit() conn.close() -@ganarchy.group() def migrations(): - """Modifies the DB to work with a newer/older version. + @ganarchy.group() + def migrations(): + """Modifies the DB to work with a newer/older version. + + WARNING: THIS COMMAND CAN BE EXTREMELY DESTRUCTIVE!""" + + @migrations.command() + @click.argument('migration') + def apply(migration): + """Applies the migration with the given name.""" + conn = sqlite3.connect(data_home + "/ganarchy.db") + c = conn.cursor() + click.echo(MIGRATIONS[migration][0]) + c.execute(MIGRATIONS[migration][0]) + conn.commit() + conn.close() - WARNING: THIS COMMAND CAN BE EXTREMELY DESTRUCTIVE!""" + @click.argument('migration') + @migrations.command() + def revert(migration): + """Reverts the migration with the given name.""" + conn = sqlite3.connect(data_home + "/ganarchy.db") + c = conn.cursor() + click.echo(MIGRATIONS[migration][1]) + c.execute(MIGRATIONS[migration][1]) + conn.commit() + conn.close() -@migrations.command() -def apply(): - """ NYI """ + @click.argument('migration', required=False) + @migrations.command() + def info(migration): + """Shows information about the migration with the given name.""" + if not migration: + # TODO could be improved + click.echo(MIGRATIONS.keys()) + else: + click.echo(MIGRATIONS[migration][2]) -@migrations.command() -def revert(): - """ NYI """ +migrations() @ganarchy.command() def cron_target(): |