8.1 KiB
rubric
Интерактивный терминальный справочник для разработчика. Цветной вывод, структурированные разделы с примерами кода, быстрый доступ по ключам.
./rubric
╔════════════════════════════════════════════════════════════╗
║ rubric — интерактивный справочник ║
╚════════════════════════════════════════════════════════════╝
Доступные справочники:
1. go Справочник по языку Go
Установка, синтаксис, типы, функции, горутины...
Установка
Требования: Go 1.21+
git clone https://github.com/user/rubric
cd rubric
go build -o rubric .
Или сразу установить глобально:
go install github.com/user/rubric@latest
Использование
Интерактивный режим
./rubric
Открывается главное меню со списком справочников. Навигация двухуровневая:
rubric → выбор справочника → выбор раздела
Вводить можно номер или ключ:
Выберите справочник: 1
Выберите справочник: go
Внутри справочника:
Раздел: 2
Раздел: structs
Раздел: s ← сокращённый алиас
Для возврата на уровень выше — b. Для выхода — q.
Быстрый доступ (без меню)
# Открыть справочник Go
./rubric -book go
# Открыть конкретный раздел сразу
./rubric -book go -topic basics
./rubric -book go -topic structs
# По алиасу
./rubric -book g -topic s
Вспомогательные флаги
./rubric -list # список всех справочников
./rubric -help # справка по флагам и ключам
Структура проекта
rubric/
├── go.mod
├── main.go # точка входа, разбор флагов
├── utils/
│ └── display.go # цвета, форматирование вывода
├── catalog/
│ ├── catalog.go # главное меню, реестр справочников
│ └── gobook.go # справочник Go: меню и навигация
└── modules/
└── gomodules/
├── registry.go # реестр разделов Go
├── basics.go # раздел: установка и команды
└── structures.go # раздел: структура программы
Каждый справочник — отдельный файл в catalog/. Каждый раздел внутри справочника — отдельный файл в соответствующем подпакете modules/.
Справочники и разделы
go — Язык Go
| Ключ | Алиасы | Раздел |
|---|---|---|
basics |
b, base, install |
Установка и основные команды |
structs |
s, struct, vars, types |
Структура программы |
basics — Установка и основные команды
- Установка Go на Linux / macOS / Windows
- Структура проекта,
go mod init go build— сборка и кросс-компиляцияgo run— запуск без сборкиgo test— тесты, покрытие, бенчмарки, race-детекторgo fmt,go vet,golangci-lint— форматирование и анализgo doc— документацияgo get,go mod tidy— управление зависимостямиgo env,go clean,go install— окружение и утилиты
structs — Структура программы
- Имена, ключевые слова, предопределённые идентификаторы
- Четыре вида объявлений:
const,type,var,func - Переменные:
var,:=, нулевые значения,var-блоки - Указатели:
&,*, nil, сравнение адресов - Функция
newи когда её использовать - Время жизни переменных, escape analysis
- Присваивания: простые, составные, tuple assignment,
_ - Объявления типов, алиасы, конверсии
- Пакеты, файлы, все формы импорта
- Инициализация пакетов, функция
init() - Область видимости, затенение (shadowing)
Как добавить новый раздел в справочник Go
- Создать файл
modules/gomodules/mymodule.go:
package gomodules
import "rubric/utils"
var MyModule = Module{
Key: "mykey",
Aliases: []string{"mk"},
Title: "Название раздела",
Description: "Краткое описание",
Run: showMyModule,
}
func showMyModule() {
utils.Header("Заголовок")
utils.Section("Подраздел")
utils.Code(`// пример кода`)
utils.Note("Важное замечание")
utils.Footer()
}
- Добавить в
modules/gomodules/registry.goв срезAll:
var All = []Module{
BasicsModule,
StructuresModule,
MyModule, // ← добавить сюда
}
Больше ничего не требуется — модуль автоматически появится в меню, поиске и навигации.
Как добавить новый справочник (например, linux)
- Создать
catalog/linuxbook.goпо образцуcatalog/gobook.go - Создать
modules/linuxmodules/с нужными разделами - Добавить
LinuxBookв срезcatalog.Allвcatalog/catalog.go - При необходимости расширить
switch *bookвmain.goдля флага-book linux -topic ...
Вспомогательные функции форматирования
Все модули используют пакет utils для единообразного вывода:
| Функция | Описание |
|---|---|
utils.Header(title) |
Заголовок раздела в рамке |
utils.Section(title) |
Подзаголовок с линией |
utils.Code(code) |
Блок кода в рамке |
utils.Command(cmd, desc) |
Команда с описанием |
utils.Note(text) |
Замечание с иконкой 💡 |
utils.Info(label, value) |
Пара ключ — значение |
utils.Println(text) |
Обычная строка с отступом |
utils.Footer() |
Нижняя линия раздела |
Цветовой вывод
Использует ANSI escape-коды. Работает в большинстве современных терминалов: iTerm2, Terminal.app, GNOME Terminal, Windows Terminal, tmux и других.
В средах без поддержки цвета (например, при перенаправлении вывода в файл) escape-коды будут видны как есть. При необходимости отключения цвета — установите переменную NO_COLOR=1 перед запуском или реализуйте проверку os.Getenv("NO_COLOR") в utils/display.go.