LINUX.ORG.RU

Dasel 3.0.0

 dasel, , , ,


1

3

После полутора лет разработки (и почти полного переписывания кода) состоялся выпуск 3.0.0 (и более поздние версии из этой ветки) кроссплатформенной консольной утилиты и библиотеки Dasel.

Утилита предназначена для выполнения запросов, изменения и преобразования структурированных данных. Поддерживаются форматы CSV, HCL, JSON, TOML, XML и YAML (планируется добавление других форматов).

Проект написан на языке Go и распространяется по лицензии MIT.

Список изменений:

  • добавлена поддержка форматов INI и HCL;
  • добавлена поддержка переменных и выражений;
  • добавлена поддержка чтения и анализа файлов внутри запроса (функцией readFile);
  • добавлена возможность передачи переменных из командной строки (например, --var foo="bar" --var baz=json:file:./some/file.json);
  • добавлена поддержка комментариев в запросах;
  • формат файла по умолчанию теперь можно задать в конфигурационном файле Dasel (~/dasel.yaml по умолчанию);
  • добавлена альфа-версия интерактивного режима (командой interactive);
  • переработан синтаксис запросов и селекторов;
  • большинство операций чтения и записи теперь сохраняют порядок ключей;
  • удалены команды put и delete, вместо них следует вносить изменения в запросе и использовать опцию --root;
  • другие изменения.

>>> Подробности на GitHub

★★★★★

Проверено: CrX ()
Последнее исправление: CrX (всего исправлений: 1)

Полезная штука.

CrX ★★★★★
()
Ответ на: комментарий от Radjah

Типа, да. Но возможностей запросов намного меньше, чем у jq.
Если нужно больше математики, то есть https://miller.readthedocs.io.
Она раньше была на Си, но потом автор переписал её на Go. 😃

dataman ★★★★★
() автор топика

Json-то в XML он мне сделал. А вот наоборот - шиш. Правда, я под виндой проверял.

tiinn ★★★★★
()

А сама она входной формат определить не может?

masa ★★★
()

Прикольно выглядит, полезно.

Zhbert ★★★★★
()

Наверное для кого-то это полезно. Но для себя я пришёл к такому сценарию, что если задача не решается на jq очевидным образом, то я лучше возьму нормальный ЯП и всё в нём сделаю, нежели буду разбираться как тривиальная трансформация осуществляется на очередном декларативном недоязычке в очередной утилите.

ugoday ★★★★★
()

А вот интересно, кто-нибудь теперь может сказать, как сделать то, что раньше делалось командой dasel -f test.xml -r xml -w json?

tiinn ★★★★★
()
Ответ на: комментарий от frob

А что в запросной части по сравнению с XPath?

Не знаю, я сабж случайно обнаружил, но вовремя. :)

dataman ★★★★★
() автор топика
Ответ на: комментарий от ugoday

Тупо переконвертировать произвольный .xml в .json. Да мне автор ответил, не работает оно, если в начале тег <?xml version="1.0" encoding="utf-8" standalone="yes"?> стоит

tiinn ★★★★★
()
Ответ на: комментарий от dataman

Тоже не работает с кодировкой Windows-1251. По крайней мере, файлы, на которых он падает, у меня в изобилии :)

tiinn ★★★★★
()
Ответ на: комментарий от tiinn
bb -e '(-> "/tmp/emacs.metainfo.xml" slurp xml/parse-str json/encode println)'

работает. Файлов с виндовыми кодировками у меня нет, но, опять же, при наличии настоящего ЯП, это не проблема.

ugoday ★★★★★
()

Звучит так, как будто кто-то переизобрел clickhouse-local. Кликдомик в этом смысле умеет достать данные из почти всего что угодно, сджойнить почти со всем чем угодно и сохранить почти в любой формат. Крайне удобная штука + SQL как стандартный и понятный язык для работы с ним. Короче рекомендую для таких извращений. Другой вопрос, что этот Dasel видимо умеет быть либой для гошного приложения, что наверное в ряде сценариев может быть удобно.

t500s ★★★
()
Ответ на: комментарий от dataman

Но возможностей запросов намного меньше, чем у jq.

Меня у jq вымораживает свой самопальный язык запросов. jq в каком-то смысле как awk. Богатый синтаксис и куча возможностей, которыми ты пользуешься раз в пятилетку, в основном юзая и то и другое как преттифаер для выхлопа в консольку.

t500s ★★★
()
Ответ на: комментарий от tiinn

XML вообще довольно муторный язык для парсинга. Слишком уж многое он позволяет, чтобы вот так сходу сделать конвертацию из него в условный json/yaml/toml. Ну и не слишком популярный он как язык.

t500s ★★★
()
Ответ на: комментарий от t500s

Кто ж спорит, но, вот, приходится работать.

tiinn ★★★★★
()
Ответ на: комментарий от tiinn

https://github.com/01mf02/jaq с некоторых пор тоже поддерживает несколько форматов:

jaq (pronounced /ʒaːk/, like Jacques) is a clone of the JSON data processing tool jq. It has a few features not present in jq, such as support for the data formats YAML, CBOR, TOML, and XML. jaq has an own manual.
You can try jaq on the playground.

Rust. :)

dataman ★★★★★
() автор топика
Ответ на: комментарий от dataman

Если говорить как о standalone приложении, а не как либе, то он вообще бинарем распространятся и компиляции как таковой не требует. Из зависимостей там по-моему примерно ничего (ну libc по стандарту наверное надо). Как либу для go его использовать, понятое дело, не получится.

t500s ★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.