Module: Berkshelf
- Extended by:
- Mixin::Logging
- Defined in:
- lib/berkshelf.rb,
lib/berkshelf/cli.rb,
lib/berkshelf/shell.rb,
lib/berkshelf/config.rb,
lib/berkshelf/errors.rb,
lib/berkshelf/logger.rb,
lib/berkshelf/source.rb,
lib/berkshelf/version.rb,
lib/berkshelf/location.rb,
lib/berkshelf/lockfile.rb,
lib/berkshelf/packager.rb,
lib/berkshelf/resolver.rb,
lib/berkshelf/uploader.rb,
lib/berkshelf/berksfile.rb,
lib/berkshelf/installer.rb,
lib/berkshelf/mixin/git.rb,
lib/berkshelf/validator.rb,
lib/berkshelf/dependency.rb,
lib/berkshelf/downloader.rb,
lib/berkshelf/source_uri.rb,
lib/berkshelf/visualizer.rb,
lib/berkshelf/file_syncer.rb,
lib/berkshelf/ssl_policies.rb,
lib/berkshelf/locations/git.rb,
lib/berkshelf/mixin/logging.rb,
lib/berkshelf/base_generator.rb,
lib/berkshelf/commands/shelf.rb,
lib/berkshelf/community_rest.rb,
lib/berkshelf/cookbook_store.rb,
lib/berkshelf/init_generator.rb,
lib/berkshelf/locations/base.rb,
lib/berkshelf/locations/path.rb,
lib/berkshelf/resolver/graph.rb,
lib/berkshelf/cached_cookbook.rb,
lib/berkshelf/formatters/base.rb,
lib/berkshelf/formatters/json.rb,
lib/berkshelf/formatters/null.rb,
lib/berkshelf/formatters/human.rb,
lib/berkshelf/locations/github.rb,
lib/berkshelf/cookbook_generator.rb,
lib/berkshelf/commands/test_command.rb
Defined Under Namespace
Modules: FileSyncer, Mixin, Validator Classes: AbstractFunction, ArgumentError, BaseFormatter, BaseGenerator, BaseLocation, Berksfile, BerksfileNotFound, BerksfileReadError, BerkshelfError, CachedCookbook, ChefConnectionError, Cli, CommunityREST, CommunitySiteError, Config, ConfigNotFound, ConfigurationError, ConstraintNotSatisfied, CookbookGenerator, CookbookNotFound, CookbookStore, CookbookSyntaxError, CookbookValidationFailure, Dependency, DependencyNotFound, DependencyNotInstalled, DeprecatedError, Downloader, DuplicateDemand, DuplicateDependencyDefined, EnvironmentFileNotFound, EnvironmentNotFound, FrozenCookbook, GitCommandError, GitError, GitLocation, GitNotInstalled, GithubLocation, GraphvizCommandFailed, GraphvizNotInstalled, HumanFormatter, InitGenerator, Installer, InsufficientPrivledges, InternalError, InvalidConfiguration, InvalidCookbookFiles, InvalidSourceURI, JsonFormatter, LicenseNotFound, Location, Lockfile, LockfileNotFound, LockfileOutOfSync, LockfileParserError, Logger, MismatchedCookbookName, MissingLockfileCookbookVersion, NoAPISourcesDefined, NoSolutionError, NotACookbook, NullFormatter, OutdatedDependency, PackageError, Packager, PathLocation, Resolver, SSLPolicy, Shelf, Source, SourceURI, TestCommand, UnknownCompressionType, UploadFailure, Uploader, Visualizer
Constant Summary collapse
- DEFAULT_FILENAME =
'Berksfile'.freeze
- Shell =
Subclass the current shell (which is different based on the OS)
Class.new(Thor::Base.shell) do # Mute the output of this instance of UI until {#unmute!} is called def mute! @mute = true end # Unmute the output of this instance of UI until {#mute!} is called def unmute! @mute = false end def say(*args) return if quiet? super(*args) end alias_method :info, :say def warn(, color = :yellow) say(, color) end def error(, color = :red) = set_color(, *color) if color super() end end
- VERSION =
"5.5.0"
Class Attribute Summary collapse
-
.berkshelf_path ⇒ String
Returns the filepath to the location Berkshelf will use for storage; temp files will go here, Cookbooks will be downloaded to or uploaded from here.
- .ui ⇒ Berkshelf::Shell
Attributes included from Mixin::Logging
Class Method Summary collapse
-
.chef_config ⇒ Ridley::Chef::Config
The Chef configuration file.
- .chef_config=(config) ⇒ Object
-
.config ⇒ Berkshelf::Config
The Berkshelf configuration.
- .config=(config) ⇒ Object
- .cookbook_store ⇒ Berkshelf::CookbookStore
-
.formatter ⇒ ~Formatter
Get the appropriate Formatter object based on the formatter classes that have been registered.
-
.initialize_filesystem ⇒ Object
Initialize the filepath for the Berkshelf path..
- .ridley_connection(options = {}, &block) ⇒ Object
- .root ⇒ Pathname
-
.set_format(name) ⇒ ~Formatter
Specify the format for output.
- .ssl_policy ⇒ Object
-
.which(executable) ⇒ String?
Location an executable in the current user’s $PATH.
Class Attribute Details
.berkshelf_path ⇒ String
Returns the filepath to the location Berkshelf will use for storage; temp files will go here, Cookbooks will be downloaded to or uploaded from here. By default this is ‘~/.berkshelf’ but can be overridden by specifying a value for the ENV variable ‘BERKSHELF_PATH’.
71 72 73 |
# File 'lib/berkshelf.rb', line 71 def berkshelf_path @berkshelf_path ||= File.(ENV['BERKSHELF_PATH'] || '~/.berkshelf') end |
Class Method Details
.chef_config ⇒ Ridley::Chef::Config
The Chef configuration file.
90 91 92 |
# File 'lib/berkshelf.rb', line 90 def chef_config @chef_config ||= Ridley::Chef::Config.new(ENV['BERKSHELF_CHEF_CONFIG']) end |
.chef_config=(config) ⇒ Object
95 96 97 |
# File 'lib/berkshelf.rb', line 95 def chef_config=(config) @chef_config = config end |
.config ⇒ Berkshelf::Config
The Berkshelf configuration.
78 79 80 |
# File 'lib/berkshelf.rb', line 78 def config Berkshelf::Config.instance end |
.config=(config) ⇒ Object
83 84 85 |
# File 'lib/berkshelf.rb', line 83 def config=(config) Berkshelf::Config.set_config(config) end |
.cookbook_store ⇒ Berkshelf::CookbookStore
109 110 111 |
# File 'lib/berkshelf.rb', line 109 def cookbook_store CookbookStore.instance end |
.formatter ⇒ ~Formatter
Get the appropriate Formatter object based on the formatter classes that have been registered.
117 118 119 |
# File 'lib/berkshelf.rb', line 117 def formatter @formatter ||= HumanFormatter.new end |
.initialize_filesystem ⇒ Object
Initialize the filepath for the Berkshelf path..
100 101 102 103 104 105 106 |
# File 'lib/berkshelf.rb', line 100 def initialize_filesystem FileUtils.mkdir_p(berkshelf_path, mode: 0755) unless File.writable?(berkshelf_path) raise InsufficientPrivledges.new(berkshelf_path) end end |
.ridley_connection(options = {}, &block) ⇒ Object
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 |
# File 'lib/berkshelf.rb', line 126 def ridley_connection( = {}, &block) = {} [:verify] = if [:ssl_verify].nil? Berkshelf.config.ssl.verify else [:ssl_verify] end [:cert_store] = ssl_policy.store if ssl_policy.store = .slice(:ssl) [:server_url] = [:server_url] || Berkshelf.config.chef.chef_server_url [:client_name] = [:client_name] || Berkshelf.config.chef.node_name [:client_key] = [:client_key] || Berkshelf.config.chef.client_key [:ssl] = unless [:server_url].present? raise ChefConnectionError, 'Missing required attribute in your Berkshelf configuration: chef.server_url' end unless [:client_name].present? raise ChefConnectionError, 'Missing required attribute in your Berkshelf configuration: chef.node_name' end unless [:client_key].present? raise ChefConnectionError, 'Missing required attribute in your Berkshelf configuration: chef.client_key' end # @todo Something scary going on here - getting an instance of Kitchen::Logger from test-kitchen # https://github.com/opscode/test-kitchen/blob/master/lib/kitchen.rb#L99 Celluloid.logger = nil unless ENV["DEBUG_CELLULOID"] Ridley.open(, &block) rescue Ridley::Errors::RidleyError => ex log.exception(ex) raise ChefConnectionError, ex # todo implement end |
.root ⇒ Pathname
55 56 57 |
# File 'lib/berkshelf.rb', line 55 def root @root ||= Pathname.new(File.('../', File.dirname(__FILE__))) end |
.set_format(name) ⇒ ~Formatter
Specify the format for output
170 171 172 173 |
# File 'lib/berkshelf.rb', line 170 def set_format(name) id = name.to_s.capitalize @formatter = Berkshelf.const_get("#{id}Formatter").new end |
.ssl_policy ⇒ Object
121 122 123 |
# File 'lib/berkshelf.rb', line 121 def ssl_policy @ssl_policy ||= SSLPolicy.new end |
.which(executable) ⇒ String?
Location an executable in the current user’s $PATH
179 180 181 182 183 184 185 186 187 188 |
# File 'lib/berkshelf.rb', line 179 def which(executable) if File.file?(executable) && File.executable?(executable) executable elsif ENV['PATH'] path = ENV['PATH'].split(File::PATH_SEPARATOR).find do |p| File.executable?(File.join(p, executable)) end path && File.(executable, path) end end |