# init command
from __future__ import unicode_literals

import os


from ..uis import get_ui
from .. import color
from ..repo import Repository
from ..content import system_path, check_directory
from .. import config


def parser(subparsers, conf):
    parser = subparsers.add_parser('init',
                                   help="initialize the pubs directory")
    parser.add_argument('-p', '--pubsdir', default=None,
                        help='directory where to put the pubs repository (if none, ~/.pubs is used)')
    parser.add_argument('-d', '--docsdir', default='docsdir://',
                        help=('path to document directory (if not specified, documents will'
                              'be stored in /path/to/pubsdir/doc/)'))
    return parser


def command(conf, args):
    """Create a .pubs directory"""

    ui = get_ui()
    pubsdir = args.pubsdir
    docsdir = args.docsdir

    if pubsdir is None:
        pubsdir = '~/.pubs'

    pubsdir = system_path(pubsdir)

    if check_directory(pubsdir, fail=False) and len(os.listdir(pubsdir)) > 0:
        ui.error('Directory {} is not empty.'.format(
            color.dye_err(pubsdir, 'filepath')))
        ui.exit()

    ui.message('Initializing pubs in {}'.format(color.dye_out(pubsdir, 'filepath')))

    conf['main']['pubsdir'] = pubsdir
    conf['main']['docsdir'] = docsdir
    conf['main']['open_cmd'] = config.default_open_cmd()
    conf = config.post_process_conf(conf)
    config.save_conf(conf)

    Repository(conf, create=True)