Управление личными проектами

Проект за проектом. А где хранить будем?

projects bicycles crutches

Многие из разработчиков занимаются личными проектами. С годами список растет и интересно как другие не начинают путаться в нём. Когда у меня было <10 проектов, то они были просто разбросаны по разным папкам. Со временем их стало больше и стало трудней ими управлять. Было решено хранить проекты в одной папке projects. В корне папки лежат только активные проекты (над которыми сейчас ведется работа). В подпапке frozen уже неактивные.

Но на этом было трудно остановиться и я пошел дальше. Хотелось как-то оптимизировать работу с проектами. Например, одной командой запускать все нужные докер контейнеры и IDE или делать ещё кучу всего. Фантазия богатая. Ну и что бы где-то отображалось описание и логотип проекта. Поэтому в каждый активный проект добавил файл .description.yml. Пример:

icon: ./icon.jpg
background: ./bg.jpg
readme: ./README.md

action:
  type: 'command'
  command: /home/michael/apps/pycharm/bin/pycharm.sh {edir} &

commands:
  - slug: restart
    name: 'Restart'
    type: 'server_command'
    command: 'docker-compose restart'
    interact: true

В этом файлике прописывается логотип, путь к файлу с описанием проекта, действие при выборе проекта и команды.

Дальше написал программку на питоне для работы с проектами и с файлами .description.yml. Потом реализовал на Electron графический интерфейс. Получилось это:
Пример

Работает неплохо, но GUI мне душевного спокойствия так и не принес. При кликах на проекты запускался терминал, и там выполнялись команды. Не очень удобно. Да, можно это исправить, но часть скриптов уже написана и некоторые действия требуют ввод. Всё переписывать не хотелось. Хоть поиск оказался удобным 🙂

Следующий этап. Сделал "интерфейс" для терминала:
Пример

Пока этого хватает. Посмотрим, что дальше будет.

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