bsdcontrol.rb/lib/bsd/control.rb

40 lines
844 B
Ruby
Raw Normal View History

2024-03-01 02:29:43 +01:00
module BSD::Control
require_relative "control/feature"
Error = Class.new(RuntimeError)
2024-03-01 05:28:54 +01:00
##
# @return [String]
# Returns the version of libhbsdcontrol.
def self.library_version
FFI.library_version
end
2024-03-01 02:29:43 +01:00
##
# @return [Array<BSD::Control::Feature>]
def self.available_features
Feature.available
end
##
# @example
# BSD::Control
2024-03-01 03:13:22 +01:00
# .feature!(:mprotect)
# .enable!("/usr/local/bin/firefox")
2024-03-01 02:29:43 +01:00
#
# @param [String] name
# The name of a feature.
#
# @raise [BSD::Control::Error]
# When a feature is not found.
#
# @return [BSD::Control::Feature]
# Returns an instance of BSD::Control::Feature.
def self.feature!(name)
feature = Feature.available.find { _1.name == name.to_s }
2024-03-01 02:29:43 +01:00
feature ? feature : raise(Error, "feature '#{name}' wasn't found")
end
module FFI
end
end