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-09 10:41:17 +01:00

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 latest benutzt

  • 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

  • list: Zeigt alle installierten pakete an
    • Syntax: lpm list
    • Rules:
      • n/a

  • 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

      Ordner Struktur:
    Ordner Zweck
    config/ [TMP] Speichert daten wie z.B registry.list
    logs/ Speichert die logs des gesamten Tages
    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]
  • Beispiel config/registrylist.json

    • [ { "address": "core.lotus-pm.net:9090", "register": "core" }, { "address": "community.lotus-pm.net:9090", "register": "community" } ]