Class: PleaseRun::Platform::SystemdUser

Inherits:
Base
  • Object
show all
Defined in:
lib/pleaserun/platform/systemd-user.rb

Overview

The platform implementation for systemd user services.

Instance Method Summary collapse

Methods inherited from Base

#initialize, #platform, #render, #render_template, #safe_filename, #sysv_log, #sysv_log_directory?, #template_path

Methods included from MustacheMethods

#escaped, #escaped_args, #quoted, #shell_args, #shell_continuation, #shell_quote

Methods included from Configurable

#configurable_setup, included, #validate

Constructor Details

This class inherits a constructor from PleaseRun::Platform::Base

Instance Method Details

#filesObject



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/pleaserun/platform/systemd-user.rb', line 6

def files
  begin
    # TODO(sissel): Make it easy for subclasses to extend validation on attributes.
    insist { program } =~ /^\//
  rescue Insist::Failure
    raise PleaseRun::Configurable::ValidationError, "In systemd, the program must be a full path. You gave '#{program}'."
  end

  home = ENV["HOME"]
  if home.nil? || home.empty?
    raise PleaseRun::Configurable::ValidationError, "As a normal user (not root), I need to know where your home directory is, but the HOME environment variable seems to be not set."
  end

  if !File.directory?(home)
    raise PleaseRun::Configurable::ValidationError, "HOME (#{home}) is not a directory. Cannot continue."
  end

  return Enumerator::Generator.new do |enum|
    enum.yield(safe_filename("#{home}/.config/systemd/user/{{{ name }}}.service"), render_template("program.service"))
    enum.yield(safe_filename("#{home}/.config/systemd/user/{{{ name }}}-prestart.sh"), render_template("prestart.sh"), 0755) if prestart
  end
end

#install_actionsObject

def files



29
30
31
# File 'lib/pleaserun/platform/systemd-user.rb', line 29

def install_actions
  return ["systemctl --user daemon-reload"]
end