Sha256: 4f4b4b4d845a2e3465171b40cac52e8848923dcde22bf575212af3965f0b8d30

Contents?: true

Size: 1.76 KB

Versions: 6

Compression:

Stored size: 1.76 KB

Contents

module Autoproj
    module PackageManagers
        # Package manager interface for Mac OS using homebrew as
        # its package manager
        class HomebrewManager < ShellScriptManager
            def initialize(ws)
                super(ws, 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

6 entries across 6 versions & 1 rubygems

Version Path
autoproj-2.0.0.rc10 lib/autoproj/package_managers/homebrew_manager.rb
autoproj-2.0.0.rc9 lib/autoproj/package_managers/homebrew_manager.rb
autoproj-2.0.0.rc8 lib/autoproj/package_managers/homebrew_manager.rb
autoproj-2.0.0.rc6 lib/autoproj/package_managers/homebrew_manager.rb
autoproj-2.0.0.rc5 lib/autoproj/package_managers/homebrew_manager.rb
autoproj-2.0.0.rc4 lib/autoproj/package_managers/homebrew_manager.rb