Làm cách nào để liệt kê tất cả các phiên bản đá quý có sẵn tại một trang web từ xa?


133

Tôi đang cố gắng tìm hiểu tất cả các phiên bản có sẵn từ xa của một loại đá quý được chỉ định.

Tôi đã thử sử dụng:

gem list rhc --remote

Nhưng nó cho thấy:

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

Có ý kiến ​​gì không?

Câu trả lời:


204

Chà, nó dễ hơn tôi nghĩ (ừ, không hẳn vậy, hãy nói dễ như nó phải thế):

gem list rhc --remote --all

Trả về:

*** 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
Cũng lưu ý rằng "rhc" là một biểu thức chính quy, vì vậy nếu bạn chỉ muốn nhìn vào đó, bạn có thể tìm kiếm gem list ^rhc$và các cờ "--remote" và "--all" có thể được viết tắt và kết hợp chogem list ^rhc$ -ra
Joshua Cheek

5
lưu ý rằng bạn có thể vượt qua các tùy chọn khác, tức là. để có được bản phát hành trước của hành khách lừa đảo mà bạn muốn: gem list -ra --pre passenger(-ra == --remote --all)
Mirek Rusin

5
@JoshuaCheek lưu ý rằng một số shell như zshphân tích cú pháp nâng cao hơn và có thể bắt được biểu thức chính quy theo cách này. Để an toàn hơn (nếu đặt sth như thế trong tập lệnh hoặc README) là đặt chuỗi đó thành một chuỗi sao cho chúng tôi chắc chắn chúng tôi vượt qua nó 1-1, tức là gem list '^rhc$'v.v.
mgol

1
@m_gol tình cờ đọc được các bình luận vì tôi zshđã làm +1 này để được giúp đỡ!
Jesse Whitham

sử dụng --prereleaseđể xem các phiên bản beta
akostadinov

32

Theo Hướng dẫn của RubyGem, bạn nên sử dụng searchtừ khóa. Vì vậy, lệnh có thể là:

gem search rhc --all

Nếu bạn muốn tên chính xác sử dụng:

gem search ^rhc$ --all

Nếu bạn muốn bao gồm các phiên bản phát hành trước, hãy sử dụng --pre

gem search ^rhc$ --pre

Và nếu bạn đang sử dụng zshthêm dấu ngoặc kép:

gem search '^rhc$' --all


4
sử dụng --prereleaseđể xem các phiên bản beta
akostadinov

9

Để mở rộng câu trả lời của @ eyalev, nếu bạn muốn có một danh sách một phiên bản trên mỗi dòng, đây là một dòng:

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

Để làm cho điều này trở nên hữu dụng hơn một chút, bạn có thể viết một số chức năng (bỏ qua các kỹ năng bash hạn chế của tôi):

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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.