Sha256: 431540edc90705ba00c8278056f6231fed840152471b5a65e2eebc7652b863fc

Contents?: true

Size: 779 Bytes

Versions: 8

Compression:

Stored size: 779 Bytes

Contents

module AptDependencies
  extend self

  def self.ensure!
    return "true" if deps_to_install.none?
    if sudo_password_required? && ENV["RAILS_ENV"] != "development"
      $stderr.puts "sudo requires password! cannot install #{deps_to_install.join(' ')}"
      exit 1
    else
      "sudo apt install -y #{deps_to_install.join(' ')}"
    end
  end

  private

  def deps_to_install
    installed_deps = `apt list #{deps.join(' ')} --installed 2>/dev/null`.chomp.split("\n")[1..]
      .map { |line| line.split("/")[0] }
    deps - installed_deps
  end

  def deps
    @deps ||= File.readlines("Aptfile", chomp: true).select { |line| line.length > 0 }
  rescue Errno::ENOENT
    @deps = []
  end

  def sudo_password_required?
    !system("sudo -n true 2>/dev/null")
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
bard-0.52.1 install_files/apt_dependencies.rb
bard-0.52.0 install_files/apt_dependencies.rb
bard-0.51.2 install_files/apt_dependencies.rb
bard-0.51.1 install_files/apt_dependencies.rb
bard-0.51.0 install_files/apt_dependencies.rb
bard-0.50.5 install_files/apt_dependencies.rb
bard-0.50.4 install_files/apt_dependencies.rb
bard-0.50.3 install_files/apt_dependencies.rb