starting-omp/README.md
2026-08-18 14:15:57 +02:00

205 lines
4.6 KiB
Markdown

# ompstart
`ompstart` is een kleine wrapper voor het starten van [Oh My Pi](https://github.com/canadaduane/oh-my-pi) (`omp`). Voor iedere startsessie voert het script eerst de beschikbare Homebrew-updates uit en werkt het daarna `omp` zelf bij. Pas wanneer beide stappen succesvol zijn afgerond, start het de normale `omp`-toepassing.
## Werking
De uitvoervolgorde is strikt:
```text
brew upgrade -y
|
v
omp update
|
v
exec omp <argumenten>
```
Het script doet het volgende:
1. Controleert of `brew` in `PATH` staat.
2. Controleert of `omp` in `PATH` staat.
3. Voert `brew upgrade -y` uit.
4. Voert `omp update` uit.
5. Vervangt het wrapperproces met `omp`, waarbij alle meegegeven argumenten worden doorgegeven.
De optie `-y` is de Homebrew-alias voor `--yes` en `--no-ask`. Daarmee wordt de bevestigingsvraag voor het downloaden en upgraden overgeslagen.
## Waarom `exec`?
De laatste regel gebruikt:
```bash
exec omp "$@"
```
`exec` start `omp` in hetzelfde proces in plaats van een extra shellproces achter te laten. `"$@"` geeft alle argumenten veilig en ongewijzigd door, inclusief argumenten met spaties.
Voorbeeld:
```bash
ompstart --profile mijn-profiel
```
is functioneel gelijk aan:
```bash
omp --profile mijn-profiel
```
nadat de twee update-stappen zijn uitgevoerd.
## Vereisten
Het script verwacht:
- een POSIX-achtige shell met Bash;
- Homebrew met de opdracht `brew` in `PATH`;
- Oh My Pi met de opdracht `omp` in `PATH`;
- een werkende internetverbinding voor de updates.
Homebrew is beschikbaar op zowel Linux als macOS. De locatie van Homebrew verschilt per platform, maar dat is geen probleem zolang de installatie de juiste locatie aan `PATH` toevoegt.
## Installatie
Clone de repository naar een geschikte map:
```bash
git clone https://git.eddydevink.nl/eddy/starting-omp.git
cd starting-omp
```
Maak het script uitvoerbaar:
```bash
chmod +x ompstart
```
### Beschikbaar maken als gebruikerscommando
De aanbevolen locatie voor een persoonlijke installatie op Linux en macOS is `~/bin`:
```bash
mkdir -p "$HOME/bin"
ln -s "$PWD/ompstart" "$HOME/bin/ompstart"
```
Voeg `~/bin` eenmalig toe aan `PATH`.
Voor Bash, bijvoorbeeld in `~/.profile`:
```bash
export PATH="$HOME/bin:$PATH"
```
Voor Zsh, de standaard shell op recente macOS-versies, bijvoorbeeld in `~/.zprofile`:
```zsh
export PATH="$HOME/bin:$PATH"
```
Start daarna een nieuwe shell of laad de configuratie opnieuw:
```bash
exec "$SHELL" -l
```
Controleer de installatie:
```bash
command -v ompstart
```
Daarna kan het programma overal worden gestart met:
```bash
ompstart
```
### Beschikbaar maken voor alle gebruikers
Wil je het commando voor alle gebruikers beschikbaar maken, plaats dan een symlink in `/usr/local/bin`:
```bash
sudo -A ln -s "$PWD/ompstart" /usr/local/bin/ompstart
```
Daarvoor zijn beheerdersrechten nodig. Voor persoonlijk gebruik heeft `~/bin` de voorkeur: daarvoor zijn geen beheerdersrechten nodig en de installatie blijft onafhankelijk van Homebrew-beheer.
## Foutafhandeling
Het script gebruikt:
```bash
set -euo pipefail
```
Daarmee geldt:
- als `brew` ontbreekt, stopt het script met foutcode `127`;
- als `omp` ontbreekt, stopt het script met foutcode `127`;
- als `brew upgrade -y` mislukt, wordt `omp update` niet uitgevoerd;
- als `omp update` mislukt, wordt de toepassing niet gestart;
- alleen na een succesvolle update wordt het normale `omp` gestart.
Er wordt bewust geen fallback of gedeeltelijke start uitgevoerd. Zo wordt voorkomen dat `omp` na een mislukte update in een onduidelijke toestand wordt gestart.
## Script
De volledige implementatie staat in [`ompstart`](./ompstart):
```bash
#!/usr/bin/env bash
set -euo pipefail
if ! command -v brew >/dev/null 2>&1; then
printf 'Fout: brew is niet gevonden in PATH.\n' >&2
exit 127
fi
if ! command -v omp >/dev/null 2>&1; then
printf 'Fout: omp is niet gevonden in PATH.\n' >&2
exit 127
fi
# Run the upgrade without asking for confirmation.
brew upgrade -y
omp update
exec omp "$@"
```
## Gebruik
Normaal starten:
```bash
ompstart
```
Argumenten doorgeven aan `omp`:
```bash
ompstart --help
ompstart --profile mijn-profiel
```
De argumenten worden niet gebruikt door `brew upgrade` of `omp update`; ze worden uitsluitend doorgegeven aan het uiteindelijke `omp`-proces.
## Onderhoud
De repository bevat geen eigen afhankelijkheden of buildstap. Wijzigingen aan het script kunnen direct worden getest met:
```bash
bash -n ompstart
```
Controleer daarnaast of het bestand uitvoerbaar is:
```bash
test -x ompstart && echo 'uitvoerbaar'
```
## Licentie
Er is momenteel geen aparte licentie aan deze kleine persoonlijke wrapper gekoppeld.