Samstag, 25. Februar 2012

yab - installierbare "OptionalPackages" ermitteln

Nachdem ich Euch in meinem letzten Beitrag verschiedene Möglichkeiten gezeigt habe wie man mit "yab" die bereits installierten optionalen Pakete ermitteln kann, möchte ich Euch heute einen Weg zeigen, wie man auch die noch zu installierenden (sprich die noch nicht installierten) optionalen Pakete abfragen kann.
Als Grundlage dient die Sub- Routine aus dem ersten Beispiel. Mit zwei kleinen Änderungen kann diese direkt für die neue Aufgabe übernommen werden. Auch hier ist darauf zu achten, das dies nur funktioniert wenn eine Internet- Verbindung besteht.

Als erstes geben wir der Sub- Routine einen neuen anderen Namen und als zweites tauschen wir die Zeile

if (Line$(i) = "Optional Packages that have been installed:") then

gegen die folgende aus.

if (Line$(i) = "Installable Optional Packages:") then

Der resultierende Quelltext sollten dann wie folgt aussehen. Der Rest bleibt gleich und die Sub- Routine kann dann wie folgt aufgerufen werden.

InstallablePackages$ = _GetInstallableOptionalPackages$()
print InstallablePackages$


export sub _GetInstallableOptionalPackages$()

  // Variablen definieren
  local SystemInput$
  local NumberOfTokens
  local OP$
  local Result$

  dim Line$(1)

  // den Befehl "installoptionalpackage -l" aufrufen
  // und Ausgabe in SystemInput$ speichern
  SystemInput$ = system$("installoptionalpackage -l")

  // alles in einzelne Zeilen zerlegen
  NumberOfTokens = split(SystemInput$, Line$(), "\n")

  // die einzelnen Zeilen durchgehen und auswerten    
  for i = 1 to NumberOfTokens

    // wenn diese Zeile gefunden wird, stehen in der nächsten Zeile
    // die gewünschten Daten
    if (Line$(i) = "Installable Optional Packages:") then

      // Daten übernehmen und Suchvorgang beenden
      OP$ = Line$(i + 1)
      break

    endif

  next i

  // den erhaltenen String wieder zerlegen und die
  // Leerzeichen gegen "\n" (LineFeed) austauschen
  NumberOfTokens = split(OP$, Line$(), " ")

  for i = 1 to NumberOfTokens

    Result$ = Result$ + Line$(i) + "\n"

  next i

  // Ergebnis zurückliefern
  return Result$

end sub


(getestet mit Haiku R1 Alpha 3 und yab 1.7)

Keine Kommentare:

Kommentar veröffentlichen