Documentation
¶
Overview ¶
Package unit provides utilities for parsing, serializing, and manipulating systemd unit files. It supports both reading unit file content into Go data structures and writing Go data structures back to unit file format.
The package provides functionality to:
- Parse systemd unit files into UnitOption and UnitSection structures
- Serialize Go structures back into unit file format
- Escape and unescape unit names according to systemd conventions
Unit files are configuration files that describe how systemd should manage services, sockets, devices, and other system resources.
Index ¶
- Constants
- Variables
- func AllMatch(u1 []*UnitOption, u2 []*UnitOption) bool
- func Serialize(opts []*UnitOption) io.Reader
- func SerializeSections(sections []*UnitSection) io.Reader
- func UnitNameEscape(unescaped string) string
- func UnitNamePathEscape(unescaped string) string
- func UnitNamePathUnescape(escaped string) string
- func UnitNameUnescape(escaped string) string
- type UnitEntry
- type UnitOption
- type UnitSection
Constants ¶
const ( // SYSTEMD_LINE_MAX mimics the maximum line length that systemd can use. // On typical systemd platforms (i.e. modern Linux), this will most // commonly be 2048, so let's use that as a sanity check. // Technically, we should probably pull this at runtime: // SYSTEMD_LINE_MAX = int(C.sysconf(C.__SC_LINE_MAX)) // but this would introduce an (unfortunate) dependency on cgo SYSTEMD_LINE_MAX = 2048 // SYSTEMD_NEWLINE defines characters that systemd considers indicators // for a newline. SYSTEMD_NEWLINE = "\r\n" )
Variables ¶
var ErrLineTooLong = fmt.Errorf("line too long (max %d bytes)", SYSTEMD_LINE_MAX)
ErrLineTooLong gets returned when a line is too long for systemd to handle.
Functions ¶
func AllMatch ¶
func AllMatch(u1 []*UnitOption, u2 []*UnitOption) bool
AllMatch compares two slices of UnitOptions and returns true if they are identical.
func Serialize ¶
func Serialize(opts []*UnitOption) io.Reader
Serialize encodes all of the given UnitOption objects into a unit file. When serialized the options are sorted in their supplied order but grouped by section.
func SerializeSections ¶ added in v22.1.0
func SerializeSections(sections []*UnitSection) io.Reader
SerializeSections will serializes the unit file from the given UnitSections.
func UnitNameEscape ¶
UnitNameEscape escapes a string as `systemd-escape` would
func UnitNamePathEscape ¶
UnitNamePathEscape escapes a string as `systemd-escape --path` would
func UnitNamePathUnescape ¶
UnitNamePathUnescape unescapes a string as `systemd-escape --path --unescape` would
func UnitNameUnescape ¶
UnitNameUnescape unescapes a string as `systemd-escape --unescape` would
Types ¶
type UnitOption ¶
UnitOption represents an option in a systemd unit file.
func Deserialize ¶
func Deserialize(f io.Reader) (opts []*UnitOption, err error)
Deserialize parses a systemd unit file into a list of UnitOptions. Note: this function is deprecated in favor of DeserializeOptions and will be removed at a future date.
func DeserializeOptions ¶ added in v22.1.0
func DeserializeOptions(f io.Reader) (opts []*UnitOption, err error)
DeserializeOptions parses a systemd unit file into a list of UnitOptions
func NewUnitOption ¶
func NewUnitOption(section, name, value string) *UnitOption
NewUnitOption returns a new UnitOption instance with pre-set values.
func (*UnitOption) Match ¶
func (uo *UnitOption) Match(other *UnitOption) bool
Match compares two UnitOptions and returns true if they are identical.
func (*UnitOption) String ¶
func (uo *UnitOption) String() string
type UnitSection ¶ added in v22.1.0
UnitSection is a section in a Unit file. The section name and a list of entries in that section.
func DeserializeSections ¶ added in v22.1.0
func DeserializeSections(f io.Reader) ([]*UnitSection, error)
DeserializeSections deserializes into a list of UnitSections.
func (*UnitSection) String ¶ added in v22.1.0
func (s *UnitSection) String() string
String implements the stringify interface for UnitSection