Sha256: 5f277a187b94321a81f3329b341a84679ffd053bf2428225db1b36b602594186

Contents?: true

Size: 949 Bytes

Versions: 157

Compression:

Stored size: 949 Bytes

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/simple_cache'

module EacRubyUtils
  module Envs
    class Executable
      include ::EacRubyUtils::SimpleCache

      attr_reader :env, :name, :check_args

      def initialize(env, name, *check_args)
        @env = env
        @name = name
        @check_args = check_args
      end

      def exist?
        exist
      end

      def validate
        return nil if exist?

        "Program \"#{name}\" not found in environment #{env}"
      end

      def validate!
        message = validate

        raise ProgramNotFoundError, message if message
      end

      def command(*command_args)
        validate!
        env.command(name, *command_args)
      end

      private

      def exist_uncached
        env.command(name, *check_args).execute!
        true
      rescue Errno::ENOENT
        false
      end

      class ProgramNotFoundError < ::StandardError; end
    end
  end
end

Version data entries

157 entries across 157 versions & 3 rubygems

Version Path
eac_ruby_utils-0.70.0 lib/eac_ruby_utils/envs/executable.rb
avm-tools-0.104.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/executable.rb
ehbrs-tools-0.23.1 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/executable.rb
ehbrs-tools-0.23.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/executable.rb
eac_ruby_utils-0.69.1 lib/eac_ruby_utils/envs/executable.rb
avm-tools-0.103.1 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/executable.rb
eac_ruby_utils-0.69.0 lib/eac_ruby_utils/envs/executable.rb
avm-tools-0.103.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/executable.rb
ehbrs-tools-0.22.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/executable.rb
avm-tools-0.102.2 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/executable.rb
avm-tools-0.102.1 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/executable.rb
eac_ruby_utils-0.68.0 lib/eac_ruby_utils/envs/executable.rb
eac_ruby_utils-0.67.0 lib/eac_ruby_utils/envs/executable.rb
avm-tools-0.102.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/executable.rb
eac_ruby_utils-0.66.0 lib/eac_ruby_utils/envs/executable.rb
avm-tools-0.101.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/executable.rb
eac_ruby_utils-0.65.0 lib/eac_ruby_utils/envs/executable.rb
avm-tools-0.100.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/executable.rb
ehbrs-tools-0.21.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/executable.rb
avm-tools-0.99.1 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/executable.rb