3 KiB
3 KiB
CLI Concept
Welche Features soll das Programm am Ende besitzen?
- Installation von Paketen
- Checksum Verification
- Suchen von Paketen
- Liste von installieren Paketen
- Verwaltung von installierten Paketen
- Update
- Uninstall
- etc.
- Dependencies von Paketen
- Portable Version
- Managed und Community package registries
- Self-hosted package registries
- Latest Package direkt vom Herstellt
Welche Techonologien werden verwendet?
| Technologie | Verwendungszweck |
|---|---|
| gRPC | Kommunikation zwischen Server un Client |
| Golang | Programmiersprache |
| urfrace/cli/v2 | Library für CLI |
Welche Befehle wird die cli haben?
Usage: lpm <Option> [Args]
Options:
push: Pusht das angegebene Package- Syntax:
lpm push <registry>/<package>:<version> - Rules:
- Falls keine Registry angegeben ist, wird zur community Registry gepusht
- Wird keine Versionsnummer angegeben, wird
latestbenutzt
- Syntax:
pull: Pullt das angegebe Package- Syntax:
lpm pull <registry>/<package>:<version> - Rules:
- Falls keine Registry angegeben ist, wird zur community Registry gepusht
- Wird keine Versionsnummer angegeben, wird
latestbenutzt
- Syntax:
list: Zeigt alle installierten pakete an- Syntax:
lpm list - Rules:
- n/a
- n/a
- Syntax:
search: Schickt eine suchanfrage an (an alle registry)- Syntax:
lpm search [registry/]<package> [version filter] - Rules:
- Werden keine Pakete gefunden wird dies dem User berichtet.
- Falls keine registry angegeben, dann werden alle registries in der RegsitryListe abgefragt
- Syntax:
More coming soon...
Programming Technischer Stizzl
-
Für Logging:
Tools.<Logger>.Println()nutzen- Falls das Programm einen fatalen Fehler hat und nicht weiter darf
Tools.ErrorLogger.Fatal()nutzen
Ordner Struktur:
Ordner Zweck config/[TMP] Speichert daten wie z.B registry.listlogs/Speichert die logs des gesamten Tages Lotus/[DEV] Lotus komponenten, e.g Package, Tag, Checksums structs - Falls das Programm einen fatalen Fehler hat und nicht weiter darf
-
Versionierung:
- Ein Block = bis zum nächsten punkt
- e.g: Chrome 95.0.4638.69 => [95].[0].[4638].[69]
- e.g: Golang 2021.2.4 => [2021].[2].[4]
-
Beispiel
config/registrylist.json[ { "address": "core.lotus-pm.net:9090", "register": "core" }, { "address": "community.lotus-pm.net:9090", "register": "community" } ]