cleanup reg command, make track dir2nick, calc abs path, unreg stub

This commit is contained in:
Dan Ballard 2015-02-21 18:43:52 -08:00
parent f63736fe14
commit a42b1f2dcc
8 changed files with 58 additions and 9 deletions

View File

@ -9,7 +9,7 @@ warrend: cmd/warrend/warrend
cmd/warren/warren: cmd/warren/*.go
cd cmd/warren && go build && ./warren build
cmd/warrend/warrend: cmd/warren/warren cmd/warrend/*.go
cmd/warrend/warrend: cmd/warren/warren cmd/warrend/*.go cmd/warrend/conf/*.go
cd cmd/warrend && ./../warren/warren build
clean:

View File

@ -11,16 +11,22 @@ import (
// "time"
)
var regUsage = `
warren reg - Register a deployment directory for running
`
var regCmd = &warren.Command{
Name: "reg",
Usage: regUsage,
Summary: "Register a deployment directory for running",
Run: warrendRun,
}
var unregUsage = `
warren unreg DEPLOYMENT_DIR
warren unreg NICKNAME
`
var unregCmd = &warren.Command{
Name: "unreg",
Summary: "Unregister a deployment directory and stop it running",
Run: warrendRun,
}
var statusUsage = `
warren status - Get the status from the warrend server
`
@ -42,7 +48,7 @@ func warrendRun(cmd *warren.Command, args ...string) {
}
dir, _ := os.Getwd()
// pwd|arg1 arg2 arg3 ....
warren.WriteStringz(s, dir+"|"+cmd.Name+"|"+strings.Join(args, "|"))
warren.WriteStringz(s, dir+"/|"+cmd.Name+"|"+strings.Join(args, "|"))
resp, err := warren.ReadStringz(s)

View File

@ -27,6 +27,7 @@ func main() {
warren.RegisterCommand(deployCmd)
warren.RegisterCommand(statusCmd)
warren.RegisterCommand(regCmd)
warren.RegisterCommand(unregCmd)
warren.RegisterCommand(versionCmd)
args := os.Args[1:]
if len(args) == 0 || args[0] == "-h" {

View File

@ -8,9 +8,8 @@ import (
)
var regUsage = `
status -
warren reg DEPLOYMENT_DIR [NICKNAME]
`
var regCmd = &SockCommand{
Command: warren.Command{
Name: "reg",
@ -20,6 +19,19 @@ var regCmd = &SockCommand{
Run: regRun,
}
var unregUsage = `
warren unreg DEPLOYMENT_DIR
warren unreg NICKNAME
`
var unregCmd = &SockCommand{
Command: warren.Command{
Name: "unreg",
Usage: unregUsage,
Summary: "Unregister a deployment directory and stop it running",
},
Run: unregRun,
}
// reg path [nickname]
func regRun(cmd *SockCommand, c net.Conn, path string, args ...string) {
if (len(args) > 0 && args[0] == "help") || len(args) < 1 {
@ -30,6 +42,16 @@ func regRun(cmd *SockCommand, c net.Conn, path string, args ...string) {
// get either supplied nick or parse from dir
d := new(conf.DeploymentMsg)
d.Path = args[0]
// ./local_path
if d.Path[0] == '.' {
d.Path = path + d.Path[2:]
} else
// local_path
if d.Path[0] != '/' {
d.Path = path + d.Path
}
if len(args) >= 2 && strings.TrimSpace(args[1]) != "" {
d.Name = args[1]
} else {
@ -48,3 +70,9 @@ func regRun(cmd *SockCommand, c net.Conn, path string, args ...string) {
warren.WriteStringz(c, "Registered deployment "+d.Name+" at "+d.Path)
}
// unreg path
// unreg nick
func unregRun(cmd *SockCommand, c net.Conn, path string, args ...string) {
}

View File

@ -28,7 +28,7 @@ func statusRun(cmd *SockCommand, c net.Conn, path string, args ...string) {
warren.WriteStringz(c, "Status\n")
for n, p := range conf.GetConf().Deployments {
warren.WriteStringz(c, n+": "+p)
warren.WriteStringz(c, n+": "+p+"\n")
}
}

View File

@ -41,6 +41,10 @@ func loadConf() {
if conf.Deployments == nil {
conf.Deployments = make(map[string]string)
}
// populate reverse map
for nick, dir := range conf.Deployments {
dirToNick[dir] = nick
}
}
func saveConf() error {

View File

@ -11,6 +11,9 @@ type DeploymentMsg struct {
Reply chan error
}
// reverse look up map
var dirToNick map[string]string = make(map[string]string)
// Validate a deployment is ok to insert
// internal thread unsafe
func validateDeployment(d *DeploymentMsg) error {
@ -19,6 +22,10 @@ func validateDeployment(d *DeploymentMsg) error {
return errors.New("Deployment with that name already exists")
}
if r, ok := dirToNick[d.Path]; ok {
return errors.New("Directory with that name already registered under nick '" + r + "'")
}
// check if dir exists
if _, err := os.Stat(d.Path); err != nil {
return err
@ -34,6 +41,7 @@ func addDeployment(d *DeploymentMsg) error {
return err
}
conf.Deployments[d.Name] = d.Path
dirToNick[d.Path] = d.Name
saveConf()
d.Reply <- nil
return nil

View File

@ -146,6 +146,8 @@ func main() {
Shutdown()
}()
fmt.Println("warrend starting and listening...")
// Listen
for {
fd, err := cmdSock.Accept()