etiquette/frontends/etiquette_repl.py

70 lines
1.8 KiB
Python
Raw Normal View History

2017-11-12 05:40:18 +00:00
import argparse
2020-02-19 21:15:03 +00:00
import code
2016-10-30 01:46:23 +00:00
import sys
2017-11-12 05:40:18 +00:00
import traceback
from voussoirkit import interactive
from voussoirkit import pathclass
from voussoirkit import pipeable
2020-11-09 04:20:04 +00:00
from voussoirkit import vlogging
2017-11-12 05:40:18 +00:00
import etiquette
2016-09-18 08:33:46 +00:00
def easytagger():
while True:
i = input('> ')
if i.startswith('?'):
i = i.split('?')[1] or None
try:
etiquette.tag_export.stdout([P.get_tag(name=i)])
except Exception:
2016-09-18 08:33:46 +00:00
traceback.print_exc()
2016-10-18 05:13:12 +00:00
else:
P.easybake(i)
2016-09-18 08:33:46 +00:00
def photag(photo_id):
photo = P.get_photo_by_id(photo_id)
2018-02-17 07:07:21 +00:00
print(photo.get_tags())
2016-09-18 08:33:46 +00:00
while True:
photo.add_tag(input('> '))
2017-11-12 05:40:18 +00:00
2020-02-19 21:15:03 +00:00
################################################################################
2017-11-12 05:40:18 +00:00
def erepl_argparse(args):
global P
try:
2021-09-16 05:42:13 +00:00
P = etiquette.photodb.PhotoDB.closest_photodb(pathclass.cwd())
except etiquette.exceptions.NoClosestPhotoDB as exc:
pipeable.stderr(exc.error_message)
pipeable.stderr('Try `etiquette_cli.py init` to create the database.')
return 1
2017-11-12 05:40:18 +00:00
if args.exec_statement:
exec(args.exec_statement)
P.commit()
2020-02-19 21:15:03 +00:00
else:
while True:
try:
code.interact(banner='', local=dict(globals(), **locals()))
except SystemExit:
pass
if len(P.savepoints) == 0:
break
print('You have uncommited changes, are you sure you want to quit?')
if interactive.getpermission():
break
2017-11-12 05:40:18 +00:00
2021-09-16 05:42:13 +00:00
@vlogging.main_decorator
2017-11-12 05:40:18 +00:00
def main(argv):
parser = argparse.ArgumentParser()
parser.add_argument('--exec', dest='exec_statement', default=None)
parser.set_defaults(func=erepl_argparse)
args = parser.parse_args(argv)
return args.func(args)
2017-11-12 05:40:18 +00:00
if __name__ == '__main__':
raise SystemExit(main(sys.argv[1:]))