oort/oort.go
func New(serviceName, workingDir string, binaryUpdater *cmdctrl.GithubUpdater) (*Server, error) {
	if workingDir == "" {
		workingDir = fmt.Sprintf("%s/%s", DefaultBaseDir, serviceName)
	}
	o := &Server{
		serviceName:      serviceName,
		cwd:              workingDir,
		ch:               make(chan bool),
		ShutdownComplete: make(chan bool),
		waitGroup:        &sync.WaitGroup{},
		stopped:          false,
	}
	err := o.ObtainConfig()
	if err != nil {
		return o, err
	}
	o.binaryUpgrade = binaryUpdater
	return o, err
}
func New(serviceName, workingDir string, binaryUpdater *cmdctrl.GithubUpdater) (*Server, error) {
	if workingDir == "" {
		workingDir = fmt.Sprintf("%s/%s", DefaultBaseDir, serviceName)
	}
	o := &Server{
		serviceName:      serviceName,
		cwd:              workingDir,
		ch:               make(chan bool),
		ShutdownComplete: make(chan bool),
		waitGroup:        &sync.WaitGroup{},
		stopped:          false,
	}
	err := o.ObtainConfig()
	if err != nil {
		return o, err
	}
	o.binaryUpgrade = binaryUpdater
	return o, err
}
// New returns a instance of oort.Server for a given serviceName, workingDir, and buildVersion.
// if workingDir is empty the default dir of "/var/lib/<servicename>" is used.
// if buildVersion is empty the default version of "DEV" will be passed on to the self-upgrade service.