from allmydata.util import pkgresutil # override the pkg_resources zip provider for py2app deployment
pkgresutil.install() # this is done before nevow is imported by depends
import depends # import dependencies so that py2exe finds them
_junk = depends # appease pyflakes

import sys

from twisted.python import usage

class ReplOptions(usage.Options):
    pass

def repl(config, stdout, stderr):
    import code
    return code.interact()

class DbgRunnerExtension(object):
    subCommands = [
        ["dbgrepl", None, ReplOptions, "Open a python interpreter"],
        ]
    dispatch = {
        "dbgrepl": repl,
        }

class FuseOptions(usage.Options):
    def parseOptions(self, args):
        self.args = args

def fuse(config, stdout, stderr):
    import tahoefuse
    tahoefuse.main(config.args)

class FuseRunnerExtension(object):
    subCommands = [
        ["fuse", None, FuseOptions, "Mount a filesystem via fuse"],
        ]
    dispatch = {
        "fuse": fuse,
        }

def main(argv):
    if len(argv) == 1:
        # then we were given no args; do default mac node startup
        from allmydata.gui.macapp import run_macapp
        sys.exit(run_macapp())
    else:
        # given any cmd line args, do 'tahoe' cli behaviour
        from allmydata.scripts import runner
        #runner_extensions = [DbgRunnerExtension, FuseRunnerExtension, ]
        runner_extensions = [FuseRunnerExtension, ]
        sys.exit(runner.runner(argv[1:],
                               install_node_control=False,
                               additional_commands=runner_extensions,
                               ))

if __name__ == '__main__':
    main(sys.argv)