Skip to content

s21toolkit/s21.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 

Repository files navigation

Фичи

  • База
    • Открыть склоненный проект на гитлабе
    • Автоматически открывать markdown preview при открытии проекта
    • Автоматически переключатся/создавать deveop ветку
  • SQL Bootcamp
    • Автоматический менеджмент postgres
    • Шорткаты для переключения между упражнениями
    • Запуск тестов если test.sql лежит в папке с упражнением
    • Выполнение sql из буффера по шорткату

Внешние зависимости

Установка

Lazy
return {
  's21toolkit/s21.nvim',
  event = 'VeryLazy', -- Грузим сразу если cond удовлетворяет что бы превью сразу открывалось
  cond = function() return vim.fn.getcwd():match('/s21/') ~= nil end,
  dependencies = {
    -- Нужен для менеджмента докером и дефолтным превью таски
    -- 'stevearc/overseer.nvim',
    -- Нужен для встроенного поведения sql.format а конкретно sql-formatter из его репозитория
    -- 'williamboman/mason.nvim',
  },
  keys = {
    { '<leader>;', '<cmd>S21GitlabOpen<cr>', mode = { 'n', }, },
  },
  opts = {
    switch = true, -- Автоматически переключатбся на develop или создавать его если ещё нету такой ветки
    task = {
      -- preview = false,
      -- Можно определить кастомный раннер прямо тут. get_window_titles по дефолту работает на jq и hyprctl
      preview = function ()
        local api = require('s21.api')
        if not api.window_title_contains(api:project_dir_name()--[[, { plain = true, get_window_titles = function() return 'title\ntitle' end }--]]) then
          vim.system({ 'sh', '-c', 'chromium --new-window file://$(find "' .. vim.fs.joinpath(api:project_dir_name(), '" -type f -name "README*.md" -print -quit)'), })
        end
      end
    },
    sql = {
      -- Угадывать ли количество упражнений в дне создавая структуру ex0X/day0Y_ex0X.sql
      init = true,
      -- Использовать sql-formatter из mason репозитория если mason
      -- не установлен форматирования не будет
      format = false,
      encoding = "ascii",
      -- Настройки контейнера постгреса
      postgres = {
        password = 'somepassword',
        user = 'someuser',
        db = 'school21'
        port = 5432,
      },
      keymap = {
        -- Все exec требуют установленный psql cli
        -- проверки на его наличие нету как и встроенной установки
        -- так что готовьтесь к ошибкам если его нету в PATH
        psqlexec = '<leader>p', -- выполняет sql из текущего буффера
        testexec = '<leader>\'', -- запускает тест если есть
        nextexec = '\'', -- переходит к следующему упражнению выполняя его и прогоняя тесты если есть
        prevex = ',', -- предыдущее упражнение
        nextex = '.', -- следующее упражнение
      }
    },
  },
}

About

Plugin to automate some tasks on different projects

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages