- Shell 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| ompstart | ||
| README.md | ||
ompstart
ompstart is een kleine wrapper voor het starten van 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:
brew upgrade -y
|
v
omp update
|
v
exec omp <argumenten>
Het script doet het volgende:
- Controleert of
brewinPATHstaat. - Controleert of
ompinPATHstaat. - Voert
brew upgrade -yuit. - Voert
omp updateuit. - 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:
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:
ompstart --profile mijn-profiel
is functioneel gelijk aan:
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
brewinPATH; - Oh My Pi met de opdracht
ompinPATH; - 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:
git clone https://git.eddydevink.nl/eddy/starting-omp.git
cd starting-omp
Maak het script uitvoerbaar:
chmod +x ompstart
Beschikbaar maken als gebruikerscommando
De aanbevolen locatie voor een persoonlijke installatie op Linux en macOS is ~/bin:
mkdir -p "$HOME/bin"
ln -s "$PWD/ompstart" "$HOME/bin/ompstart"
Voeg ~/bin eenmalig toe aan PATH.
Voor Bash, bijvoorbeeld in ~/.profile:
export PATH="$HOME/bin:$PATH"
Voor Zsh, de standaard shell op recente macOS-versies, bijvoorbeeld in ~/.zprofile:
export PATH="$HOME/bin:$PATH"
Start daarna een nieuwe shell of laad de configuratie opnieuw:
exec "$SHELL" -l
Controleer de installatie:
command -v ompstart
Daarna kan het programma overal worden gestart met:
ompstart
Beschikbaar maken voor alle gebruikers
Wil je het commando voor alle gebruikers beschikbaar maken, plaats dan een symlink in /usr/local/bin:
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:
set -euo pipefail
Daarmee geldt:
- als
brewontbreekt, stopt het script met foutcode127; - als
ompontbreekt, stopt het script met foutcode127; - als
brew upgrade -ymislukt, wordtomp updateniet uitgevoerd; - als
omp updatemislukt, wordt de toepassing niet gestart; - alleen na een succesvolle update wordt het normale
ompgestart.
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:
#!/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:
ompstart
Argumenten doorgeven aan omp:
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 -n ompstart
Controleer daarnaast of het bestand uitvoerbaar is:
test -x ompstart && echo 'uitvoerbaar'
Licentie
Er is momenteel geen aparte licentie aan deze kleine persoonlijke wrapper gekoppeld.