def configure_role():
    print('\n\nROLE CONFIGURATION:\n===================')
    for folder_name, folder in folders.items():
        if read_user_yes_no(folder['question'], default_value=u'yes'):

            try:
                # this file has to be there, git doesn't store empty folders.
                os.remove(os.path.join(folder_name, '.empty'))
            except OSError:
                pass

            if 'hint' in folder:
                with open('{}/main.yml'.format(folder_name), 'a') as fp:

                    if 'pre_hint' in folder:
                        if read_user_yes_no(folder['pre_hint'], default_value=u'yes'):
                            fp.write(folder['pre_action'])
                        else:
                            continue

                    action_name = input(folder['hint'])
                    while action_name:
                        fp.write(folder['action'].format(action_name))
                        action_name = input(folder['hint'])

        else:
           shutil.rmtree(folder_name)
Пример #2
0
def configure_role():
    print('\n\nROLE CONFIGURATION:\n===================')
    for folder_name, folder in folders.items():
        if read_user_yes_no(folder['question'], default_value=u'yes'):

            try:
                # this file has to be there, git doesn't store empty folders.
                os.remove(os.path.join(folder_name, '.empty'))
            except OSError:
                pass

            if 'hint' in folder:
                with open('{}/main.yml'.format(folder_name), 'a') as fp:

                    if 'pre_hint' in folder:
                        if read_user_yes_no(folder['pre_hint'],
                                            default_value=u'yes'):  # NOQA
                            fp.write(folder['pre_action'])
                        else:
                            continue

                    action_name = input(folder['hint'])
                    while action_name:
                        fp.write(folder['action'].format(action_name))
                        action_name = input(folder['hint'])

        else:
            shutil.rmtree(folder_name)
Пример #3
0
def prompt_and_delete(path, no_input=False):
    """
    Ask user if it's okay to delete the previously-downloaded file/directory.

    If yes, delete it. If no, checks to see if the old version should be
    reused. If yes, it's reused; otherwise, Cookiecutter exits.

    :param path: Previously downloaded zipfile.
    :param no_input: Suppress prompt to delete repo and just delete it.
    :return: True if the content was deleted
    """
    # Suppress prompt if called via API
    if no_input:
        ok_to_delete = True
    else:
        question = ("You've downloaded {} before. "
                    "Is it okay to delete and re-download it?").format(path)

        ok_to_delete = read_user_yes_no(question, 'yes')

    if ok_to_delete:
        if os.path.isdir(path):
            rmtree(path)
        else:
            os.remove(path)
        return True
    else:
        ok_to_reuse = read_user_yes_no(
            "Do you want to re-use the existing version?", 'yes')

        if ok_to_reuse:
            return False

        sys.exit()
def configure_role():
    print('\n\nROLE CONFIGURATION:\n===================')
    for folder_name, folder in folders.items():
        if read_user_yes_no(folder['question'], default_value=u'yes'):

            # try:
            #     # this file has to be there, git doesn't store empty folders.
            #     os.remove(os.path.join(folder_name, '.empty'))
            # except OSError:
            #     pass

            if 'hint' in folder:
                file_name = folder['file_name']
                with open('{}/{}'.format(folder_name, file_name), 'a') as fp:

                    if 'pre_hint' in folder:
                        if read_user_yes_no(folder['pre_hint'], default_value=u'yes'):
                            fp.write(folder['pre_action'])
                        else:
                            continue

                    action_name = input(folder['hint'])
                    while action_name:
                        if folder_name == defaults_folder_name:
                            fp.write(ansible_role_name.replace('.', '_') + '_' + folder['action'].format(action_name))
                        else:
                            fp.write(folder['action'].format(action_name))
                        action_name = input(folder['hint'])

        else:
           shutil.rmtree(folder_name)
def configure_role():
    print('\n\nMODULE CONFIGURATION:\n=====================')
    if read_user_yes_no(components['awsconfig']['question'], 'Yes'):
        if 'fiename' in action:
            if 'append' in action:
                with open(action['filename'], 'a') as f:
                    f.write(action['append'])
