|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"log"
|
|
|
|
"os"
|
|
|
|
"strings"
|
|
|
|
"text/template"
|
|
|
|
|
|
|
|
"github.com/codegangsta/cli"
|
|
|
|
"github.com/minio-io/minio/pkg/utils"
|
|
|
|
)
|
|
|
|
|
|
|
|
func parseInput(c *cli.Context) {
|
|
|
|
var commandName string
|
|
|
|
switch len(c.Args()) {
|
|
|
|
case 1:
|
|
|
|
commandName = c.Args()[0]
|
|
|
|
default:
|
|
|
|
log.Fatal("command name must not be blank\n")
|
|
|
|
}
|
|
|
|
|
|
|
|
var inputOptions []string
|
|
|
|
if c.String("options") != "" {
|
|
|
|
inputOptions = strings.Split(c.String("options"), ",")
|
|
|
|
}
|
|
|
|
|
|
|
|
if inputOptions[0] == "" {
|
|
|
|
log.Fatal("options cannot be empty with a command name")
|
|
|
|
}
|
|
|
|
|
|
|
|
var commandUsage string
|
|
|
|
if c.String("usage") != "" {
|
|
|
|
commandUsage = c.String("usage")
|
|
|
|
}
|
|
|
|
|
|
|
|
var mainObject = template.Must(template.New("main").Parse(commandTemplate))
|
|
|
|
var optionsObject = template.Must(template.New("options").Parse(optionsTemplate))
|
|
|
|
var readmeObject = template.Must(template.New("readme").Parse(readmeTemplate))
|
|
|
|
|
|
|
|
err := os.Mkdir(commandName, 0755)
|
|
|
|
utils.Assert(err)
|
|
|
|
|
|
|
|
command := initCommand(commandName, commandUsage, inputOptions)
|
|
|
|
|
|
|
|
optionsGo := source{
|
|
|
|
Name: commandName + "-options.go",
|
|
|
|
TempLate: *optionsObject,
|
|
|
|
}
|
|
|
|
|
|
|
|
readmeMd := source{
|
|
|
|
Name: commandName + ".md",
|
|
|
|
TempLate: *readmeObject,
|
|
|
|
}
|
|
|
|
|
|
|
|
mainGo := source{
|
|
|
|
Name: commandName + ".go",
|
|
|
|
TempLate: *mainObject,
|
|
|
|
}
|
|
|
|
|
|
|
|
err = readmeMd.get(commandName, command)
|
|
|
|
utils.Assert(err)
|
|
|
|
|
|
|
|
mainGo.get(commandName, command)
|
|
|
|
utils.Assert(err)
|
|
|
|
|
|
|
|
optionsGo.get(commandName, command)
|
|
|
|
|
|
|
|
err = GoFormat(commandName)
|
|
|
|
utils.Assert(err)
|
|
|
|
}
|