¿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?

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)

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


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.