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.6.4"
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’.
81 82 83 |
# File 'lib/berkshelf.rb', line 81 def berkshelf_path @berkshelf_path ||= File.(ENV["BERKSHELF_PATH"] || "~/.berkshelf") end |
Class Method Details
.chef_config ⇒ Ridley::Chef::Config
The Chef configuration file.
100 101 102 |
# File 'lib/berkshelf.rb', line 100 def chef_config @chef_config ||= Ridley::Chef::Config.new(ENV["BERKSHELF_CHEF_CONFIG"]) end |
.chef_config=(config) ⇒ Object
105 106 107 |
# File 'lib/berkshelf.rb', line 105 def chef_config=(config) @chef_config = config end |
.config ⇒ Berkshelf::Config
The Berkshelf configuration.
88 89 90 |
# File 'lib/berkshelf.rb', line 88 def config Berkshelf::Config.instance end |
.config=(config) ⇒ Object
93 94 95 |
# File 'lib/berkshelf.rb', line 93 def config=(config) Berkshelf::Config.set_config(config) end |
.cookbook_store ⇒ Berkshelf::CookbookStore
119 120 121 |
# File 'lib/berkshelf.rb', line 119 def cookbook_store CookbookStore.instance end |
.formatter ⇒ ~Formatter
Get the appropriate Formatter object based on the formatter classes that have been registered.
127 128 129 |
# File 'lib/berkshelf.rb', line 127 def formatter @formatter ||= HumanFormatter.new end |
.initialize_filesystem ⇒ Object
Initialize the filepath for the Berkshelf path..
110 111 112 113 114 115 116 |
# File 'lib/berkshelf.rb', line 110 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
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 161 162 163 164 165 166 167 168 169 170 |
# File 'lib/berkshelf.rb', line 136 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
65 66 67 |
# File 'lib/berkshelf.rb', line 65 def root @root ||= Pathname.new(File.("../", File.dirname(__FILE__))) end |
.set_format(name) ⇒ ~Formatter
Specify the format for output
180 181 182 183 |
# File 'lib/berkshelf.rb', line 180 def set_format(name) id = name.to_s.capitalize @formatter = Berkshelf.const_get("#{id}Formatter").new end |
.ssl_policy ⇒ Object
131 132 133 |
# File 'lib/berkshelf.rb', line 131 def ssl_policy @ssl_policy ||= SSLPolicy.new end |
.which(executable) ⇒ String?
Location an executable in the current user’s $PATH
189 190 191 192 193 194 195 196 197 198 |
# File 'lib/berkshelf.rb', line 189 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 |