service: create a new front end api option. Allow backends to be configured.
This commit is contained in:
+26
-1
@@ -9,7 +9,32 @@ import "bitbucket.org/kardianos/osext"
|
||||
// name. The description is an arbitrary string used to describe the
|
||||
// service.
|
||||
func NewService(name, displayName, description string) (Service, error) {
|
||||
return newService(name, displayName, description)
|
||||
return newService(&Config{
|
||||
Name: name,
|
||||
DisplayName: displayName,
|
||||
Description: description,
|
||||
})
|
||||
}
|
||||
|
||||
// Alpha API. Do not yet use.
|
||||
type Config struct {
|
||||
Name, DisplayName, Description string
|
||||
|
||||
UserName string // Run as username.
|
||||
Arguments []string // Run with arguments.
|
||||
|
||||
DependsOn []string // Other services that this depends on.
|
||||
WorkingDirectory string // Service working directory.
|
||||
ChRoot string
|
||||
UserService bool // Install as a current user service.
|
||||
|
||||
// System specific parameters.
|
||||
KV map[string]interface{}
|
||||
}
|
||||
|
||||
// Alpha API. Do not yet use.
|
||||
func NewServiceConfig(c *Config) (Service, error) {
|
||||
return newService(c)
|
||||
}
|
||||
|
||||
// Represents a generic way to interact with the system's service.
|
||||
|
||||
+5
-5
@@ -13,14 +13,14 @@ import (
|
||||
|
||||
const maxPathSize = 32 * 1024
|
||||
|
||||
func newService(name, displayName, description string) (s *darwinLaunchdService, err error) {
|
||||
func newService(c *Config) (s *darwinLaunchdService, err error) {
|
||||
s = &darwinLaunchdService{
|
||||
name: name,
|
||||
displayName: displayName,
|
||||
description: description,
|
||||
name: c.Name,
|
||||
displayName: c.DisplayName,
|
||||
description: c.Description,
|
||||
}
|
||||
|
||||
s.logger, err = syslog.New(syslog.LOG_INFO, name)
|
||||
s.logger, err = syslog.New(syslog.LOG_INFO, c.Name)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
+12
-6
@@ -17,7 +17,9 @@ const (
|
||||
initSystemd
|
||||
)
|
||||
|
||||
func newService(name, displayName, description string) (Service, error) {
|
||||
const systemOs = "linux"
|
||||
|
||||
func getFlavor() initFlavor {
|
||||
flavor := initSystemV
|
||||
if isUpstart() {
|
||||
flavor = initUpstart
|
||||
@@ -25,15 +27,19 @@ func newService(name, displayName, description string) (Service, error) {
|
||||
if isSystemd() {
|
||||
flavor = initSystemd
|
||||
}
|
||||
return flavor
|
||||
}
|
||||
|
||||
func newService(c *Config) (Service, error) {
|
||||
s := &linuxService{
|
||||
flavor: flavor,
|
||||
name: name,
|
||||
displayName: displayName,
|
||||
description: description,
|
||||
flavor: getFlavor(),
|
||||
name: c.Name,
|
||||
displayName: c.DisplayName,
|
||||
description: c.Description,
|
||||
}
|
||||
|
||||
var err error
|
||||
s.logger, err = syslog.New(syslog.LOG_INFO, name)
|
||||
s.logger, err = syslog.New(syslog.LOG_INFO, s.name)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
+4
-4
@@ -9,11 +9,11 @@ import (
|
||||
"code.google.com/p/winsvc/svc"
|
||||
)
|
||||
|
||||
func newService(name, displayName, description string) (*windowsService, error) {
|
||||
func newService(c *Config) (*windowsService, error) {
|
||||
return &windowsService{
|
||||
name: name,
|
||||
displayName: displayName,
|
||||
description: description,
|
||||
name: c.Name,
|
||||
displayName: c.DisplayName,
|
||||
description: c.Description,
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user