¿Cómo enumero todas las versiones de una gema disponibles en un sitio remoto?

133

Estoy tratando de encontrar todas las versiones disponibles de forma remota de una gema específica.

Intenté usar:

gem list rhc --remote

Pero muestra:

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

¿Algunas ideas?

opensas
fuente

Respuestas:

204

Bueno, fue más fácil de lo que pensaba (bueno, en realidad no, digamos tan fácil como debería ser):

gem list rhc --remote --all

Que devuelve:

*** 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)
opensas
fuente
52
También tenga en cuenta que "rhc" es una expresión regular, por lo que si solo desea ver esa, puede buscar gem list ^rhc$y las banderas "--remote" y "--todos" se pueden abreviar y combinar paragem list ^rhc$ -ra
Joshua Cheek
55
tenga en cuenta que puede pasar otras opciones, es decir. para obtener las últimas versiones preliminares del pasajero de phusion que desea: gem list -ra --pre passenger(-ra == --remote --all)
Mirek Rusin
55
@JoshuaCheek nota que algunos shells como zshtienen un análisis más avanzado y podrían atrapar la expresión regular dada de esta manera. Para estar más seguro (si pone algo como eso en un script o README) es ponerlo en una cadena para que estemos seguros de pasarlo 1-1, es decir, gem list '^rhc$'etc.
mgol
1
¡@m_gol estaba leyendo los comentarios ya que zshhice esto +1 por tu ayuda!
Jesse Whitham
utilizar --prereleasepara ver versiones beta
akostadinov
32

De acuerdo con la Guía de RubyGem, debe usar la searchpalabra clave. Entonces el comando podría ser:

gem search rhc --all

Si quieres el nombre exacto usa:

gem search ^rhc$ --all

Si desea incluir versiones preliminares, use --pre

gem search ^rhc$ --pre

Y si está utilizando zshagregar comillas:

gem search '^rhc$' --all

revs eyalev
fuente
44
utilizar --prereleasepara ver versiones beta
akostadinov
9

Para ampliar la respuesta de @ eyalev, si desea una lista de una versión por línea, aquí hay una línea:

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

Para que esto sea un poco más reutilizable, puede escribir algunas funciones (perdón por mis habilidades limitadas de bash):

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.
Jared Beck
fuente
-2

Tratar:

gem list [STRING] [options]

Por ejemplo:

gem list rhc -r

O tratar:

gem list -r rhc

( la documentación y el ejemplo proporcionado parecen contradecirse entre sí; pruebe ambos )


Ver la documentación:

http://docs.rubygems.org/read/chapter/10#page34

Solo bolivianos aquí
fuente
1
Esto no enumera todas las versiones
Adam Tegen