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
|
// name. The description is an arbitrary string used to describe the
|
||||||
// service.
|
// service.
|
||||||
func NewService(name, displayName, description string) (Service, error) {
|
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.
|
// Represents a generic way to interact with the system's service.
|
||||||
|
|||||||
+5
-5
@@ -13,14 +13,14 @@ import (
|
|||||||
|
|
||||||
const maxPathSize = 32 * 1024
|
const maxPathSize = 32 * 1024
|
||||||
|
|
||||||
func newService(name, displayName, description string) (s *darwinLaunchdService, err error) {
|
func newService(c *Config) (s *darwinLaunchdService, err error) {
|
||||||
s = &darwinLaunchdService{
|
s = &darwinLaunchdService{
|
||||||
name: name,
|
name: c.Name,
|
||||||
displayName: displayName,
|
displayName: c.DisplayName,
|
||||||
description: description,
|
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 {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
+12
-6
@@ -17,7 +17,9 @@ const (
|
|||||||
initSystemd
|
initSystemd
|
||||||
)
|
)
|
||||||
|
|
||||||
func newService(name, displayName, description string) (Service, error) {
|
const systemOs = "linux"
|
||||||
|
|
||||||
|
func getFlavor() initFlavor {
|
||||||
flavor := initSystemV
|
flavor := initSystemV
|
||||||
if isUpstart() {
|
if isUpstart() {
|
||||||
flavor = initUpstart
|
flavor = initUpstart
|
||||||
@@ -25,15 +27,19 @@ func newService(name, displayName, description string) (Service, error) {
|
|||||||
if isSystemd() {
|
if isSystemd() {
|
||||||
flavor = initSystemd
|
flavor = initSystemd
|
||||||
}
|
}
|
||||||
|
return flavor
|
||||||
|
}
|
||||||
|
|
||||||
|
func newService(c *Config) (Service, error) {
|
||||||
s := &linuxService{
|
s := &linuxService{
|
||||||
flavor: flavor,
|
flavor: getFlavor(),
|
||||||
name: name,
|
name: c.Name,
|
||||||
displayName: displayName,
|
displayName: c.DisplayName,
|
||||||
description: description,
|
description: c.Description,
|
||||||
}
|
}
|
||||||
|
|
||||||
var err error
|
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 {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -9,11 +9,11 @@ import (
|
|||||||
"code.google.com/p/winsvc/svc"
|
"code.google.com/p/winsvc/svc"
|
||||||
)
|
)
|
||||||
|
|
||||||
func newService(name, displayName, description string) (*windowsService, error) {
|
func newService(c *Config) (*windowsService, error) {
|
||||||
return &windowsService{
|
return &windowsService{
|
||||||
name: name,
|
name: c.Name,
|
||||||
displayName: displayName,
|
displayName: c.DisplayName,
|
||||||
description: description,
|
description: c.Description,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user