From 611f97d1e6da86a656c535957c1f7e6b9ea84ce0 Mon Sep 17 00:00:00 2001 From: Nocturn9x Date: Fri, 14 Jan 2022 08:30:18 +0100 Subject: [PATCH] Added working directory and streams options to services --- README.md | 1 + src/core/services.nim | 8 ++++++-- src/main.nim | 15 +++++++++------ 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 55c8432..43d3451 100644 --- a/README.md +++ b/README.md @@ -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] diff --git a/src/core/services.nim b/src/core/services.nim index e4fb00d..e36a9a1 100644 --- a/src/core/services.nim +++ b/src/core/services.nim @@ -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)) diff --git a/src/main.nim b/src/main.nim index ce0685d..d60a4d0 100644 --- a/src/main.nim +++ b/src/main.nim @@ -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)