2.2 KiB
2.2 KiB
jmove — TODO
Правила
- KISS — simplest solution that works; no speculative abstractions.
- DRY — no duplicated logic; extract into a function/module instead.
- SOLID — single responsibility per module (
cli/core/parser/cache), open for extension (new languages) via the parser trait, no deps on implementation details. - Max 250 lines per file — split when exceeded.
- Max 4 files per folder (module) — split the module when exceeded.
- Каждый коммит проходит
cargo fmt --checkиcargo clippy -- -D warnings. - Запрещён mёртвый код: unused code удаляется или реализуется;
#[allow(dead_code)]не использовать.
MVP (Phase 1)
- CLI skeleton (clap) — команды: mv, index, check, --dry-run
- Сканер файлов проекта (уважать .gitignore через
ignoreкрейт) - Парсер импортов для TypeScript/JS через tree-sitter
- Построение графа зависимостей (файл → что импортирует)
- Инвертированный граф (файл → кто его импортирует)
- Вычисление нового относительного пути после mv
- Rewrite импортов в файлах
- Атомарный apply (сначала rewrite, потом mv) + rollback при ошибке
- Dry-run режим с diff выводом
Phase 2
- Кэш индекса на диске (bincode/rkyv) → .jmove/index
- Инкрементальная переиндексация (только изменённые файлы)
- Поддержка tsconfig paths / алиасов (@/...)
- Параллельная индексация через rayon
Phase 3
- Поддержка Python
- Поддержка Java
- Поддержка Go
- Команда split (авто-разбивка файла на несколько)
- Команда check (найти все битые импорты)
Идеи на потом
- LSP интеграция
- Watch mode
- VS Code расширение как обёртка над CLI