# 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 ``` 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.