Wie liste ich alle Versionen eines Edelsteins auf, die an einem entfernten Standort verfügbar sind?


133

Ich versuche, alle remote verfügbaren Versionen eines bestimmten Edelsteins herauszufinden.

Ich habe versucht:

gem list rhc --remote

Aber es zeigt:

*** REMOTE GEMS ***
rhc (0.84.15)
rhcp (0.2.18)
rhcp_shell (0.2.12)

Irgendwelche Ideen?

Antworten:


204

Nun, es war einfacher als ich dachte (nun, nicht wirklich, sagen wir so einfach wie es sein sollte):

gem list rhc --remote --all

Welches kehrt zurück:

*** REMOTE GEMS ***
rhc (0.84.15, 0.84.13, 0.83.9, 0.82.18, 0.81.14, 0.80.5, 0.79.5, 0.77.8, 0.75.9, 0.74.6, 0.74.5, 0.73.14, 0.72.29, 0.71.2, 0.69.6, 0.69.3, 0.68.5)
rhcp (0.2.18, 0.2.17, 0.2.16, 0.2.15, 0.2.14, 0.1.9, 0.1.8, 0.1.7, 0.1.6, 0.1.5, 0.1.4, 0.1.3, 0.1.2)
rhcp_shell (0.2.12, 0.2.11, 0.0.9, 0.0.7, 0.0.6, 0.0.5, 0.0.4, 0.0.3, 0.0.2, 0.0.1)

52
Beachten Sie auch, dass "rhc" ein regulärer Ausdruck ist. Wenn Sie sich also nur diesen ansehen möchten, können Sie danach suchen gem list ^rhc$und die Flags "--remote" und "--all" können fürgem list ^rhc$ -ra
Joshua Cheek

5
Beachten Sie, dass Sie andere Optionen übergeben können, z. Um die neuesten Vorabversionen von Phusion Passenger zu erhalten, möchten Sie: gem list -ra --pre passenger(-ra == --remote --all)
Mirek Rusin

5
@JoshuaCheek Beachten Sie, dass einige Shells wie zshfortgeschrittenes Parsen haben und den auf diese Weise gegebenen regulären Ausdruck abfangen könnten. Um sicherer zu sein (wenn Sie so etwas in ein Skript oder eine README- gem list '^rhc$'
Datei einfügen

1
@m_gol hat gerade die Kommentare gelesen, als ich zshdies +1 für Ihre Hilfe getan habe!
Jesse Whitham

Verwenden Sie --prerelease, um Beta-Versionen zu sehen
Akostadinov

32

Laut RubyGem's Guide sollten Sie das searchSchlüsselwort verwenden. Der Befehl könnte also lauten:

gem search rhc --all

Wenn Sie den genauen Namen wünschen, verwenden Sie:

gem search ^rhc$ --all

Wenn Sie Vorabversionen einschließen möchten, verwenden Sie --pre

gem search ^rhc$ --pre

Und wenn Sie zshAnführungszeichen hinzufügen:

gem search '^rhc$' --all


4
Verwenden Sie --prerelease, um Beta-Versionen zu sehen
Akostadinov

9

Um die Antwort von @ eyalev zu erweitern, wenn Sie eine Liste mit einer Version pro Zeile wünschen, hier ein Einzeiler:

gem search '^rspec$' --all \
  | grep -o '\((.*)\)$' \
  | tr -d '() ' \
  | tr ',' "\n" \ 
  | sort
0.0.10
0.1.0
0.1.1
# etc.

Um dies ein bisschen wiederverwendbarer zu machen, könnten Sie einige Funktionen schreiben (entschuldigen Sie meine begrenzten Bash-Fähigkeiten):

function extract_gem_versions() {   
  echo "$1" \
    | grep -o '\((.*)\)$' \
    | tr -d '() ' \
    | tr ',' "\n"; 
}

function gem_versions() { 
  local gem_name="$1"; 
  local pattern="^${gem_name}$";  
  local vers_str="$(gem search ${pattern} --all)";  
  extract_gem_versions "$vers_str";  
}

gem_versions rspec | sort
0.0.10
0.1.0
0.1.1
# etc.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.