#!/usr/bin/python3
import sys
import argparse
import logging

log = logging.getLogger("ssite")


def main():
    parser = argparse.ArgumentParser(description="Static site generator.")
    subparsers = parser.add_subparsers(help="sub-command help", dest="command")

    from staticsite.cmd.check import Check
    Check.make_subparser(subparsers)

    from staticsite.cmd.dump_meta import DumpMeta
    DumpMeta.make_subparser(subparsers)

    from staticsite.cmd.build import Build
    Build.make_subparser(subparsers)

    from staticsite.cmd.serve import Serve, Show
    Show.make_subparser(subparsers)
    Serve.make_subparser(subparsers)

    from staticsite.cmd.new import New
    New.make_subparser(subparsers)

    from staticsite.cmd.edit import Edit
    Edit.make_subparser(subparsers)

    from staticsite.cmd.site import Site
    Site.make_subparser(subparsers)

    from staticsite.cmd.meta import Meta
    Meta.make_subparser(subparsers)

    from staticsite.cmd.shell import Shell
    Shell.make_subparser(subparsers)

    args = parser.parse_args()
    if args.command is None:
        parser.print_help()
    else:
        handler = args.handler(args)
        res = handler.run()
        if res is not None:
            sys.exit(res)


if __name__ == "__main__":
    from staticsite.cmd.command import Fail, Success
    try:
        main()
    except Fail as e:
        print(e, file=sys.stderr)
        sys.exit(1)
    except Success:
        pass