def configure_role():
    print('\n\nMODULE CONFIGURATION:\n=====================')
    if read_user_yes_no(components['awsconfig']['question'], 'Yes'):
        if 'fiename' in action:
            if 'append' in action:
                with open(action['filename'], 'a') as f:
                    f.write(action['append'])
def test_click_invocation(mocker):
    prompt = mocker.patch("click.prompt")
    prompt.return_value = DEFAULT

    assert read_user_yes_no(QUESTION, DEFAULT) == DEFAULT

    click.prompt.assert_called_once_with(QUESTION,
                                         default=DEFAULT,
                                         type=click.BOOL)
Пример #8
0
def prompt_user():
    # Prompt user for input
    for key, value in defaults.items():
        if not key.startswith("_"):
            if isinstance(value, list):
                defaults[key] = prompt.read_user_choice(key, value)
            elif isinstance(value, str):
                defaults[key] = prompt.read_user_variable(key, value)
            # adjust defaults based on special conditions
            if key.endswith("import_type"):
                defaults["import"] = defaults["installed"][defaults[key]]
            elif key.endswith("import"):
                defaults["project_name"] = defaults[key]
                defaults["repository_name"] = (
                    defaults[key].replace(" ", "_") + "_Rainmeter_Skin"
                )
                # promt user to pick skin to load if importing an installed skin
                if (
                    defaults["import_type"] == "Skin"
                    and defaults["import"] != "Create a new skin"
                ):
                    # now ask the user which skin to load on-install
                    skin_configs = []
                    for dirpath, _, filenames in os.walk(
                        defaults["_skins_path"] + os.sep + defaults[key]
                    ):
                        for f in filenames:
                            if f.endswith(".ini"):
                                skin_configs.append(
                                    dirpath.replace(
                                        defaults["_skins_path"] + os.sep, "",
                                    )
                                    + os.sep
                                    + f
                                )
                    defaults["_load_skin"] = prompt.read_user_choice(
                        "skin to load", skin_configs
                    )
            elif key.endswith("project_name"):
                defaults["repository_name"] = (
                    defaults[key].replace(" ", "_") + "_Rainmeter_Skin"
                )
            elif key.endswith("req_windows_version"):
                defaults["req_windows_version"] = defaults["_windows_version_alias"][defaults[key]]
            elif key.endswith("req_rainmeter_version"):
                # restrict windows version based on rainmeter version
                if float(defaults[key][:3]) >= 4.0:
                    defaults["req_windows_version"].remove("Windows XP")
                    defaults["req_windows_version"].remove("Windows Vista")
    if vcs.is_vcs_installed("git"):
        print("git is installed")
        init_commit = prompt.read_user_yes_no("Create initial commit? (y/n)", "y")
        if isinstance(init_commit, str):
            init_commit = True if init_commit == "y" else False
        defaults["_init_commit"] = init_commit
Пример #9
0
def configure_role():
    print('\n\nROLE CONFIGURATION:\n===================')
    for folder_name, folder in folders.items():
        if read_user_yes_no(folder['question'], default_value=u'yes'):

            try:
                # this file has to be there, git doesn't store empty folders.
                os.remove(os.path.join(folder_name, '.empty'))
            except OSError:
                pass

            if 'hint' in folder:
                file_name = folder['file_name']
                with open('{}/{}'.format(folder_name, file_name), 'a') as fp:

                    if 'pre_hint' in folder:
                        if read_user_yes_no(folder['pre_hint'],
                                            default_value=u'yes'):
                            fp.write(folder['pre_action'])
                        else:
                            continue

                    action_name = input(folder['hint'])
                    while action_name:
                        if folder_name == defaults_folder_name:
                            fp.write(
                                ansible_role_name.replace('.', '_') + '_' +
                                folder['action'].format(action_name))
                        elif folder_name == integration_test_folder_name:
                            role_data = action_name.split(':')
                            if len(role_data) != 2:
                                raise ValueError(
                                    'Cannot parse requirement: {}'.format(
                                        action_name))
                            fp.write(folder['action'].format(
                                role_data[0], role_data[1]))
                        else:
                            fp.write(folder['action'].format(action_name))
                        action_name = input(folder['hint'])

        else:
            shutil.rmtree(folder_name)
