Class: Wheneverd::Systemd::Analyze

Inherits:
Object
  • Object
show all
Defined in:
lib/wheneverd/systemd/analyze.rb

Overview

Thin wrapper around systemd-analyze.

Constant Summary collapse

DEFAULT_SYSTEMD_ANALYZE =
"systemd-analyze"

Class Method Summary collapse

Class Method Details

.calendar(value, systemd_analyze: DEFAULT_SYSTEMD_ANALYZE) ⇒ Array(String, String)

Run systemd-analyze calendar <value>.

Parameters:

  • value (String)

    an OnCalendar= value

  • systemd_analyze (String) (defaults to: DEFAULT_SYSTEMD_ANALYZE)

    path to the systemd-analyze executable

Returns:

  • (Array(String, String))

    stdout and stderr

Raises:



17
18
19
# File 'lib/wheneverd/systemd/analyze.rb', line 17

def self.calendar(value, systemd_analyze: DEFAULT_SYSTEMD_ANALYZE)
  run(systemd_analyze, "calendar", value.to_s)
end

.run(systemd_analyze, *args, user: false) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/wheneverd/systemd/analyze.rb', line 32

def self.run(systemd_analyze, *args, user: false)
  cmd = [systemd_analyze.to_s]
  cmd << "--user" if user
  cmd.concat(args.flatten.map(&:to_s))

  stdout, stderr, status = Open3.capture3(*cmd)
  raise SystemdAnalyzeError, format_error(cmd, status, stdout, stderr) unless status.success?

  [stdout, stderr]
rescue Errno::ENOENT
  raise SystemdAnalyzeError, "systemd-analyze not found (tried: #{systemd_analyze})"
end

.verify(paths, user: true, systemd_analyze: DEFAULT_SYSTEMD_ANALYZE) ⇒ Array(String, String)

Run systemd-analyze verify for unit files.

Parameters:

  • paths (Array<String>)

    unit file paths to verify

  • user (Boolean) (defaults to: true)

    verify user units with --user (default: true)

  • systemd_analyze (String) (defaults to: DEFAULT_SYSTEMD_ANALYZE)

    path to the systemd-analyze executable

Returns:

  • (Array(String, String))

    stdout and stderr

Raises:



28
29
30
# File 'lib/wheneverd/systemd/analyze.rb', line 28

def self.verify(paths, user: true, systemd_analyze: DEFAULT_SYSTEMD_ANALYZE)
  run(systemd_analyze, "verify", *Array(paths).map(&:to_s), user: user)
end