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/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, ConstraintNotSatisfied, CookbookGenerator, CookbookNotFound, CookbookStore, CookbookSyntaxError, CookbookValidationFailure, Dependency, DependencyNotFound, DependencyNotInstalled, DeprecatedError, Downloader, DuplicateDemand, DuplicateDependencyDefined, 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, 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 =
"3.2.1"
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.
-
.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’.
69 70 71 72 |
# File 'lib/berkshelf.rb', line 69 def berkshelf_path path = @berkshelf_path || ENV['BERKSHELF_PATH'] || '~/.berkshelf' File.(path) end |
Class Method Details
.chef_config ⇒ Ridley::Chef::Config
The Chef configuration file.
89 90 91 |
# File 'lib/berkshelf.rb', line 89 def chef_config @chef_config ||= Ridley::Chef::Config.new(ENV['BERKSHELF_CHEF_CONFIG']) end |
.chef_config=(config) ⇒ Object
94 95 96 |
# File 'lib/berkshelf.rb', line 94 def chef_config=(config) @chef_config = config end |
.config ⇒ Berkshelf::Config
The Berkshelf configuration.
77 78 79 |
# File 'lib/berkshelf.rb', line 77 def config Berkshelf::Config.instance end |
.config=(config) ⇒ Object
82 83 84 |
# File 'lib/berkshelf.rb', line 82 def config=(config) Berkshelf::Config.set_config(config) end |
.cookbook_store ⇒ Berkshelf::CookbookStore
108 109 110 |
# File 'lib/berkshelf.rb', line 108 def cookbook_store CookbookStore.instance end |
.formatter ⇒ ~Formatter
Get the appropriate Formatter object based on the formatter classes that have been registered.
116 117 118 |
# File 'lib/berkshelf.rb', line 116 def formatter @formatter ||= HumanFormatter.new end |
.initialize_filesystem ⇒ Object
Initialize the filepath for the Berkshelf path..
99 100 101 102 103 104 105 |
# File 'lib/berkshelf.rb', line 99 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
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
# File 'lib/berkshelf.rb', line 121 def ridley_connection( = {}, &block) = .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] = { verify: ([:ssl_verify].nil?) ? Berkshelf.config.ssl.verify : [:ssl_verify]} 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
53 54 55 |
# File 'lib/berkshelf.rb', line 53 def root @root ||= Pathname.new(File.('../', File.dirname(__FILE__))) end |
.set_format(name) ⇒ ~Formatter
Specify the format for output
158 159 160 161 |
# File 'lib/berkshelf.rb', line 158 def set_format(name) id = name.to_s.capitalize @formatter = Berkshelf.const_get("#{id}Formatter").new end |
.which(executable) ⇒ String?
Location an executable in the current user’s $PATH
167 168 169 170 171 172 173 174 175 176 |
# File 'lib/berkshelf.rb', line 167 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 |