Как запросить все пакеты Monticello из конфигурации Metacello?
У меня есть конфигурация Metacello, такая как ConfigurationOfAthens, и я хочу знать, какие пакеты предоставляет, результат будет:
- Афины-Каир
- Афины-CairoPools
- Athens-Core
- и т.п.
Я старался
(GoferConfigurationReference name: 'ConfigurationOfAthens') packages.
но это не понято системой.
Это поддерживается в Pharo 4?
1 ответ
Если вам нужны только имена пакетов, вы можете использовать вспомогательные классы для запроса из конфигурации. И поэтому ваш запрос будет
(MTProject
newFromVersion: (ConfigurationOfAthens project version: #development)
inConfiguration: ConfigurationOfAthens) dependenciesFilteredBy: MTPackage.
Эти классы МТ, которые, по-видимому, должны принадлежать Metacello, находятся не в пакете Metacello, а в настоящее время в Versionner (по умолчанию включены в изображения Pharo).
Погружение в результаты показывает, что некоторые "MTPackages" не имеют соответствующего "RPackage" (это может быть ошибка или какая-то странная особенность в моделях представления пакета). Так что вам понадобится дополнительная фильтрация:
((MTProject
newFromVersion: (ConfigurationOfAthens project version: #development)
inConfiguration: ConfigurationOfAthens) dependenciesFilteredBy: MTPackage)
select: [ :pkgName |
(RPackageOrganizer default
packageNamed: pkgName name asSymbol
ifAbsent: []) notNil ]