Added working directory and streams options to services

This commit is contained in:
Nocturn9x 2022-01-14 08:30:18 +01:00
parent fea5e625e2
commit 611f97d1e6
3 changed files with 16 additions and 8 deletions

View File

@ -68,6 +68,7 @@ provides = ssh # Dependents can also be providers
restart = always # Other options are: never, onFailure
restartDelay = 10 # NimD will wait this many seconds before trying to start it again
supervised = true # This is the default. Disable it if you don't need NimD to watch for it
workDir = /usr/bin # The service's working directory
[Logging]

View File

@ -63,6 +63,9 @@ type
depends: seq[Dependency]
provides: seq[Dependency]
useParentStreams: bool
stdin: string
stdout: string
stderr: string
## These two fields are
## used by the dependency
## resolver
@ -77,11 +80,12 @@ proc newDependency*(kind: DependencyKind, provider: Service): Dependency =
proc newService*(name, description: string, kind: ServiceKind, workDir: string, runlevel: RunLevel, exec: string, supervised: bool, restart: RestartKind,
restartDelay: int, depends, provides: seq[Dependency], useParentStreams: bool = false): Service =
restartDelay: int, depends, provides: seq[Dependency], useParentStreams: bool = false, stdin, stdout, stderr: string): Service =
## Creates a new service object
result = Service(name: name, description: description, kind: kind, workDir: workDir, runLevel: runLevel,
exec: exec, supervised: supervised, restart: restart, restartDelay: restartDelay,
depends: depends, provides: provides, isMarked: false, isResolved: false, useParentStreams: useParentStreams)
depends: depends, provides: provides, isMarked: false, isResolved: false, useParentStreams: useParentStreams,
stdin: stdin, stdout: stdout, stderr: stderr)
result.provides.add(newDependency(Other, result))

View File

@ -46,23 +46,26 @@ proc addStuff =
var echoer = newService(name="echoer", description="prints owo", exec="/bin/echo owoooooooooo",
runlevel=Boot, kind=Oneshot, workDir=getCurrentDir(),
supervised=false, restart=Never, restartDelay=0,
depends=(@[]), provides=(@[]))
depends=(@[]), provides=(@[]), stdin="/dev/null", stderr="", stdout="")
var errorer = newService(name="errorer", description="la mamma di gavd",
exec="/bin/false", supervised=true, restart=OnFailure,
restartDelay=5, runlevel=Boot, workDir="/", kind=Simple,
depends=(@[newDependency(Other, echoer)]), provides=(@[]))
depends=(@[newDependency(Other, echoer)]), provides=(@[]),
stdin="/dev/null", stderr="", stdout="")
var test = newService(name="broken", description="", exec="/bin/echo owo",
runlevel=Boot, kind=Oneshot, workDir=getCurrentDir(),
supervised=false, restart=Never, restartDelay=0,
depends=(@[newDependency(Other, echoer)]), provides=(@[]))
depends=(@[newDependency(Other, echoer)]), provides=(@[]),
stdin="/dev/null", stderr="", stdout="")
var exiter = newService(name="exiter", description="la mamma di licenziat",
exec="/bin/true", supervised=true, restart=Always,
restartDelay=5, runlevel=Boot, workDir="/", kind=Simple,
depends=(@[newDependency(Other, errorer)]), provides=(@[]))
depends=(@[newDependency(Other, errorer)]), provides=(@[]),
stdin="/dev/null", stderr="", stdout="")
var shell = newService(name="login", description="A simple login shell", kind=Simple,
getCurrentDir(), runlevel=Boot, exec="/bin/login -f root",
workDir=getCurrentDir(), runlevel=Boot, exec="/bin/login -f root",
supervised=true, restart=Always, restartDelay=0, depends=(@[]), provides=(@[]),
useParentStreams=true
useParentStreams=true, stdin="/dev/null", stderr="", stdout=""
)
addService(errorer)
addService(echoer)