2012-06-18 2 views
0

Помимо прочего, вы можете установить в системе ASDF свойство :version. Есть ли способ прочитать его во время выполнения? Что-то вроде (system-version :my-system-name)?Получение версии системы ASDF

Я знаю, что есть asdf:version-satisfies и asdf:asdf-version, но ни то, что я хочу в этом случае.

+1

'(слот-значение (ASDF: найти-система )«ASDF: версия) ' –

+1

Использование' слот -value' является абстрагированием, в отличие от подхода, основанного на 'component-version', поэтому последнее лучше. По крайней мере, теоретически, кто-то мог написать метод для asdf: component-version, который не имеет доступа к слоту, и в этом случае код, который непосредственно анализирует слот, потеряет. –

ответ

6

Вот код:

(defun system-version (system-designator) 
    (let ((system (asdf:find-system system-designator nil))) 
    (when (and system (slot-boundp system 'asdf:version)) 
     (asdf:component-version system)))) 

это работает так:

CL-USER> (system-version :cffi) 
"0.10.7.1" 
CL-USER> (system-version :foo) 
NIL 
Смежные вопросы