importclickimportosimportsubprocessfromnatsortimportnatsortedGET_MIGRATIONS=['psql','{db}','-c','SELECT patch FROM meta_data','-tA']RUN_MIGRATION=['psql','{db}','-f','{filename}']defsubstitute(args,values={}):new_args=[]fortinargs:new_args.append(t.format(**values))returnnew_args@click.command()@click.argument('db')@click.option('--user')defmain(db,user=None):ifuser:user=['-U',user]GET_MIGRATIONS.extend(user)RUN_MIGRATION.extend(user)cmd=subprocess.run(substitute(GET_MIGRATIONS,{'db':db}),stdout=subprocess.PIPE)loaded={x.decode()forxincmd.stdout.splitlines()}available=set(os.listdir())-{__file__}to_run=natsorted(available-loaded)forfilenameinto_run:click.echo(subprocess.run(substitute(RUN_MIGRATION,{'db':db,'filename':filename}),stdout=subprocess.PIPE).stdout)main()
Comments (0)
HTTPSSSH
You can clone a snippet to your computer for local editing.
Learn more.