Sha256: 5625eddb1414d64070bd58b440421769a77cbf4c7d146ea08df7ffd2c1a16bdb

Contents?: true

Size: 1016 Bytes

Versions: 2

Compression:

Stored size: 1016 Bytes

Contents

require 'ostruct'

class Velcro
  class Homebrew
    HOMEBREW_COMMAND = 'brew'

    def install_dependencies(dependencies)
      dependencies.each do |dependency|
        install(dependency)
      end
    end

    def install(dependency)
      command = "#{HOMEBREW_COMMAND} install #{dependency.name}"
      command << " -v #{dependency.version}" if dependency.version
      shellout(command)
    end

    def child_dependencies(dependency)
      deps(dependency).split.map do |child|
        child = OpenStruct.new(name: child)
        child.version = versions(child).split.first
        child
      end
    end

    def deps(dependency)
      command = "#{HOMEBREW_COMMAND} deps #{dependency.name}"
      shellout(command, true)
    end

    def versions(dependency)
      command = "#{HOMEBREW_COMMAND} versions --compact #{dependency.name}"
      shellout(command, true)
    end

    def shellout(command, quiet = false)
      output = `#{command}`
      puts output unless quiet
      output
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
velcro-0.1.0 lib/velcro/homebrew.rb
velcro-0.0.1 lib/velcro/homebrew.rb