feat: verificar dependências fzf e tmux ao iniciar

Adiciona módulo `deps` que, antes de qualquer operação, verifica se
fzf e tmux estão instalados no sistema. Caso faltem, detecta o
gerenciador de pacotes da distro (apt, pacman, dnf, yum, zypper,
emerge, xbps, apk), informa ao usuário e oferece instalar com o
comando adequado.

- `src/deps.rs`: Dep, PackageManager, BinaryChecker (trait injetável),
  check_missing(), detect_package_manager(), ensure_dependencies()
- `src/main.rs`: chama ensure_dependencies() antes do fluxo principal
- `tests/deps.rs`: 11 testes de integração com SystemBinaryChecker real
- `tests/docker/`: Dockerfile multi-stage + suite de 15 testes em
  container Ubuntu 24.04 simulando novo usuário (sem fzf/tmux)
- `.dockerignore`: exclui target/, .git/, .claude/ do contexto Docker
This commit is contained in:
2026-02-28 23:58:09 -03:00
parent 32c40b7226
commit 4dcac9a6aa
8 changed files with 852 additions and 0 deletions
+4
View File
@@ -4,6 +4,7 @@ use std::io::Write;
use std::path::PathBuf;
use std::process::{Command, Stdio};
use tmuxido::config::Config;
use tmuxido::deps::ensure_dependencies;
use tmuxido::{get_projects, launch_tmux_session, show_cache_status};
#[derive(Parser, Debug)]
@@ -28,6 +29,9 @@ struct Args {
fn main() -> Result<()> {
let args = Args::parse();
// Check that fzf and tmux are installed; offer to install if missing
ensure_dependencies()?;
// Ensure config exists
Config::ensure_config_exists()?;