Mercurial > go > multipass
view multipass.go @ 19:58fe867c9ecf
Reorganize commands to more standard go layout.
- Unify multipass user commands under one 'multipass' binary
- Move multipass checkpassword command to mp-checkpassword.
author | Paul Fisher <paul@pfish.zone> |
---|---|
date | Sun, 01 Nov 2015 12:42:02 -0500 |
parents | |
children |
line wrap: on
line source
// multipass is a command for users to manage their multipass password database. // // See the Usage message for more details. package main import ( "bufio" "fmt" "os" "pfish.zone/go/multipass/file" ) const Usage = ` multipass is a command for users to manage their multipass password databases. Usage: multipass command The commands are: add remove multipass add: adds a new password to the user's multipass database. Prompts the user for a description, and adds it. multipass remove: removes a password from the user's multipass database. Lists the user's password, and removes the one they choose. ` var commands map[string]func(*file.ShadowFile, *bufio.Reader) int func init() { commands = make(map[string]func(*file.ShadowFile, *bufio.Reader) int) commands["add"] = add commands["remove"] = remove } func main() { if len(os.Args) != 2 { usage() } cmd, ok := commands[os.Args[1]] if !ok { usage() } passfile, err := file.ForMe() if err != nil { fmt.Println(err.Error()) os.Exit(1) } input := bufio.NewReader(os.Stdin) os.Exit(cmd(passfile, input)) } func usage() { fmt.Print(Usage) os.Exit(2) }