#!/usr/bin/env python

import os
import sys
import kanboard_gitlab
from gettext import bindtextdomain, textdomain, gettext as _
from envparse import env
from kanboard_gitlab.importer import GitlabImporter


def checkenv(var):
    if not env(var, default=None):
        print(_('- Missing environment variable: {}').format(var))
        return False
    return True


def main():
    path = os.path.join(os.path.dirname(kanboard_gitlab.__file__), 'locale')
    bindtextdomain('kanboard-gitlab', path)
    textdomain('kanboard-gitlab')

    # TODO: Better support for configuring international labels and columns
    labels = {
        'To Do': _('Ready'),
        'Doing': _('Work in progress'),
    }

    # Requirements
    if [v for v in (
        'GITLAB_ENDPOINT',
        'GITLAB_TOKEN',
        'KANBOARD_ENDPOINT',
        'KANBOARD_TOKEN',
    ) if not checkenv(v)]:
        print(_('Please, configure environment variable(s) to continue...'))
        sys.exit(1)

    if len(sys.argv) < 2:
        print(_('kanboard-gitlab version {}').format(kanboard_gitlab.version))
        print()
        print(_('Please inform namespace and project name from gitlab:'))
        print(_('{} namespace/project').format(os.path.basename(sys.argv[0])))
        sys.exit(2)

    importer = GitlabImporter(labels)
    importer.setup_gitlab(env('GITLAB_ENDPOINT'), env('GITLAB_TOKEN'))
    importer.setup_kanboard(
        env('KANBOARD_ENDPOINT'),
        env('KANBOARD_USER', default='jsonrpc'),
        env('KANBOARD_TOKEN'),
    )
    importer.connect()
    importer.migrate(*sys.argv[1].split('/'))


if __name__ == '__main__':
    main()