Пример #10
0
def test_click_invocation(mocker):
    prompt = mocker.patch('click.prompt')
    prompt.return_value = DEFAULT

    assert read_user_yes_no(QUESTION, DEFAULT) == DEFAULT

    click.prompt.assert_called_once_with(
        QUESTION,
        default=DEFAULT,
        type=click.BOOL
    )
def test_click_invocation(mocker):
    """Test click function called correctly by cookiecutter.

    Test for boolean type invocation.
    """
    prompt = mocker.patch('click.prompt')
    prompt.return_value = DEFAULT

    assert read_user_yes_no(QUESTION, DEFAULT) == DEFAULT

    click.prompt.assert_called_once_with(QUESTION,
                                         default=DEFAULT,
                                         type=click.BOOL)
Пример #12
0
def check_remote_repository_updates():
    template_dir = '{{ cookiecutter._template }}'
    if not is_git_repository(template_dir):
        print(
            "Template dir is not absolute dir or not Git repo; skipping freshness check"
        )
        return

    print('Template dir:', template_dir)
    print('Checking for latest template version via git')
    subprocess.call(["git", "fetch"], cwd=template_dir)
    print('')

    # Warn user if the version of the template that's being used is not the latest available
    local_sha = subprocess.check_output(["git", "rev-parse", "@"],
                                        cwd=template_dir).decode().strip()
    local_branch = subprocess.check_output(
        ["git", "rev-parse", "--abbrev-ref", "@"],
        cwd=template_dir).decode().strip()
    if local_branch == 'HEAD':
        remote_branch = 'master'  # default to master
    else:
        remote_branch = local_branch

    try:
        remote_sha = subprocess.check_output(
            ["git", "rev-parse", "origin/{}".format(remote_branch)],
            cwd=template_dir).decode().strip()

    except subprocess.CalledProcessError:
        # The branch is probably not pushed
        remote_sha = None

    # Print out the template version info
    print('local commit: {}; branch: {}'.format(local_sha, local_branch))
    print('remote commit: {}; branch: {}'.format(remote_sha, remote_branch))
    print()

    if local_sha != remote_sha:
        if not read_user_yes_no(
                'The template version you are using is not the latest available, are you sure you want to continue?',
                default_value='yes'):
            print("Bye!")
            sys.exit(1)
def check_remote_repository_updates():
    template_dir = '{{ cookiecutter._template }}'
    if not is_git_repository(template_dir):
        print("Template dir is not absolute dir or not Git repo; skipping freshness check")
        return

    print('Template dir:', template_dir)
    print('Checking for latest template version via git')
    subprocess.call(["git", "fetch"], cwd=template_dir)
    print('')

    # Warn user if the version of the template that's being used is not the latest available
    local_sha = subprocess.check_output(["git", "rev-parse", "@"], cwd=template_dir).decode().strip()
    local_branch = subprocess.check_output(["git", "rev-parse", "--abbrev-ref", "@"], cwd=template_dir).decode().strip()
    if local_branch == 'HEAD':
        remote_branch = 'master'  # default to master
    else:
        remote_branch = local_branch

    try:
        remote_sha = subprocess.check_output(["git", "rev-parse", "origin/{}".format(remote_branch)], cwd=template_dir).decode().strip()

    except subprocess.CalledProcessError:
        # The branch is probably not pushed
        remote_sha = None

    # Print out the template version info
    print('local commit: {}; branch: {}'.format(local_sha, local_branch))
    print('remote commit: {}; branch: {}'.format(remote_sha, remote_branch))
    print()

    if local_sha != remote_sha:
        if not read_user_yes_no(
                'The template version you are using is not the latest available, are you sure you want to continue?',
                default_value='yes'):
            print("Bye!")
            sys.exit(1)