Class: ImageOptim::BinResolver
- Inherits:
-
Object
- Object
- ImageOptim::BinResolver
- Defined in:
- lib/image_optim/bin_resolver.rb,
lib/image_optim/bin_resolver/bin.rb,
lib/image_optim/bin_resolver/error.rb,
lib/image_optim/bin_resolver/simple_version.rb,
lib/image_optim/bin_resolver/comparable_condition.rb
Overview
Handles resolving binaries and checking versions
If there is an environment variable XXX_BIN when resolving xxx, then a symlink to binary will be created in a temporary directory which will be added to PATH
Defined Under Namespace
Classes: Bin, BinNotFound, ComparableCondition, Error, SimpleVersion
Constant Summary collapse
- VENDOR_PATH =
Path to vendor at root of image_optim
File.('../../../vendor', __FILE__)
Instance Attribute Summary collapse
-
#dir ⇒ Object
readonly
Directory for symlinks to bins if XXX_BIN was used.
-
#pack_path ⇒ Object
readonly
Path to pack from image_optim_pack if used.
Class Method Summary collapse
-
.collect_errors(enumerable) ⇒ Object
Collect resolving errors when running block over items of enumerable.
Instance Method Summary collapse
-
#env_path ⇒ Object
Prepand ‘dir` and append `VENDOR_PATH` to `PATH` from environment.
-
#initialize(image_optim) ⇒ BinResolver
constructor
A new instance of BinResolver.
-
#resolve!(name) ⇒ Object
Binary resolving: create symlink if there is XXX_BIN environment variable, build Bin with full path, check binary version Return Bin instance.
Constructor Details
#initialize(image_optim) ⇒ BinResolver
Returns a new instance of BinResolver.
21 22 23 24 25 26 |
# File 'lib/image_optim/bin_resolver.rb', line 21 def initialize(image_optim) @image_optim = image_optim @bins = {} @lock = Mutex.new init_pack end |
Instance Attribute Details
#dir ⇒ Object (readonly)
Directory for symlinks to bins if XXX_BIN was used
16 17 18 |
# File 'lib/image_optim/bin_resolver.rb', line 16 def dir @dir end |
#pack_path ⇒ Object (readonly)
Path to pack from image_optim_pack if used
19 20 21 |
# File 'lib/image_optim/bin_resolver.rb', line 19 def pack_path @pack_path end |
Class Method Details
.collect_errors(enumerable) ⇒ Object
Collect resolving errors when running block over items of enumerable
68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/image_optim/bin_resolver.rb', line 68 def self.collect_errors(enumerable) errors = [] enumerable.each do |item| begin yield item rescue Error => e errors << e end end errors end |
Instance Method Details
#env_path ⇒ Object
Prepand ‘dir` and append `VENDOR_PATH` to `PATH` from environment
58 59 60 61 62 63 64 65 |
# File 'lib/image_optim/bin_resolver.rb', line 58 def env_path [ dir, pack_path, ENV['PATH'], VENDOR_PATH, ].compact.join(File::PATH_SEPARATOR) end |
#resolve!(name) ⇒ Object
Binary resolving: create symlink if there is XXX_BIN environment variable, build Bin with full path, check binary version Return Bin instance
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/image_optim/bin_resolver.rb', line 31 def resolve!(name) name = name.to_sym resolving(name) do path = symlink_custom_bin!(name) || full_path(name) bin = Bin.new(name, path) if path if bin && @image_optim.verbose $stderr << "Resolved #{bin}\n" end @bins[name] = bin bin.check! if bin end fail BinNotFound, "`#{name}` not found" unless @bins[name] @bins[name].check_fail! @bins[name] end |