command.go 1.57 KB
Newer Older
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
// Copyright (C) 2017  Nexedi SA and Contributors.
//                     Kirill Smelkov <kirr@nexedi.com>
//
// This program is free software: you can Use, Study, Modify and Redistribute
// it under the terms of the GNU General Public License version 3, or (at your
// option) any later version, as published by the Free Software Foundation.
//
// You can also Link and Combine this program with other software covered by
// the terms of any of the Open Source Initiative approved licenses and Convey
// the resulting work. Corresponding source of such a combination shall include
// the source code for all other software used.
//
// This program is distributed WITHOUT ANY WARRANTY; without even the implied
// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
//
// See COPYING file for full licensing terms.

package zodbtools
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
19
// registry for all commands
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
20

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
21
import "io"
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53

// Command describes one zodb subcommand
type Command struct {
	Name	string
	Summary	string
	Usage	func (w io.Writer)
	Main	func (argv []string)
}

// registry of all commands
var cmdv = []Command{
	// NOTE the order commands are listed here is the order how they will appear in help
	// TODO analyze ?
	// TODO cmp
	{"dump", dumpSummary, dumpUsage, dumpMain},
	{"info", infoSummary, infoUsage, infoMain},
}

// LookupCommand returns Command with corresponding name or nil
func LookupCommand(command string) *Command {
	for i := range cmdv {
		if cmdv[i].Name == command {
			return &cmdv[i]
		}
	}
	return nil
}

// AllCommands returns list of all zodbtools commands
func AllCommands() []Command {
	return cmdv
}