#code-duplication #chocolatey
#дублирование кода #шоколадный
Вопрос:
Введение
В шоколадный пакет добавлено несколько функций.
Эти функции хотелось бы применить и к другим шоколадным пакетам.
Это можно сделать, скопировав функции для каждого из них. Однако, если определенная функция будет оптимизирована, эти изменения необходимо скопировать во все пакеты.
Вопрос
Как избежать дублирования кода в шоколадных пакетах?
Ответ №1:
У меня есть несколько предложений относительно того, как вы могли бы поступить с этим…
- (Вероятно, тот, который займет больше времени из-за зависимости от других людей) Если эти функции можно использовать повторно, самостоятельно и другими людьми, я бы предложил отправить запрос на извлечение в ядро Chocolatey, чтобы добавить эти функции в Chocolatey. Таким образом, все получают выгоду.
- Разделите функции в отдельный файл, а затем поместите их в создаваемые вами шоколадные пакеты. В вашем репозитории системы управления версиями сохраните файл в общем месте, а затем добавьте его в каждый пакет Chocolatey, который требуется.
- Далее выполните рефакторинг извлеченного файла .ps1, чтобы он запускался как созданный вами модуль. Создайте шоколадный пакет, в котором все, что он делает, это развертывает модуль PowerShell (есть несколько примеров выполнения этого на Chocolatey.org — кричите, если вы его не найдете). Затем в вашем пакете Chocolatey, которому требуются функции, экспортируемые этим модулем, определите зависимость от нового пакета Chocolatey, а затем просто импортируйте-module в потребляющий пакет Chocolatey.
- Малоизвестные расширения. Посмотрите на этот пакет: http://chocolatey.org/packages/Devbox-Common.extension
Надеюсь, это имеет смысл и поможет!
Гэри
Комментарии:
1. Шум! Я не знал об этих расширениях. Мне нужно будет их проверить 🙂