Nimble - Update Checker

  • Da ich meine Module ausschließlich händisch verwalte, habe ich mir jetzt zumindest eine Routine zum Prüfen aller Packages auf vorhandene Updates erstellt.

    EDIT 31.01.22

    Die Ursache der Nicht-Erreichbarkeit der Seite:

    Von 12 Packages verlinken 11 mit "../raw/master/.." auf die *.nimble (dort ist die Versionsnummer auslesbar). Aber 1 Package verwendet stattdessen: "../raw/main/..". Da hatte ich dann mit einer nicht existenten Adresse versucht zuzugreifen - deshalb HTTP-Error. ;)

    Jetzt verwende ich "master", gibt das Fehler probiere ich "main" und sollte auch das fehlschlagen wird Online-Version=0 gesetzt, was dann bedeutet: Seite falsch/nicht erreichbar.

    Ich habe das Programm überarbeitet und leite die nimble-Aufrufe in eine Tmp-Datei, die ich dann auswerte.

    Vorerst habe ich nur die Kommandozeilen-Version geändert. Hinzugekommen sind dort Aufrufparameter:

    • "help" Gibt die möglichen Parameter aus
    • "list" Listet alle lokalen Packages formatiert auf.

    • "check" Wie "list", zusätzlich mit online verfügbarer Version.

    • "update" Wie "check", zusätzlich wird für verfügbare neuere Versionen ein Update installiert.

    Wobei bemerkt werden muss: Update gibt es nicht wirklich in nimble, genau sowenig, wie eine Online-Versionsabfrage. Es gibt zwar die Möglichkeit mit Flag --ver danach zu fragen - in den Repos nutzt aber niemand diesen Parameter, sodass kein Ergebnis verfügbar ist.

    Zum Updaten muss also der Install-Befehl genutzt werden. Führt man Install aus, obwohl keine neuere als die installierte Version vorhanden ist, wird nachgefragt ob die lokale Version überschrieben werden soll.

    Programmname jetzt: nimble_up_check_cmd.nim

    Ich werde es dann später noch in die GUI-Version integrieren.

    EDIT 26.01.2022

    Ich habe hierfür jetzt auch eine Lösung mit GUI erstellt:

    PS: Habe gerade aktualisiert und festgestellt, dass bei den mit installierten Dependencies wohl ungültige/anders dargestellte url hinterlegt sind. Dadurch crasht das Programm bei erneutem Aufruf.

    Da muss ich noch mal ran. EDIT: Die Seite ist einfach nicht erreichbar, Fehlerabfrage jetzt integriert.


    So schauts dann aus:

  • let pkgsPath = r"C:\Users\BugFix\.nimble\pkgs" # PFAD ANPASSEN !!

    output = output & fmt"{pkgsHigh[i].name:<20}ver offline: {pkgsHigh[i].version:>7} - ver online: {pkgsHigh[i].versionOnline:>7} {needUp}{'\n'}"

    Habe zwei Stellen geändert, sollte so eigentlich auch bei euch passen.

    Code: nimble_up_check.nim
    let pkgsPath = getEnv("HOMEDRIVE") & getEnv("HOMEPATH") & r"\.nimble\pkgs"  # PFAD ANPASSEN !!
    # pkgsPath = C:\Users\ghost\.nimble\pkgs
    
    output &= fmt"{pkgsHigh[i].name:<20}ver offline: {pkgsHigh[i].version:>7} - ver online: {pkgsHigh[i].versionOnline:>7}  {needUp}{'\n'}"
    Code: nimble_up_check.nims
    --define:ssl # -d:ssl funktioniert nicht!

    VSCodium meckerte zwar kurz wegen dem Inhalt in der .nims... aber es funktioniert jetzt einfach mit F6 - super! ;)

    • Offizieller Beitrag

    Da stimmt etwas nicht bei nimgen... die 0.5.2 sollte dann ja eigentlich von nimble gefunden werden? Ein refresh hatte ich zuvor gemacht.

    "Sollte" ist hier das richtige Wort. ^^

    Refresh hat damit aber m.M.n. nichts zu tun, das ist wohl eher in der Search-Funktion begründet. Diese sollte eigentlich genauso vorgehen, wie ich in meinem Update-Check:

    - Repo url des benannten Pakets abfragen

    - dort aus "Paketname.nimble" die aktuelle Versionsnummer lesen

    Dabei hakt es wohl. - Gut, dass ich meinen Update Checker erstellt habe, der machts richtig. :P

  • Refresh hat damit aber m.M.n. nichts zu tun, das ist wohl eher in der Search-Funktion begründet.

    Wenn ich den Code in nimble.nim (>> packageinfo.nim) richtig verstehe, wird eine bereits vorhandene, evtl. veraltete, lokale Liste packages.json verwendet.

    Um also zu gewährleisten, dass diese Liste aktuell ist, muss vor (zumindest dem ersten) nimble search ein nimble refresh ausgeführt werden.

    https://github.com/genotrance/nimgen - dort steht: Nimgen wurde von Nimterop abgelöst. Bestehende Wrapper werden langsam auf Nimterop migriert. In Zukunft werden keine neuen Funktionen implementiert.

    Das erklärt aber nicht, warum nimble die Version nimgen 0.5.2, die es ja defintitiv gibt, nach einem refresh nicht anzeigt/installiert.

    Allerdings kann auch eine konkrete Version oder einen Versionsbereich angeben werden:

    nimble install nimgen@#headinstalliert die aktuellste Version (HEAD zeigt immer auf die neuste Version des ausgewählten Zweiges)
    nimble install nimgen@"0.5.2"installiert die Version 0.5.2
    nimble install nimgen@"> 0.5.1"installiert eine aktuellere (das ist nicht unbedingt die aktuellste) Version, als die angegebene

    C:\Users\ghost>nimble list -i|find "nimgen"

    nimgen [#head, 0.5.1]

    Mit #head habe ich also die aktuellste Version von nimgen bereits installiert...

    C:\Users\ghost>nimble dump nimgen

    name: "nimgen"

    version: "0.5.2"

    author: "genotrance"

    desc: "c2nim helper to simplify and automate the wrapping of C libraries"

    license: "MIT"

    skipDirs: "nimgen, tests, web"

    skipFiles: ""

    skipExt: "nim"

    installDirs: ""

    installFiles: ""

    installExt: ""

    requires: "nim >= 0.19.0, c2nim >= 0.9.14, regex >= 0.12.0"

    bin: "nimgen.exe"

    binDir: ""

    srcDir: "src"

    backend: "c"

    3 Mal editiert, zuletzt von Bitnugger (16. September 2020 um 06:54)