# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this,
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

from __future__ import print_function, unicode_literals

import os
import sys

from mach.decorators import (
    CommandProvider,
    Command,
)


@CommandProvider
class VersionControlCommands(object):
    def __init__(self, context):
        self._context = context

    @Command('mercurial-setup', category='devenv',
        description='Help configure Mercurial for optimal development.')
    def mercurial_bootstrap(self):
        sys.path.append(os.path.dirname(__file__))

        from hgsetup.wizard import MercurialSetupWizard

        wizard = MercurialSetupWizard(self._context.state_dir)
        config_paths = ['~/.hgrc']
        if sys.platform in ('win32', 'cygwin'):
          config_paths.insert(0, '~/mercurial.ini')
        result = wizard.run(map(os.path.expanduser, config_paths))

        # Touch a file so we can periodically prompt to update extensions.
        state_path = os.path.join(self._context.state_dir,
            'mercurial/setup.lastcheck')
        with open(state_path, 'a'):
            os.utime(state_path, None)

        return result
