Из-за пределов Firefox (по крайней мере, в версии 60.0) список установленных расширений можно получить из файла extensions.json
в каталоге профиля. Также можно найти базы данных extensions.sqlite
и addons.sqlite
sqlite, но они не охватывают все расширения.
Существует также addons.json
, но он не содержит флага «активный» (т. Е. Является ли расширение активным, включено или отключено).
Для получения списка установленных расширений CSV с типом и активным флагом можно использовать следующий запрос XPath3 :
( json-doc("extensions.json") ? addons => array:flatten() )
! ( ?type, ",", ?defaultLocale?name, ",", ?active, "
" )
=> string-join()
Примечание: для правильного CSV также необходимо заключить в кавычки значения, содержащие запятую или кавычку, и экранировать кавычки.
Из оболочки, используя команду xq
:
xq ' ( json-doc("extensions.json") ? addons => array:flatten() ) ! ( ?type, ",", ?defaultLocale?name, ",", ?active, "
" ) => string-join()' | sort
Пример вывода:
extension,Mozilla Archive Format,false
extension,Restart,false
theme,Default,false
webextension,Add HTTPS,true
webextension,Greasemonkey,true
xq
скрипт
#!/bin/bash
declare_ns_map='declare namespace map = "http://www.w3.org/2005/xpath-functions/map";'
declare_ns_array='declare namespace array = "http://www.w3.org/2005/xpath-functions/array";'
q="$1"; shift
saxonhe-xquery -qs:"$declare_ns_map $declare_ns_array $q" "$@" \!omit-xml-declaration=yes \!indent=yes
Обновление
Несколько более простой запрос, чем XPath, чтобы получить тот же результат, используя jq JSON-процессор:
jq -j '.addons [] | ( .type, ",", .defaultLocale.name, ",", .active, "\n" )' extensions.json | sort