cook ie cutter: какой самый простой способ указать переменные для подсказок - PullRequest
0 голосов
/ 28 февраля 2020

Есть ли что-нибудь, что предлагает функциональность типа воспроизведения, указывая на предопределенный файл приглашения-ответа?

Что работает и чего я хотел бы достичь.

Давайте рассмотрим пример , используя cookiecutter для подготовки пакета Python для pypi

cookiecutter https://github.com/audreyr/cookiecutter-pypackage.git

You've downloaded /Users/jluc/.cookiecutters/cookiecutter-pypackage before. Is it okay to delete and re-download it? [yes]:
full_name [Audrey Roy Greenfeld]: Spartacus  ? constant for me/my organization
email [audreyr@example.com]: spartacus@example.com ? constant for me/my organization
...
project_name [Python Boilerplate]: GladiatorRevolt ? this will vary.
project_slug [q]: gladiator-revolt ? this too
...

OK, готово.

Теперь я могу легко переделать это, для этот проект, через:

cookiecutter https://github.com/audreyr/cookiecutter-pypackage.git --replay

Это здорово!

Что я хочу:

Скажите, что я создаю другой проект, UnleashHell .

Я хочу как-то подготовить файл, который содержит информацию об уровне проекта и для Unlea sh. И я хочу иметь возможность запускать его несколько раз для этого шаблона, не имея дело с подсказками. Этот конкретный шаблон pypi получает регулярные обновления, например, поддержка python 2.7 была прекращена.

Проблема:

A --replay просто внедрит последний запуск для этого шаблона cookiecutter. Если он был запущен для другого проекта pypi, то слишком плохо.

Я хорошо разбираюсь в информации на уровне разработчика, но мне нужно изменить всю информацию на уровне проекта.

Я попытался скопировать файл воспроизведения через:

cp ~/.cookiecutter_replay/cookiecutter-pypackage.json unleash.json

Редактировать unleash.json, чтобы отразить необходимые изменения.

Затем указать его с помощью --config-file flag

cookiecutter https://github.com/audreyr/cookiecutter-pypackage.git --config-file unleash.json

Я получаю ужасную ошибку, она хочет YAML, по-видимому.

cookiecutter.exceptions.InvalidConfiguration: Unable to parse YAML file .../000.packaging/unleash.json. Error: None of the known patterns match for {
    "cookiecutter": {
        "full_name": "Spartacus",

Нет проблем, json2yaml на помощь.

Это тоже не работает.

cookiecutter.exceptions.InvalidConfiguration: Unable to parse YAML file ./cookie.yaml. Error: Unable to determine type for "
    full_name: "Spartacus"

Я также пытался перенаправить < stdin:

cookiecutter.prompts.txt :

yes
Spartacus
...

Кажется, он его не использует, а просто прерывает.

cookiecutter https://github.com/audreyr/cookiecutter-pypackage.git < ./cookiecutter.prompts.txt
You've downloaded ~/.cookiecutters/cookiecutter-pypackage before. Is it okay to delete and re-download it? [yes]
: full_name [Audrey Roy Greenfeld]
: email [audreyr@example.com]
: Aborted

Я подозреваю, что упускаю что-то очевидное, не знаю, что именно. Для начала, какое намерение и формат ожидается для файла --config?

1 Ответ

1 голос
/ 28 марта 2020

Вы находитесь рядом.

Попробуйте это cookiecutter https://github.com/audreyr/cookiecutter-pypackage.git --no-input --config-file config.yaml

Параметр --no-input будет подавлять пользовательский ввод терминала, конечно, это необязательно.

Конфигурация Файл .yaml может выглядеть следующим образом:

default_context:
    full_name: "Audrey Roy"
    email: "audreyr@example.com"
    github_username: "audreyr"
cookiecutters_dir: "/home/audreyr/my-custom-cookiecutters-dir/"
replay_dir: "/home/audreyr/my-custom-replay-dir/"
abbreviations:
    pp: https://github.com/audreyr/cookiecutter-pypackage.git
    gh: https://github.com/{0}.git
    bb: https://bitbucket.org/{0}

Ссылка на файл этого примера: https://cookiecutter.readthedocs.io/en/1.7.0/advanced/user_config.html

Возможно, вам просто нужен блок default_context, поскольку это куда идет пользовательский ввод.

...