Como listar todas as versões de uma gema disponíveis em um site remoto?


133

Estou tentando descobrir todas as versões remotamente disponíveis de uma jóia especificada.

Eu tentei usar:

gem list rhc --remote

Mas mostra:

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

Alguma ideia?

Respostas:


204

Bem, foi mais fácil do que eu pensava (bem, na verdade não, digamos o mais fácil que deveria ser):

gem list rhc --remote --all

Que retorna:

*** 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
Observe também que "rhc" é uma expressão regular, portanto, se você quiser apenas ver essa, poderá procurar gem list ^rhc$e os sinalizadores "--remote" e "--all" podem ser abreviados e combinados paragem list ^rhc$ -ra
Joshua Cheek

5
note que você pode passar outras opções, ie. para receber as últimas pré-lançamentos de passageiros phusion que você gostaria de: gem list -ra --pre passenger(-ra == --remote --all)
Mirek Rusin

5
O @JoshuaCheek observa que alguns shells, como a zshanálise mais avançada, podem capturar o regex fornecido dessa maneira. Para ser mais seguro (se colocando sth como que em um script ou README) é colocá-lo em uma corda de modo que temos a certeza que passá-lo 1-1, ou seja, gem list '^rhc$'etc
mgol

1
@m_gol passou a ler os comentários como eu zshfiz este +1 por sua ajuda!
usar o seguinte

use --prereleasepara ver versões beta
akostadinov 5/15/15

32

De acordo com o Guia do RubyGem, você deve usar a searchpalavra - chave. Portanto, o comando pode ser:

gem search rhc --all

Se você quiser o nome exato, use:

gem search ^rhc$ --all

Se você deseja incluir versões de pré-lançamento, use --pre

gem search ^rhc$ --pre

E se você estiver usando zshadicionar aspas:

gem search '^rhc$' --all


4
use --prereleasepara ver versões beta
akostadinov

9

Para estender a resposta do @ eyalev, se você quiser uma lista de uma versão por linha, aqui está uma lista:

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

Para tornar isso um pouco mais reutilizável, você pode escrever algumas funções (perdoe minhas habilidades limitadas do 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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.