Как вывести список установленных пакетов Chocolatey с помощью Ruby?

Цель

Сравните установленный пакет chocolatey с последней доступной версией в галерее Chocolatey, установите (cinst packageName) последнюю, если последняя версия> установленная версия.

Проблема

Для чтения вывод из clist -lo.

command = "clist -lo"

require 'open3'
Open3.popen3(command) do | stdrin, stdout, stderr|
  p stderr.read
  p stdout.read
end

Ни stderr.read, ни stdout.read не возвращают результат, в то время как командная строка делает это. Переменные пути верны. Выполнение clist -lo с помощью cmd по пути по умолчанию возвращает список установленных пакетов Chocolatey.

Вопрос

Как получить результат clist -lo с помощью Ruby?


person 030    schedule 03.05.2014    source источник


Ответы (1)


Не уверен, что это то, что вы ищете, но вы можете использовать capture3 вместо popen3 для захвата вывода.

command = "clist -lo"

require 'open3'
stdout, stderr, status = Open3.capture3(command)

puts "stdout: #{stdout}"
puts "stderr: #{stderr}"
puts "status: #{status}"

приводит к

stdout: 7zip.install 9.22.01.20130618
autohotkey_l 1.1.13.01
autohotkey_l.install 1.1.13.01
chocolatey 0.9.8.23
ChocolateyGUI 0.11.1
ConsoleZ 1.9.1.13351
cyg-get 1.1.0
cygwin 1.7.23.20130814
expresso 3.0.4334.20120225
git.install 1.8.3
Listary 4.02.1360
PowerShell 3.0.20121027
putty 0.63.0
ruby 2.0.0.24700
TeraCopy 2.27
Reading environment variables from registry. Please wait... Done.
stderr:
status: pid 47528 exit 0

для меня

person snowe    schedule 03.05.2014