Initial commit
This commit is contained in:
commit
9264facc8e
2 changed files with 222 additions and 0 deletions
205
README.md
Normal file
205
README.md
Normal file
|
|
@ -0,0 +1,205 @@
|
|||
# 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.
|
||||
17
ompstart
Executable file
17
ompstart
Executable file
|
|
@ -0,0 +1,17 @@
|
|||
#!/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 "$@"
|
||||
Loading…
Reference in a new issue