working great on MacOS
This commit is contained in:
parent
20d460c70e
commit
8527c632f8
|
@ -64,8 +64,8 @@
|
||||||
|
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
<key>StandardErrorPath</key>
|
<key>StandardErrorPath</key>
|
||||||
<string>{{ .LogDir }}/{{ .Name }}.log</string>
|
<string>{{ .Logdir }}/{{ .Name }}.log</string>
|
||||||
<key>StandardOutPath</key>
|
<key>StandardOutPath</key>
|
||||||
<string>{{ .LogDir }}/{{ .Name }}.log</string>
|
<string>{{ .Logdir }}/{{ .Name }}.log</string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|
|
@ -65,7 +65,7 @@ type Config struct {
|
||||||
Group string `json:"group"`
|
Group string `json:"group"`
|
||||||
home string `json:"-"`
|
home string `json:"-"`
|
||||||
Local string `json:"-"`
|
Local string `json:"-"`
|
||||||
LogDir string `json:"-"`
|
Logdir string `json:"-"`
|
||||||
System bool `json:"system"`
|
System bool `json:"system"`
|
||||||
Restart bool `json:"restart"`
|
Restart bool `json:"restart"`
|
||||||
Production bool `json:"production"`
|
Production bool `json:"production"`
|
||||||
|
@ -96,7 +96,7 @@ func Install(c *Config) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = os.MkdirAll(c.LogDir, 0750)
|
err = os.MkdirAll(c.Logdir, 0755)
|
||||||
if nil != err {
|
if nil != err {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ func install(c *Config) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check paths first
|
// Check paths first
|
||||||
err := os.MkdirAll(filepath.Dir(plistDir), 0750)
|
err := os.MkdirAll(filepath.Dir(plistDir), 0755)
|
||||||
if nil != err {
|
if nil != err {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -52,13 +52,19 @@ func install(c *Config) error {
|
||||||
plistName := c.ReverseDNS + ".plist"
|
plistName := c.ReverseDNS + ".plist"
|
||||||
plistPath := filepath.Join(plistDir, plistName)
|
plistPath := filepath.Join(plistDir, plistName)
|
||||||
if err := ioutil.WriteFile(plistPath, rw.Bytes(), 0644); err != nil {
|
if err := ioutil.WriteFile(plistPath, rw.Bytes(), 0644); err != nil {
|
||||||
fmt.Println("Use 'sudo' to install as a privileged system service.")
|
|
||||||
fmt.Println("Use '--userspace' to install as an user service.")
|
|
||||||
return fmt.Errorf("ioutil.WriteFile error: %v", err)
|
return fmt.Errorf("ioutil.WriteFile error: %v", err)
|
||||||
}
|
}
|
||||||
fmt.Printf("Installed. To start '%s' run the following:\n", c.Name)
|
fmt.Printf("Installed. To start '%s' run the following:\n", c.Name)
|
||||||
// TODO template config file
|
// TODO template config file
|
||||||
fmt.Printf("\tlaunchctl load -w %s\n", strings.Replace(plistPath, c.home, "~", 1))
|
if "" != c.home {
|
||||||
|
plistPath = strings.Replace(plistPath, c.home, "~", 1)
|
||||||
|
}
|
||||||
|
sudo := ""
|
||||||
|
if c.System {
|
||||||
|
sudo = "sudo "
|
||||||
|
}
|
||||||
|
fmt.Printf("\t%slaunchctl load -w %s\n", sudo, plistPath)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,10 +31,10 @@ func install(c *Config) error {
|
||||||
// * ~/.config/systemd/user/watchdog.service
|
// * ~/.config/systemd/user/watchdog.service
|
||||||
// https://wiki.archlinux.org/index.php/Systemd/User
|
// https://wiki.archlinux.org/index.php/Systemd/User
|
||||||
serviceDir = filepath.Join(c.home, ".local/share/systemd/user")
|
serviceDir = filepath.Join(c.home, ".local/share/systemd/user")
|
||||||
}
|
err := os.MkdirAll(filepath.Dir(serviceDir), 0755)
|
||||||
err := os.MkdirAll(filepath.Dir(serviceDir), 0750)
|
if nil != err {
|
||||||
if nil != err {
|
return err
|
||||||
return err
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create service file from template
|
// Create service file from template
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -5,7 +5,6 @@ package main
|
||||||
import (
|
import (
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -114,9 +113,9 @@ func main() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
conf.Local = filepath.Join(home, ".local")
|
conf.Local = filepath.Join(home, ".local")
|
||||||
conf.LogDir = filepath.Join(home, ".local", "share", conf.Name, "var", "log")
|
conf.Logdir = filepath.Join(home, ".local", "share", conf.Name, "var", "log")
|
||||||
} else {
|
} else {
|
||||||
conf.LogDir = "/var/log/" + conf.Name
|
conf.Logdir = "/var/log/" + conf.Name
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check to see if Exec exists
|
// Check to see if Exec exists
|
||||||
|
@ -149,12 +148,22 @@ func main() {
|
||||||
}
|
}
|
||||||
fmt.Fprintf(os.Stderr, "Using '%s' anyway.\n", conf.Exec)
|
fmt.Fprintf(os.Stderr, "Using '%s' anyway.\n", conf.Exec)
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
execpath, err := filepath.Abs(conf.Exec)
|
||||||
|
if nil != err {
|
||||||
|
fmt.Fprintf(os.Stderr, "Unrecoverable Error: %s", err)
|
||||||
|
os.Exit(4)
|
||||||
|
} else {
|
||||||
|
conf.Exec = execpath
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Printf("\n%#v\n\n", conf)
|
fmt.Printf("\n%#v\n\n", conf)
|
||||||
|
|
||||||
err = installer.Install(conf)
|
err = installer.Install(conf)
|
||||||
if nil != err {
|
if nil != err {
|
||||||
log.Fatal(err)
|
fmt.Fprintf(os.Stderr, "%s\n", err)
|
||||||
|
fmt.Fprintf(os.Stderr, "Use 'sudo' to install as a privileged system service.\n")
|
||||||
|
fmt.Fprintf(os.Stderr, "Use '--user' to install as an user service.\n")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue