77 lines
2.9 KiB
Markdown
77 lines
2.9 KiB
Markdown
# 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 ``latest`` benutzt
|
|
<br><br>
|
|
- ``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 ``latest`` benutzt
|
|
<br><br>
|
|
- ``list``: Zeigt alle installierten pakete an
|
|
- Syntax: ``lpm list``
|
|
- Rules:
|
|
- n/a
|
|
<br><br>
|
|
- ``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
|
|
|
|
**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
|
|
<br><br>
|
|
Ordner Struktur:
|
|
|
|
| Ordner | Zweck |
|
|
|:----------------:|--------------------------------------------------------------|
|
|
| ``config/`` | [TMP] Speichert daten wie z.B ``registry.list`` |
|
|
| ``logs/`` | Speichert die logs des gesamten Tages |
|
|
| ``Tools/`` | [DEV] Tools, something like a logger, parser etc. |
|
|
| ``Lotus/`` | [DEV] Lotus komponenten, e.g Package, Tag, Checksums structs |
|
|
|
|
- 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]
|
|
|