58 lines
1.7 KiB
Markdown
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/`.
|