This repository has been archived on 2026-03-18. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
lotus-package-manager/CONCEPT.md
2021-11-06 10:58:16 +01:00

91 lines
3.5 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
<div style="color: red"><center><b>↓↓↓↓↓ @[06/11/21] ↓↓↓↓↓</b></center></div>
- ``search``: Schickt eine suchanfrage an (an alle registry)
- Syntax: ``lpm search [flags] [registry/]<package>``
- Flags:
- ``l``,``--list-versions`` - Zeigt alle verfügbaren versionen an
- ``c``,``--checksum`` - Zeigt die checksumme der gefundenen pakete an
- Rules:
- Werden keine Pakete gefunden wird dies dem User berichtet.
- Falls keine registry angegeben, dann werden alle registries in der RegsitryListe abgefragt
<div style="color: red"><center>--------------------------------------------------------------------------------</center></div>
**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 |
|:----------------:|--------------------------------------------------------------|
| ``data/`` | [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]
----------------------------------
## TODO Talk [06/11/21]
- **Suchanfragen: Werden diese an alle geschickt, oder nur an eine angegebene registry?**
- **Wie soll die Installation von Paketen ablaufen?**
- **Wo werden die Informationen gespeichert welche Pakete installiert sind?**
- **Aufbau der Registryliste**