service: create a new front end api option. Allow backends to be configured.

This commit is contained in:
Daniel Theophanes
2014-05-27 22:19:11 -07:00
parent f3ac4f8b66
commit 782c78354d
4 changed files with 47 additions and 16 deletions
+26 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
} }