Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions lib/sprinkle/installers/pip.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
module Sprinkle
module Installers
# The pip package installer installs Python packages.
#
#
# == Example Usage
#
# A simple installation:
#
# package :magic_beans do
# description "Beans beans they're good for your heart..."
# pip 'magic_beans'
# end
#
# You may also specify multiple packages as an array:
#
# package :magic_beans do
# pip %w(magic_beans magic_sauce)
# end
#
class Pip < Installer

##
# installs the pip packages passed
# :method: pip
# :call-seq: pip(*packages)
auto_api

verify_api do
def has_pip(package)
# `pip show INSTLLED` outputs something like:
#
# ---
# Name: bean
# ...
#
# And `pip show UNINSTALLED` outputs nothing (exit code is still 0).
# Thus we only need to match `-` once.
@commands << "pip show #{package} | grep -F -m 1 '-'"
end
end

protected

def install_commands #:nodoc:
cmd = "#{sudo_cmd}pip install #{@packages.join(' ')}"
end

end
end
end