cli-standardization/CLAUDE.md

58 lines
1.7 KiB
Markdown

# CLI Standardization
Ansible project to deploy a modern CLI environment (Fish + Starship + modern coreutils)
to Arch and Ubuntu/Debian hosts.
## What it installs
- **Fish shell** 4.x (PPA on Ubuntu, pacman on Arch)
- **Starship** prompt (official binary installer)
- **fzf** — fuzzy finder
- **zoxide** — smarter cd
- **bat** — cat with syntax highlighting
- **eza** — modern ls
- **fd** — modern find
- **ripgrep** — fast grep
- **Fisher** plugin manager + plugins
## Dev workflow
```bash
# Lint
ansible-lint playbook.yml
# Syntax check
ansible-playbook playbook.yml --syntax-check
# Dry run
ansible-playbook playbook.yml -i inventory.yml --check --diff
# Deploy
ansible-playbook playbook.yml -i inventory.yml
ansible-playbook playbook.yml -i inventory.yml --limit manjaro-dev
```
## Role structure
```
roles/cli_modern/
├── defaults/main.yml # All configurable variables
├── tasks/
│ ├── main.yml # Task dispatcher
│ ├── packages-archlinux.yml # Arch/Manjaro packages
│ ├── packages-debian.yml # Ubuntu/Debian packages + Fish PPA
│ ├── starship.yml # Starship binary install
│ ├── fisher.yml # Fisher + plugin sync
│ ├── config.yml # Deploy config templates
│ └── default-shell.yml # Set Fish as login shell
└── templates/
├── config.fish.j2 # Fish shell config
├── starship.toml.j2 # Starship prompt config
└── fish_plugins.j2 # Fisher plugin list
```
## Configuration
All options are in `roles/cli_modern/defaults/main.yml`. Override per-host
in `host_vars/` or per-group in `group_vars/`.