func (c *UnlockCommand) Run(args []string) int { var sessionId string c.Consul = new(ConsulFlags) cmdFlags := NewFlagSet(c.Consul) cmdFlags.StringVar(&sessionId, "session", "", "") cmdFlags.Usage = func() { c.UI.Output(c.Help()) } if err := cmdFlags.Parse(args); err != nil { return 1 } if sessionId == "" { c.UI.Error("Session ID must be provided") c.UI.Error("") c.UI.Error(c.Help()) return 1 } extra := cmdFlags.Args() if len(extra) < 1 { c.UI.Error("Key path must be specified") c.UI.Error("") c.UI.Error(c.Help()) return 1 } path := extra[0] consul, err := NewConsulClient(c.Consul, &c.UI) if err != nil { c.UI.Error(err.Error()) return 1 } client := consul.KV() kv := new(consulapi.KVPair) kv.Key = path kv.Session = sessionId kv.Flags = LockFlagValue success, _, err := client.Release(kv, nil) if err != nil { c.UI.Error(err.Error()) return 1 } if !success { return 1 } return 0 }