Module: BSD::Control

Defined in:
lib/bsd/control.rb,
lib/bsd/control/context.rb,
lib/bsd/control/feature.rb,
lib/bsd/control/version.rb

Defined Under Namespace

Classes: Context, Feature

Constant Summary collapse

Error =
Class.new(RuntimeError)
VERSION =
"0.3.0"

Class Method Summary collapse

Class Method Details

.contextBSD::Control::Context

Returns an instance of BSD::Control::Context

Returns:



12
13
14
# File 'lib/bsd/control.rb', line 12

def self.context
  @context ||= BSD::Control::Context.new
end

.library_versionString

Returns the version of libhbsdcontrol

Returns:

  • (String)

    Returns the version of libhbsdcontrol



19
20
21
# File 'lib/bsd/control.rb', line 19

def self.library_version
  context.library_version
end

.set_namespace(namespace) ⇒ void

This method returns an undefined value.

Parameters:

  • namespace (#to_s)

    Either “user” or “system”

Raises:

  • (ArgumentError)

    When an invalid namespace was given



29
30
31
# File 'lib/bsd/control.rb', line 29

def self.set_namespace(namespace)
  context.set_namespace(namespace.to_s)
end

.namespaceString

Returns the current namespace

Returns:

  • (String)

    Returns the current namespace



36
37
38
# File 'lib/bsd/control.rb', line 36

def self.namespace
  context.namespace
end

.available_featuresArray<BSD::Control::Feature>

Returns an array of available features

Returns:



43
44
45
# File 'lib/bsd/control.rb', line 43

def self.available_features
  context.available_features
end

.feature(name) ⇒ BSD::Control::Feature Also known as: []

Returns an instance of BSD::Control::Feature

Examples:

# This works
BSD::Control
  .feature(:mprotect)
  .enable!("/usr/local/bin/emacs-29.2")
# This also works
BSD::Control[:mprotect].enable!("/usr/local/bin/emacs-29.2")

Parameters:

  • name (String)

    The name of a feature

Returns:

Raises:



61
62
63
64
# File 'lib/bsd/control.rb', line 61

def self.feature(name)
  feature = available_features.find { _1.name == name.to_s }
  feature || raise(Error, "'#{name}' wasn't found")
end