codekingpro/portable-devtools
114k
1import click2from flask import g3from flask.cli import with_appcontext4from flask_migrate import list_templates as _list_templates5from flask_migrate import init as _init6from flask_migrate import revision as _revision7from flask_migrate import migrate as _migrate8from flask_migrate import edit as _edit9from flask_migrate import merge as _merge10from flask_migrate import upgrade as _upgrade11from flask_migrate import downgrade as _downgrade12from flask_migrate import show as _show13from flask_migrate import history as _history14from flask_migrate import heads as _heads15from flask_migrate import branches as _branches16from flask_migrate import current as _current17from flask_migrate import stamp as _stamp18from flask_migrate import check as _check19 20 21@click.group()22@click.option('-x', '--x-arg', multiple=True,23 help='Additional arguments consumed by custom env.py scripts')24@with_appcontext25def db(x_arg):26 """Perform database migrations."""27 g.x_arg = x_arg # these will be picked up by Migrate.get_config()28 29 30@db.command()31@with_appcontext32def list_templates():33 """List available templates."""34 _list_templates()35 36 37@db.command()38@click.option('-d', '--directory', default=None,39 help=('Migration script directory (default is "migrations")'))40@click.option('--multidb', is_flag=True,41 help=('Support multiple databases'))42@click.option('-t', '--template', default=None,43 help=('Repository template to use (default is "flask")'))44@click.option('--package', is_flag=True,45 help=('Write empty __init__.py files to the environment and '46 'version locations'))47@with_appcontext48def init(directory, multidb, template, package):49 """Creates a new migration repository."""50 _init(directory, multidb, template, package)51 52 53@db.command()54@click.option('-d', '--directory', default=None,55 help=('Migration script directory (default is "migrations")'))56@click.option('-m', '--message', default=None, help='Revision message')57@click.option('--autogenerate', is_flag=True,58 help=('Populate revision script with candidate migration '59 'operations, based on comparison of database to model'))60@click.option('--sql', is_flag=True,61 help=('Don\'t emit SQL to database - dump to standard output '62 'instead'))63@click.option('--head', default='head',64 help=('Specify head revision or <branchname>@head to base new '65 'revision on'))66@click.option('--splice', is_flag=True,67 help=('Allow a non-head revision as the "head" to splice onto'))68@click.option('--branch-label', default=None,69 help=('Specify a branch label to apply to the new revision'))70@click.option('--version-path', default=None,71 help=('Specify specific path from config for version file'))72@click.option('--rev-id', default=None,73 help=('Specify a hardcoded revision id instead of generating '74 'one'))75@with_appcontext76def revision(directory, message, autogenerate, sql, head, splice, branch_label,77 version_path, rev_id):78 """Create a new revision file."""79 _revision(directory, message, autogenerate, sql, head, splice,80 branch_label, version_path, rev_id)81 82 83@db.command()84@click.option('-d', '--directory', default=None,85 help=('Migration script directory (default is "migrations")'))86@click.option('-m', '--message', default=None, help='Revision message')87@click.option('--sql', is_flag=True,88 help=('Don\'t emit SQL to database - dump to standard output '89 'instead'))90@click.option('--head', default='head',91 help=('Specify head revision or <branchname>@head to base new '92 'revision on'))93@click.option('--splice', is_flag=True,94 help=('Allow a non-head revision as the "head" to splice onto'))95@click.option('--branch-label', default=None,96 help=('Specify a branch label to apply to the new revision'))97@click.option('--version-path', default=None,98 help=('Specify specific path from config for version file'))99@click.option('--rev-id', default=None,100 help=('Specify a hardcoded revision id instead of generating '101 'one'))102@click.option('-x', '--x-arg', multiple=True,103 help='Additional arguments consumed by custom env.py scripts')104@with_appcontext105def migrate(directory, message, sql, head, splice, branch_label, version_path,106 rev_id, x_arg):107 """Autogenerate a new revision file (Alias for108 'revision --autogenerate')"""109 _migrate(directory, message, sql, head, splice, branch_label, version_path,110 rev_id, x_arg)111 112 113@db.command()114@click.option('-d', '--directory', default=None,115 help=('Migration script directory (default is "migrations")'))116@click.argument('revision', default='head')117@with_appcontext118def edit(directory, revision):119 """Edit a revision file"""120 _edit(directory, revision)121 122 123@db.command()124@click.option('-d', '--directory', default=None,125 help=('Migration script directory (default is "migrations")'))126@click.option('-m', '--message', default=None, help='Merge revision message')127@click.option('--branch-label', default=None,128 help=('Specify a branch label to apply to the new revision'))129@click.option('--rev-id', default=None,130 help=('Specify a hardcoded revision id instead of generating '131 'one'))132@click.argument('revisions', nargs=-1)133@with_appcontext134def merge(directory, message, branch_label, rev_id, revisions):135 """Merge two revisions together, creating a new revision file"""136 _merge(directory, revisions, message, branch_label, rev_id)137 138 139@db.command()140@click.option('-d', '--directory', default=None,141 help=('Migration script directory (default is "migrations")'))142@click.option('--sql', is_flag=True,143 help=('Don\'t emit SQL to database - dump to standard output '144 'instead'))145@click.option('--tag', default=None,146 help=('Arbitrary "tag" name - can be used by custom env.py '147 'scripts'))148@click.option('-x', '--x-arg', multiple=True,149 help='Additional arguments consumed by custom env.py scripts')150@click.argument('revision', default='head')151@with_appcontext152def upgrade(directory, sql, tag, x_arg, revision):153 """Upgrade to a later version"""154 _upgrade(directory, revision, sql, tag, x_arg)155 156 157@db.command()158@click.option('-d', '--directory', default=None,159 help=('Migration script directory (default is "migrations")'))160@click.option('--sql', is_flag=True,161 help=('Don\'t emit SQL to database - dump to standard output '162 'instead'))163@click.option('--tag', default=None,164 help=('Arbitrary "tag" name - can be used by custom env.py '165 'scripts'))166@click.option('-x', '--x-arg', multiple=True,167 help='Additional arguments consumed by custom env.py scripts')168@click.argument('revision', default='-1')169@with_appcontext170def downgrade(directory, sql, tag, x_arg, revision):171 """Revert to a previous version"""172 _downgrade(directory, revision, sql, tag, x_arg)173 174 175@db.command()176@click.option('-d', '--directory', default=None,177 help=('Migration script directory (default is "migrations")'))178@click.argument('revision', default='head')179@with_appcontext180def show(directory, revision):181 """Show the revision denoted by the given symbol."""182 _show(directory, revision)183 184 185@db.command()186@click.option('-d', '--directory', default=None,187 help=('Migration script directory (default is "migrations")'))188@click.option('-r', '--rev-range', default=None,189 help='Specify a revision range; format is [start]:[end]')190@click.option('-v', '--verbose', is_flag=True, help='Use more verbose output')191@click.option('-i', '--indicate-current', is_flag=True,192 help=('Indicate current version (Alembic 0.9.9 or greater is '193 'required)'))194@with_appcontext195def history(directory, rev_range, verbose, indicate_current):196 """List changeset scripts in chronological order."""197 _history(directory, rev_range, verbose, indicate_current)198 199 200@db.command()201@click.option('-d', '--directory', default=None,202 help=('Migration script directory (default is "migrations")'))203@click.option('-v', '--verbose', is_flag=True, help='Use more verbose output')204@click.option('--resolve-dependencies', is_flag=True,205 help='Treat dependency versions as down revisions')206@with_appcontext207def heads(directory, verbose, resolve_dependencies):208 """Show current available heads in the script directory"""209 _heads(directory, verbose, resolve_dependencies)210 211 212@db.command()213@click.option('-d', '--directory', default=None,214 help=('Migration script directory (default is "migrations")'))215@click.option('-v', '--verbose', is_flag=True, help='Use more verbose output')216@with_appcontext217def branches(directory, verbose):218 """Show current branch points"""219 _branches(directory, verbose)220 221 222@db.command()223@click.option('-d', '--directory', default=None,224 help=('Migration script directory (default is "migrations")'))225@click.option('-v', '--verbose', is_flag=True, help='Use more verbose output')226@with_appcontext227def current(directory, verbose):228 """Display the current revision for each database."""229 _current(directory, verbose)230 231 232@db.command()233@click.option('-d', '--directory', default=None,234 help=('Migration script directory (default is "migrations")'))235@click.option('--sql', is_flag=True,236 help=('Don\'t emit SQL to database - dump to standard output '237 'instead'))238@click.option('--tag', default=None,239 help=('Arbitrary "tag" name - can be used by custom env.py '240 'scripts'))241@click.option('--purge', is_flag=True,242 help=('Delete the version in the alembic_version table before '243 'stamping'))244@click.argument('revision', default='head')245@with_appcontext246def stamp(directory, sql, tag, revision, purge):247 """'stamp' the revision table with the given revision; don't run any248 migrations"""249 _stamp(directory, revision, sql, tag, purge)250 251 252@db.command()253@click.option('-d', '--directory', default=None,254 help=('Migration script directory (default is "migrations")'))255@with_appcontext256def check(directory):257 """Check if there are any new operations to migrate"""258 _check(directory)259 