Jak wyświetlić listę wszystkich wersji klejnotów dostępnych w zdalnej witrynie?


135

Próbuję znaleźć wszystkie dostępne zdalnie wersje określonego klejnotu.

Próbowałem użyć:

gem list rhc --remote

Ale to pokazuje:

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

Jakieś pomysły?

Odpowiedzi:


205

Cóż, było łatwiej niż myślałem (no cóż, nie do końca, powiedzmy tak łatwe, jak powinno):

gem list rhc --remote --all

Który zwraca:

*** 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
Pamiętaj również, że „rhc” to wyrażenie regularne, więc jeśli chcesz tylko spojrzeć na to, możesz wyszukać, gem list ^rhc$a flagi „--remote” i „--all” można skrócić i połączyć wgem list ^rhc$ -ra
Joshua Cheek

5
pamiętaj, że możesz przekazać inne opcje, tj. aby uzyskać najnowsze przedpremierowe wersje pasażera phusion, który chcesz: gem list -ra --pre passenger(-ra == --remote --all)
Mirek Rusin

5
@JoshuaCheek zauważ, że niektóre powłoki, takie jak, zshmają bardziej zaawansowaną analizę i mogą przechwytywać podane w ten sposób wyrażenie regularne. Aby być bezpieczniejszym (jeśli umieszczamy coś takiego w skrypcie lub README), należy umieścić to w ciągu, abyśmy byli pewni, że przekażemy to 1-1, tj. gem list '^rhc$'Itd.
mgol

1
@m_gol czytał komentarze, ponieważ mój zsh+1 za Twoją pomoc!
Jesse Whitham

użyj, --prereleaseaby zobaczyć wersje beta
akostadinov

33

Zgodnie z Przewodnikiem po RubyGem powinieneś użyć searchsłowa kluczowego. Więc polecenie może wyglądać następująco:

gem search rhc --all

Jeśli chcesz podać dokładną nazwę, użyj:

gem search ^rhc$ --all

Jeśli chcesz dołączyć wersje wstępne, użyj --pre

gem search ^rhc$ --pre

A jeśli używasz zshdodawania cudzysłowów:

gem search '^rhc$' --all


4
użyj, --prereleaseaby zobaczyć wersje beta
akostadinov

9

Aby rozszerzyć odpowiedź @ eyalev, jeśli chcesz listę jednej wersji w każdym wierszu, oto jedna linijka:

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

Aby uczynić to nieco bardziej możliwym do ponownego użycia, możesz napisać kilka funkcji (przepraszam za moje ograniczone umiejętności 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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.