dospin/dospin.go

63 lines
1.2 KiB
Go

/*
Copyright 2016 gtalent2@gmail.com
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
package main
import (
"flag"
"log"
)
type cmdOptions struct {
config string
}
func parseCmdOptions() cmdOptions {
var o cmdOptions
flag.StringVar(&o.config, "config", "dospin.json", "Path to the dospin config file")
flag.Parse()
return o
}
func testServerManager(settings Settings) {
dh := NewDropletHandler(settings)
sm := NewServerManager("minecraft", dh, settings)
go sm.Serve()
sm.Spinup()
sm.Spindown()
sm.Stop()
sm.Done()
}
func main() {
opts := parseCmdOptions()
log.Println("Loading config:", opts.config)
settings, err := loadSettings(opts.config)
if err != nil {
log.Fatal(err)
}
for name, sv := range settings.Servers {
dh := NewDropletHandler(settings)
sm := NewServerManager(name, dh, settings)
// start the ServerManager
go sm.Serve()
// assign this ServerManager to all appropriate ports
for _, port := range sv.Ports {
log.Println("Setting up port", port)
setupService(sm, port)
}
}
done := make(chan interface{})
<-done
}