from .db import connect, metadata
import pokedex.db.load
-from pokedex.lookup import lookup as pokedex_lookup
+import pokedex.lookup
def main():
if len(sys.argv) <= 1:
command = sys.argv[1]
args = sys.argv[2:]
+ # XXX there must be a better way to get Unicode argv
+ # XXX this doesn't work on Windows durp
+ enc = sys.stdin.encoding or 'utf8'
+ args = [_.decode(enc) for _ in args]
+
# Find the command as a function in this file
func = globals().get("command_%s" % command, None)
if func:
drop_tables=options.drop_tables,
verbose=options.verbose)
+def command_setup(*args):
+ session = connect()
+ pokedex.db.load.load(session, verbose=False, drop_tables=True)
+ pokedex.lookup.open_index(session=session, recreate=True)
-def command_lookup(engine_uri, name):
- # XXX don't require uri! somehow
- session = connect(engine_uri)
- results, exact = pokedex_lookup(session, name)
- if exact:
+def command_lookup(name):
+ results = pokedex.lookup.lookup(name)
+ if not results:
+ print "No matches."
+ elif results[0].exact:
print "Matched:"
else:
print "Fuzzy-matched:"
- for object in results:
- print object.__tablename__, object.name
+ for result in results:
+ if hasattr(result.object, 'full_name'):
+ name = result.object.full_name
+ else:
+ name = result.object.name
+
+ print "%s: %s" % (result.object.__tablename__, name),
+ if result.language:
+ print "(%s in %s)" % (result.name, result.language)
+ else:
+ print
def command_help():
System commands:
load Load Pokédex data into a database from CSV files.
dump Dump Pokédex data from a database into CSV files.
+ setup Loads Pokédex data into the right place and creates a
+ lookup index in the right place. No options or output.
+ This will blow away the default database and index!
Options:
-d|--directory By default, load and dump will use the CSV files in the