# Source code for watchme.command.create

    '''

    Copyright (C) 2019 Vanessa Sochat.

    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 watchme.utils import ( run_command, mkdir_p )
    from watchme.defaults import (
        WATCHME_WATCHER,
        WATCHME_BASE_DIR
    )
    from watchme.logger import bot
    from watchme.config import generate_watcher_config
    import os

    def create_watcher(name=None, watcher_type=None, base=None):
        '''create a watcher, meaning a folder with a configuration and
           initialized git repo.

           Parameters
           ==========
           name: the watcher to create, uses default or WATCHME_WATCHER
           watcher_type: the type of watcher to create. defaults to
                         WATCHER_DEFAULT_TYPE
            base: The watcher base to use (defaults to $HOME/.watchme)
        '''
        if name is None:
            name = WATCHME_WATCHER

        if base is None:
            base = WATCHME_BASE_DIR

        # Create the repository folder
        repo = os.path.join(base, name)

        if not os.path.exists(repo):

            bot.info('Adding watcher %s...' % repo)
            mkdir_p(repo)

            # Ensure no gpg signing happens
            run_command("git --git-dir=%s/.git init" % repo)
            run_command("git --git-dir=%s/.git config commit.gpgsign false" % repo)

            # Add the watcher configuration file
            generate_watcher_config(repo, watcher_type)
            run_command("git -C %s add watchme.cfg" % repo)
            return repo

        else:
            bot.info('%s already exists: %s' % (name, repo))

    def create_watcher_base(name=None, base=None):
        '''create a watch base and default repo, if it doesn't already exist.

           Parameters
           ==========
           name: the watcher to create, uses default or WATCHME_WATCHER
           base: the watcher base, defaults to WATCHME_BASE_DIR
        '''
        if base is None:
            base = WATCHME_BASE_DIR

        if name is None:
            name = WATCHME_WATCHER

        if not os.path.exists(base):
            bot.info('Creating %s...' % base)
            mkdir_p(base)