#!/usr/bin/env python
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# DUALIST command line script 

import os,sys

heapsize = '2000m'

mecab_options = ' -Ddualist.lang=ja -Djava.library.path=@prefix@/lib -Dfile.encoding=UTF-8'

# display logo
print >> sys.stderr, "~ "
print >> sys.stderr, "~     __               __ __         __   "
print >> sys.stderr, "~ .--|  |.--.--.---.-.|  |__|.-----.|  |_ "
print >> sys.stderr, "~ |  _  ||  |  |  _  ||  |  ||__ --||   _|"
print >> sys.stderr, "~ |_____||_____|___._||__|__||_____||____|"
print >> sys.stderr, "~ "

# determine command
if len(sys.argv) > 1:
    cmd = sys.argv[1]
    more_args = sys.argv[2:]
else:
    cmd = 'none'

# run the GUI webapp
if cmd == 'gui':
    os.system('play run gui -Xmx' + heapsize + mecab_options)
    sys.exit(0)

# run a standalone classifier from trained model
elif cmd == 'classify':
    if len(sys.argv) < 4:
        print >> sys.stderr, "~ At least two arguments are required:"
        print >> sys.stderr, "~     $ dualist classify [model] [documents...]"
        print >> sys.stderr, "~"
    else:
        os.system('java -Xmx' + heapsize + mecab_options + ' -cp gui/lib/dualist-core.jar dualist.tui.Classify ' + ' '.join(more_args))
        sys.exit(0)

# evaluate a trained classifier on a test set
elif cmd == 'test':
    if len(sys.argv) < 4:
        print >> sys.stderr, "~ Two arguments are required:"
        print >> sys.stderr, "~     $ dualist test [model] [test-set]"
        print >> sys.stderr, "~"
    else:
        os.system('java -Xmx' + heapsize + mecab_options + ' -cp gui/lib/dualist-core.jar dualist.tui.Test ' + ' '.join(more_args))
        sys.exit(0)

# help!
else:
    print >> sys.stderr, "~ Usage: dualist cmd [args]"
    print >> sys.stderr, "~"
    print >> sys.stderr, "~    gui          run the web-based annotation interface"
    print >> sys.stderr, "~    classify     classify text documents according to a trained model"
    print >> sys.stderr, "~    test         evaluate a trained model on a labeled test set"
    print >> sys.stderr, "~"
    if len(sys.argv) > 1:
        print >> sys.stderr, "~ Invalid command: %s" % sys.argv[1]
        print >> sys.stderr, "~"
    sys.exit(-1)
