Как запросить все пакеты 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  ]
Другие вопросы по тегам