Build Status

Mixlib::Install

Supports

  • Ruby 1.9.3+
  • Chef 11.6.2+ chef-client upgrades

Command Line Usage

“ gem install mixlib-install

Download latest stable chef for current platform

$ mixlib-install download chef

Run $ mixlib-install help for additional commands and options.

API Usage

Load mixlib-install

“by require ‘mixlib/install’

Get URL for specific platform and package version

“by options = { channel: :current, product_name: ‘chef’, product_version: :latest, platform: ‘mac_os_x’, platform_version: ‘10.9’, architecture: ‘x86_64’ }

artifact = Mixlib::Install.new(options).artifact_info

=> #Mixlib::Install::ArtifactInfo

artifact.url

=> “https://packages.chef.io/files/current/chef/12.14.90/mac_os_x/10.9/chef-12.14.90-1.dmg”

Get list of artifacts for all platforms given a package version

“by options = { channel: :current, product_name: ‘chef’ }

product_version: :latest is the default

artifacts = Mixlib::Install.new(options).artifact_info

=> [#, ]

artifacts.first.url

=> => “https://packages.chef.io/files/current/chef/12.14.90/mac_os_x/10.11/chef-12.14.90-1.dmg”

Get latest artifacts for a partial version

“by options = { channel: :current, product_name: ‘chef’, product_version: ‘12.14’ }

artifacts = Mixlib::Install.new(options).artifact_info

=> [#]

artifacts.first.version

=> “12.14.89”

Get latest artifact for a partial version

“by options = { channel: :current, product_name: ‘chef’, product_version: ‘12’, platform: ‘mac_os_x’, platform_version: ‘10.9’, architecture: ‘x86_64’ }

artifact = Mixlib::Install.new(options).artifact_info

=> #Mixlib::Install::ArtifactInfo

artifact.version

=> “12.19.36”

Detect platform information

“by options = { channel: :current, product_name: ‘chef’, product_version: :latest }

artifact = Mixlib::Install.new(options).detect_platform

artifact.platform # => “mac_os_x” artifact.platform_version # => “10.10”

Use an artifact released for an earlier version of the platform

“by options = { channel: :current, product_name: ‘chef’, product_version: :latest, platform: ‘ubuntu’, platform_version: ‘15.04’, architecture: ‘x86_64’, platform_version_compatibility_mode: true }

artifact = Mixlib::Install.new(options).artifact_info

artifact.platform # => “ubuntu” artifact.platform_version # => “14.04”

platform_version_compatibility_mode will automatically be enabled if platform options are not specified.

If running on Ubuntu 15.04…

“by options = { channel: :current, product_name: ‘chef’, }

artifact = Mixlib::Install.new(options).artifact_info

artifact.platform # => “ubuntu” artifact.platform_version # => “14.04”

List the available versions for a product and channel

Instance method

“by options = { channel: :stable, product_name: ‘chef’, }

Mixlib::Install.new(options).available_versions

=> [12.13.3, 12.13.7]

Class method

“by Mixlib::Install.available_versions(“chef”, “stable”)

=> [12.13.3, 12.13.7]

User-Agent Request Headers

By default, all requests made by mixlib-install will include a User-Agent request header as mixlib-install/<version>. Additional User-Agent request headers can be added by setting the user_agent_headers option. When you want to identify a product using mixlib-install as a dependency we recommend the format product/version.

“by options = { channel: :stable, product_name: ‘chef’, user_agent_headers: [my_product/1.2.3, somethingelse], }

Collecting Software Dependencies and License Content

Collecting software dependencies and license content for ArtifactInfo instances requires additional requests to the repository server. By default, collection is disabled. To return data for instance methods software_dependencies and license_content, the include_metadata option must be enabled.

“ptions = { channel: :current, product_name: ‘chef’, product_version: :latest, platform: ‘mac_os_x’, platform_version: ‘10.9’, architecture: ‘x86_64’, include_metadata: true, }

artifact = Mixlib::Install.new(options).artifact_info

artifact.license_content.class

=> String

artifact.software_dependencies.class

=> Hash

By default, the instance methods return nil

Development

VCR is a tool that helps cache and replay http responses. When these responses change or when you add more tests you might need to update cached responses. Check out spec_helper.rb for instructions on how to do this.

Contributing

  1. Fork it ( https://github.com/[my-github-username]/mixlib-install/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request