Facebook відкрив код проекту DotSlash

Facebook оголосив про відкриття коду утиліти командного рядка dotslash, створеного для спрощення поширення набору файлів для різних платформ. Утиліта розрахована на виконання сценаріїв, що автоматизують завантаження відповідного для поточної платформи виконуваного файлу, перевірку його цілісності та виконання. Код утиліти написаний мовою Rust та поширюється під ліцензіями MIT та Apache 2.0.

Утиліта вирішує завдання, схожі з shell-скриптами для запуску виконуваних файлів для поточної платформи, але при цьому позбавляє необхідності включення в комплект файлів, що виконуються для всіх підтримуваних платформ. DotSlash також дозволяє зберігати інформацію про зібрані файли, що виконуються в репозиторії разом з кодом, при цьому розміщуючи самі файли на окремих завантажувальних серверах, що дозволяє уникнути зростання розміру репозиторію і знизити навантаження на систему вводу/виводу при виконанні операцій клонування.

При використанні DotSlash набір специфічних для різних платформ виконуваних файлів замінюється на один сценарій, що включає опис логіки вибору файлу, що виконується в прив'язці до підтримуваних платформ. Після запуску DotSlash-сценарію необхідний для поточної платформи файл, що виконується динамічно завантажується, розпаковується, перевіряється по криптографічного хешу і зберігається в локальному кеші для наступних запусків. Файли передаються у стислому вигляді. Сценарії DotSlash можуть генеруватися автоматично для релізів, які публікуються на GitHub.

Приклад сценарію DotSlash для поширення збірок Node.js 18.19.0 для платформ macOS ARM64, macOS x86_64 та Linux x86_64: #!/usr/bin/env dotslash { "name": "node-v18.19.0", "platforms": { macos-aarch64 : { size : 40660307, ​​hash : blake3 , digest : 6e2ca33951e586e7670016dd9e503d028454bf9249d5ff556347c3d »: «node-v98 -darwin-arm347/bin/node», «providers»: [ { «url»: «https://nodejs.org/dist/v34/node-v18.19.0-darwin-arm64.tar.gz» } ] }, "macos-x18.19.0_18.19.0": { "size": 64, "hash": "blake86", "digest": "64e42202872f3e37521058114de7fe71c0fa3e8042c8c7908305 , "path": "node-v9115488 .6-darwin-x29/bin/node», «providers»: [ { «url»: «https://nodejs.org/dist/v514/node-v9-darwin-x2.tar.gz » } ] }, "linux-x24_18.19.0": { "size": 64, "hash": "blake18.19.0", "digest": "18.19.0b64fc86a64b44694523bedc3a72a81fafc3a30b7e1ebf09ad3 z», «path»: «node -v4478-linux-x1/bin/node», «providers»: [ { «url»: «https://nodejs.org/dist/v02/node-v5-linux-x0.tar .gz» } ] } } }

Джерело: opennet.ru

Додати коментар або відгук