class Chef::Provider::Package::SnapTM
Public Instance Methods
get_installed_package_by_name(name)
click to toggle source
# File lib/chef/provider/package/snap_tm.rb, line 66 def get_installed_package_by_name(name) cmd = shell_out("snap info #{name}") installed = cmd.stdout.lines.detect { |l| l.start_with? "installed:" } return {} unless installed { "name" => name, "version" => installed.split.at(1), } end
get_latest_package_version(name, channel)
click to toggle source
# File lib/chef/provider/package/snap_tm.rb, line 58 def get_latest_package_version(name, channel) cmd = shell_out("snap info #{name}") latest = cmd.stdout.lines.detect { |l| l.start_with? " latest/#{new_resource.channel}:" } return unless latest latest.split.at(1) end
install_package(names, versions)
click to toggle source
# File lib/chef/provider/package/snap_tm.rb, line 27 def install_package(names, versions) if new_resource.source install_snap_from_source(names, new_resource.source) else Array(names).each do |snap| snap_options = new_resource.options snapctl([ "install", "--channel=#{new_resource.channel}", snap_options&.map { |opt| "--#{opt}" }, snap, ].flatten.compact) end end end
remove_package(names, versions)
click to toggle source
# File lib/chef/provider/package/snap_tm.rb, line 44 def remove_package(names, versions) Array(names).each do |snap| snapctl([ "remove", snap, ]) end end
snapctl(*args)
click to toggle source
# File lib/chef/provider/package/snap_tm.rb, line 53 def snapctl(*args) # Deferred execution can result in exit code 10 shell_out!("snap", *args, returns: [0, 10]) end