diff --git a/go.mod b/go.mod index eb03f550..61657bcb 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/fsnotify/fsnotify v1.4.7 github.com/gobuffalo/packr v1.30.1 github.com/joomcode/errorx v1.0.1 - github.com/kardianos/service v1.0.0 + github.com/kardianos/service v1.1.0 github.com/krolaw/dhcp4 v0.0.0-20180925202202-7cead472c414 github.com/miekg/dns v1.1.29 github.com/pkg/errors v0.9.1 diff --git a/go.sum b/go.sum index 19938814..805d39be 100644 --- a/go.sum +++ b/go.sum @@ -57,8 +57,8 @@ github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/joomcode/errorx v1.0.1 h1:CalpDWz14ZHd68fIqluJasJosAewpz2TFaJALrUxjrk= github.com/joomcode/errorx v1.0.1/go.mod h1:kgco15ekB6cs+4Xjzo7SPeXzx38PbJzBwbnu9qfVNHQ= -github.com/kardianos/service v1.0.0 h1:HgQS3mFfOlyntWX8Oke98JcJLqt1DBcHR4kxShpYef0= -github.com/kardianos/service v1.0.0/go.mod h1:8CzDhVuCuugtsHyZoTvsOBuvonN/UDBvl0kH+BUxvbo= +github.com/kardianos/service v1.1.0 h1:QV2SiEeWK42P0aEmGcsAgjApw/lRxkwopvT+Gu6t1/0= +github.com/kardianos/service v1.1.0/go.mod h1:RrJI2xn5vve/r32U5suTbeaSGoMU6GbNPoj36CVYcHc= github.com/karrick/godirwalk v1.10.12 h1:BqUm+LuJcXjGv1d2mj3gBiQyrQ57a0rYoAmhvJQ7RDU= github.com/karrick/godirwalk v1.10.12/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= diff --git a/home/service.go b/home/service.go index 05804d63..21c9cfc6 100644 --- a/home/service.go +++ b/home/service.go @@ -272,6 +272,8 @@ func configureService(c *service.Config) { // On OpenWrt we're using a different type of sysvScript if util.IsOpenWrt() { c.Option["SysvScript"] = openWrtScript + } else if util.IsFreeBSD() { + c.Option["SysvScript"] = freeBSDScript } } @@ -493,3 +495,16 @@ status() { fi } ` +const freeBSDScript = `#!/bin/sh +# PROVIDE: {{.Name}} +# REQUIRE: networking +# KEYWORD: shutdown +. /etc/rc.subr +name="{{.Name}}" +{{.Name}}_env="IS_DAEMON=1" +{{.Name}}_user="root" +pidfile="/var/run/${name}.pid" +command="/usr/sbin/daemon" +command_args="-P ${pidfile} -r -f {{.WorkingDirectory}}/{{.Name}}" +run_rc_command "$1" +` diff --git a/util/helpers.go b/util/helpers.go index b32ac456..08afa3f1 100644 --- a/util/helpers.go +++ b/util/helpers.go @@ -92,3 +92,12 @@ func IsOpenWrt() bool { return strings.Contains(string(body), "OpenWrt") } + +// IsFreeBSD checks if OS is FreeBSD +func IsFreeBSD() bool { + if runtime.GOOS == "freebsd" { + return true + } + + return false +}