Sha256: 1a7200b54691ee1b50c39221646016712bd414478122dc8fe24aeda1542b6abe

Contents?: true

Size: 1.77 KB

Versions: 3

Compression:

Stored size: 1.77 KB

Contents

module Autoproj
    module PackageManagers
        # Package manager interface for Mac OS using homebrew as
        # its package manager
        class HomebrewManager < ShellScriptManager
            def initialize
                super(['brew'], true,
                        "brew install '%s'",
                        "brew install '%s'",
                        false)
            end

            def filter_uptodate_packages(packages, options = Hash.new)
                # TODO there might be duplicates in packages which should be fixed
                # somewhere else
                packages = packages.uniq
                result = `brew info --json=v1 '#{packages.join("' '")}'`
                result = begin
                             JSON.parse(result)
                         rescue JSON::ParserError
                             if result && !result.empty?
                                 Autoproj.warn "Error while parsing result of brew info --json=v1"
                             else
                                 # one of the packages is unknown fallback to install all
                                 # packaes which will complain about it
                             end
                             return packages
                         end
                # fall back if something else went wrong
                if packages.size != result.size
                    Autoproj.warn "brew info returns less or more packages when requested. Falling back to install all packages"
                    return packages
                end

                new_packages = []
                result.each do |pkg|
                    new_packages << pkg["name"] if pkg["installed"].empty?
                end
                new_packages
            end
        end
    end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
autoproj-2.0.0.rc3 lib/autoproj/package_managers/homebrew_manager.rb
autoproj-2.0.0.rc2 lib/autoproj/package_managers/homebrew_manager.rb
autoproj-2.0.0.rc1 lib/autoproj/package_managers/homebrew_manager.rb