Переосмысление Dotfiles

12 мая 2013, 22:58

Увидел как-то у Артёма Сапегина занятную вещь — Dotfiles. Это такой набор разных ништяков для любителей консоли. В OS X встроенный баш, по сравнению со многими линуксами, достаточно унылый. Вот и делают люди под себя удобное окружение с кучей алиасов, функций, приложений, автокомплитов и прочими радостями, которые потом публикуют в виде дотфайлсов.

Наиболее интересные собраны тут http://dotfiles.github.io.

У меня по долгу службы тоже накопился список разных удобств, состоявший из кучи баш-скриптов в /usr/local/bin и алиасов в ~/.bashrc. Решил всё собрать, аккуратно организовать, сделать установщик — в общем как у всех. Но не тут-то было.

Практически все установщики дотфайлсов заточены конкретно под их авторов, что немного неудобно, так как содержат личные авторские конфиги, ссылки и алиасы. Приходится копаться в исходниках на гитхабе и вытаскивая что-нибудь полезное для себя.

Мне же хотелось сделать что-нибудь универсальное: нужно — установил. Так и родилась идея сделать пакетный менеджер для дотфайлсов.

Установка

Для установки нужна OS X, так как используется пакетный менеджер homebrew. Позже добавлю поддержку deb-подобных ОС, всё же на серверах такая штука не помешает.

curl -Ls dotfiles.gleero.com | bash

Во время установки вас попросят отметить модули, которые нужно установить. Дотфайлс по-умолчанию установится в вашу домашнюю папку: ~/dotfiles/

Обновление и удаление

Для обновления до последней версии рекомендуется использовать

dotfiles update

А для удаления —

dotfiles remove

Модули

Все свои полезности я сгруппировал по модулям. На текущий момент их 9 (по ссылкам описание, документация и исходники):

Сейчас в разработке модули PythonTools, WebdevTools и Zsh.

Как видно, пользователь сам может выбрать то, что он хочет установить. Bash или Zsh; нужны ему подсветки синтаксиса для Nano, или он пользуется Vim’ом; нужны ему генераторы font-face и woff-шрифтов из ttf, или же virtualenv для питона — всё можно выбрать под себя.

Ништяки

Их не так много, но они действительно полезные. Часть взяты на просторах интернета, часть написаны вручную. Остановлюсь подробнее на последних.

Программы json и jsonselect

json получает в поток STD любой сжатый неотформатированный JSON, а выдаёт красивый, разноцветный, и с отступами.

jsonselect основана на библиотеке JsonSelect, которая может фильтровать JSON с помощью CSS-селекторов. Также принимает в STD любой JSON и фильтрует.

Например, мы хотим узнать список исполнителей в плейлисте http://tracksflow.com/2.0/api/playlists/3b6cbc12-99d6-4f1f-914e-f25ce7eec232. Открыв ссылку в браузере, замечаем огромную кучу разного мусора, мешающего нам получить исполнителей.

Теперь пишем в терминале:

curl -s http://tracksflow.com/2.0/api/playlists/3b6cbc12-99d6-4f1f-914e-f25ce7eec232 | jsonselect ".artistName" | json

Получаем JSON, передаём его в jsonselect и просим отдать всё по селектору «artistName». Вывод отдаём в программу json, которая красиво показывает результат. Всё.

Программа Quicklook

Открывает в родном маковском квиклуке любые данные. Есть же qlmanage, умеющий показывать любой файл. Но он определяет тип данных по расширению файла и не умеет читать файл из std. Мой же quicklook на лету определяет тип данных и правильно их показывает.

curl -s http://cs315327.vk.me/v315327003/8755/VzYcbNgtofE.jpg | quicklook

Neblo terminal

Собственно цветовая схема для терминала.

И ещё куча разных полезностей. Подробно о всех программах и возможностях написано на гитхабе.

Приватные конфиги

Начал я заметку с того, что хорошо бы свои приватные данные держать при себе. Так вот в папке с дотфайлсами можно наблюдать выделенную цветом папочку private, в которой лежат две болванки: aliases.sh и bash_profile.sh. Но можно создавать и другие, так как при открытии нового терминала подключаются все шелл-скрипты из private.

А приложения можно класть в папку bin, которая добавлена в PATH.

Создание своего модуля

Создавать свои модули просто:

cd ~/dotfiles/modules
dfmod init test

Будет создан модуль с названием `test` и заготовкой. Подробная информация об устройстве модуля есть как в свежесозданном модуле (в виде комментариев), так и на гитхабе.

Модулем можно поделиться на гитхабе, установить его будет очень просто:

cd ~/dotfiles/modules/
git clone <ЛЮБОЙ_МОДУЛЬ>
dfmod install <МОДУЛЬ>

А можно пуллреквестить :-)

Заключение

Всё ещё сыро. Баги постоянно фиксятся, возможности постоянно добавляются. Но сейчас настало то время, когда можно поделиться проектом с людьми.

В ближайшем будущем планируется добавить несколько новых модулей, а также перевод документации на английский. Код частично уже переведён.

Пользуйтесь. http://github.com/gleero/dotfiles

Редизайн блога       Ctrl       Облака в Айти

4 комментария

Шувалов Антон

Здорово! Отличная идея)

Максим Гладких

Супер. Надо будет посмотреть.

Омич

Ыыыы

Хуев

Ахаха

Ваш комментарий

адрес не будет опубликован

ХТМЛ не работает


Ctrl + Enter