mirror of
https://github.com/veekun/pokedex.git
synced 2024-08-20 18:16:34 +00:00
16072ceb44
The setup command loads the default data into a default location, then creates a whoosh index in a default location. get_index is now open_index and can be made to explicitly recreate the index. It also actually opens the index if it already existed, even across processes, now that FileStorage is working. The lookup command takes no switches for aiming at a different database; it only uses the default data stores.
93 lines
3.3 KiB
Python
93 lines
3.3 KiB
Python
# encoding: utf8
|
|
from optparse import OptionParser
|
|
import sys
|
|
|
|
from .db import connect, metadata
|
|
import pokedex.db.load
|
|
import pokedex.lookup
|
|
|
|
def main():
|
|
if len(sys.argv) <= 1:
|
|
command_help()
|
|
|
|
command = sys.argv[1]
|
|
args = sys.argv[2:]
|
|
|
|
# Find the command as a function in this file
|
|
func = globals().get("command_%s" % command, None)
|
|
if func:
|
|
func(*args)
|
|
else:
|
|
command_help()
|
|
|
|
|
|
def command_dump(*args):
|
|
parser = OptionParser()
|
|
parser.add_option('-e', '--engine', dest='engine_uri', default=None)
|
|
parser.add_option('-d', '--directory', dest='directory', default=None)
|
|
parser.add_option('-q', '--quiet', dest='verbose', default=True, action='store_false')
|
|
options, _ = parser.parse_args(list(args))
|
|
|
|
session = connect(options.engine_uri)
|
|
pokedex.db.load.dump(session, directory=options.directory,
|
|
verbose=options.verbose)
|
|
|
|
def command_load(*args):
|
|
parser = OptionParser()
|
|
parser.add_option('-e', '--engine', dest='engine_uri', default=None)
|
|
parser.add_option('-d', '--directory', dest='directory', default=None)
|
|
parser.add_option('-D', '--drop-tables', dest='drop_tables', default=False, action='store_true')
|
|
parser.add_option('-q', '--quiet', dest='verbose', default=True, action='store_false')
|
|
options, _ = parser.parse_args(list(args))
|
|
|
|
session = connect(options.engine_uri)
|
|
|
|
pokedex.db.load.load(session, directory=options.directory,
|
|
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(name):
|
|
results, exact = pokedex.lookup.lookup(name)
|
|
if exact:
|
|
print "Matched:"
|
|
else:
|
|
print "Fuzzy-matched:"
|
|
|
|
for object in results:
|
|
print object.__tablename__, object.name
|
|
|
|
|
|
def command_help():
|
|
print u"""pokedex -- a command-line Pokédex interface
|
|
usage: pokedex {command} [options...]
|
|
Run `pokedex setup` first, or nothing will work!
|
|
|
|
Commands:
|
|
help Displays this message.
|
|
lookup [thing] Look up something in the Pokédex.
|
|
|
|
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
|
|
pokedex install directory. Use this option to specify
|
|
a different directory.
|
|
-D|--drop-tables With load, drop all tables before loading data.
|
|
-e|--engine=URI By default, all commands try to use a SQLite database
|
|
in the pokedex install directory. Use this option to
|
|
specify an alternate database.
|
|
-q|--quiet Turn off any unnecessary status output from dump/load.
|
|
""".encode(sys.getdefaultencoding(), 'replace')
|
|
|
|
sys.exit(0)
|