[mike@maginot]
This commit is contained in:
@@ -50,6 +50,50 @@ Braucht Go ≥ 1.26 und `github.com/fatih/color`. Das Perl-Original (`dx`, 1.0.2
|
||||
2016) liegt unverändert daneben und wird vom Bau nicht angefasst; es hat keine
|
||||
Farben und keine Balken, tut aber sonst dasselbe.
|
||||
|
||||
## Selbst aktualisieren
|
||||
|
||||
```sh
|
||||
dx --check-update # nur nachsehen
|
||||
dx --update # holen und ersetzen
|
||||
```
|
||||
|
||||
`dx` holt sich das neueste Release von
|
||||
[git.micw.org/mike/dx](https://git.micw.org/mike/dx) — die URL steht fest im
|
||||
Programm, es gibt nichts zu konfigurieren. Gebraucht wird ein Release je
|
||||
Version, dessen Tag die nackte Nummer ist (`2.1.6`), mit den Dateien aus `./bin`
|
||||
als Assets; gesucht wird die eine, die zu `GOOS`/`GOARCH` dieser Maschine passt.
|
||||
|
||||
Ersetzt wird die laufende Datei selbst. Ist der aufgerufene `dx` ein Symlink —
|
||||
etwa `~/bin/dx` auf `~/src/dx/bin/dx-darwin-arm64` —, wird das Ziel dahinter
|
||||
erneuert, nicht der Link. Vor dem Tausch wird das frisch Geladene einmal mit
|
||||
`--version` aufgerufen; meldet es nicht die erwartete Nummer, bleibt alles, wie
|
||||
es war. Der Tausch selbst ist ein `rename` im selben Verzeichnis, also atomar:
|
||||
entweder die alte Datei oder die neue, nie eine halbe.
|
||||
|
||||
Liegt das Binary irgendwo, wo der eigene Benutzer nicht schreiben darf
|
||||
(`/usr/local/bin`), sagt `dx --update` das und tut nichts — dann `sudo`.
|
||||
|
||||
## Wiederverwenden
|
||||
|
||||
`selfupdate.go` hängt an nichts im Rest des Programms und kommt mit der
|
||||
Standardbibliothek aus. Für ein anderes Programm die Datei kopieren, den Block
|
||||
oben anpassen —
|
||||
|
||||
```go
|
||||
var selfUpdate = selfUpdater{
|
||||
repo: "https://git.micw.org/mike/foo",
|
||||
asset: "foo",
|
||||
current: version,
|
||||
verify: []string{"--version"},
|
||||
}
|
||||
```
|
||||
|
||||
— und `--update` und `--check-update` in die Optionen hängen. Alles Weitere in
|
||||
der Datei heißt `selfUpdate…` oder `update…` und kollidiert deshalb nicht.
|
||||
`verify` leer lassen, wenn das Programm keinen billigen Versionsaufruf hat; dann
|
||||
entfällt der Probelauf. Erwartet wird eine Gitea-Instanz (getestet mit 1.27);
|
||||
GitHub kennt dieselbe Route unter anderen Feldnamen und wird nicht bedient.
|
||||
|
||||
## Optionen
|
||||
|
||||
| | | |
|
||||
@@ -62,6 +106,8 @@ Farben und keine Balken, tut aber sonst dasselbe.
|
||||
| | `--bar`, `--no-bar` | Balken und Prozent erzwingen bzw. abschalten |
|
||||
| | `--color=auto\|always\|never` | Farbe erzwingen bzw. abschalten |
|
||||
| | `--version` | Version |
|
||||
| | `--check-update` | nachsehen, ob ein neueres Release da ist |
|
||||
| | `--update` | neuestes Release holen und installieren |
|
||||
|
||||
Kurzoptionen lassen sich bündeln (`-rt 3`, `-dn`), der Wert von `-t` darf kleben
|
||||
(`-t5`) oder folgen (`-t 5`). Ein `--` trennt Optionen von einem Pfad, der mit
|
||||
@@ -163,6 +209,7 @@ Neu sind `-r`, `-t`, die Balkenspalte, die Farben und die langen Optionen.
|
||||
|---|---|
|
||||
| `main.go` | Zählen, Sortieren, Formatieren, Optionen |
|
||||
| `filetypes.go` | Endung und Dateiname → Farbe |
|
||||
| `selfupdate.go` | `--update`, eigenständig und zum Kopieren gedacht |
|
||||
| `build.sh` | Bau für alle Plattformen, zählt `version.txt` hoch |
|
||||
| `version.txt` | die zuletzt gebaute Version |
|
||||
| `dx` | das Perl-Original von 2016 |
|
||||
|
||||
Reference in New Issue
Block a user