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-05 11:45:38 +01:00

3.4 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
↓↓↓↓↓ @[06/11/21] ↓↓↓↓↓
  • 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
--------------------------------------------------------------------------------

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
    data/ [TMP] Speichert daten wie z.B registry.list
  • | logs/ | Speichert die logs des gesamten Tages |

TODO Talk [06/11/21]

  • Wie sollen Versionsnummern aufgebaut sein?
    • Mein Vorschlag: Major.Minor.Patch.Hotfix_Channel
      • Major: Für Große Updates (e.g BC 17->18)
      • Minor: Für kleinere Feature Updates (e.g BC18.2->18.3)
      • Patch: Für Bugfixes die nicht schnell erfolgen müssen
      • Hotfixes: Für notwendige fixed die nicht lange warten dürfen
      • Channel: stable. beta, dev,alpha, etc.

  • Suchanfragen: Werden diese an alle geschickt, oder nur an eine angegebene registry?