Come posso elencare tutte le versioni di una gemma disponibili in un sito remoto?


133

Sto cercando di scoprire tutte le versioni disponibili in remoto di una gemma specificata.

Ho provato a usare:

gem list rhc --remote

Ma mostra:

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

Qualche idea?

Risposte:


205

Bene, è stato più facile di quanto pensassi (beh, non proprio, diciamo facile come dovrebbe essere):

gem list rhc --remote --all

Che ritorna:

*** 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
Nota anche che "rhc" è una regex, quindi se vuoi solo guardarlo, puoi cercare gem list ^rhc$e le bandiere "--remote" e "--all" possono essere abbreviate e combinate pergem list ^rhc$ -ra
Joshua Cheek

5
tieni presente che puoi passare altre opzioni, ad es. per ottenere le ultime pre-release del passeggero phusion che vorresti: gem list -ra --pre passenger(-ra == --remote --all)
Mirek Rusin

5
@JoshuaCheek nota che alcune shell come zshhanno un parsing più avanzato e potrebbero catturare la regex data in questo modo. Essere più sicuri (se mettere sth in questo modo in uno script o README) è metterlo in una stringa in modo che siamo sicuri di passarlo 1-1, cioè gem list '^rhc$'ecc.
mgol

1
@m_gol mi è capitato di leggere i commenti mentre zshfacevo questo +1 per il tuo aiuto!
Jesse Whitham,

usare --prereleaseper vedere le versioni beta
akostadinov il

32

Secondo la Guida di RubyGem dovresti usare la searchparola chiave. Quindi il comando potrebbe essere:

gem search rhc --all

Se vuoi il nome esatto usa:

gem search ^rhc$ --all

Se si desidera includere versioni non definitive, utilizzare --pre

gem search ^rhc$ --pre

E se stai usando zshaggiungi citazioni:

gem search '^rhc$' --all


4
usare --prereleaseper vedere le versioni beta
akostadinov il

9

Per estendere la risposta di @ eyalev, se desideri un elenco di una versione per riga, ecco una riga:

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

Per renderlo un po 'più riutilizzabile, potresti scrivere alcune funzioni (scusate le mie abilità bash limitate):

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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.