- Ruby 1.9.3+
- Chef 11.6.2+ chef-client upgrades
$ gem install mixlib-install
# Download latest stable chef for current platform
$ mixlib-install download chef
Run $ mixlib-install help
for additional commands and options.
require 'mixlib/install'
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"
options = {
channel: :current,
product_name: 'chef'
}
# product_version: :latest is the default
artifacts = Mixlib::Install.new(options).artifact_info
# => [#<Mixlib::Install::ArtifactInfo>, ...]
artifacts.first.url
# => => "https://packages.chef.io/files/current/chef/12.14.90/mac_os_x/10.11/chef-12.14.90-1.dmg"
options = {
channel: :current,
product_name: 'chef',
product_version: '12.14'
}
artifacts = Mixlib::Install.new(options).artifact_info
# => [#<Mixlib::Install::ArtifactInfo>]
artifacts.first.version
# => "12.14.89"
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"
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"
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...
options = {
channel: :current,
product_name: 'chef',
}
artifact = Mixlib::Install.new(options).artifact_info
artifact.platform # => "ubuntu"
artifact.platform_version # => "14.04"
options = {
channel: :stable,
product_name: 'chef',
}
Mixlib::Install.new(options).available_versions
# => ["12.13.3", "12.13.7"]
Mixlib::Install.available_versions("chef", "stable")
# => ["12.13.3", "12.13.7"]
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
.
options = {
channel: :stable,
product_name: 'chef',
user_agent_headers: ["my_product/1.2.3", "somethingelse"],
}
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.
options = {
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
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.
- Fork it ( https://github.com/[my-github-username]/mixlib-install/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request