本文整理汇总了Golang中github.com/cloudfoundry/cli/flags.NewFlagContext函数的典型用法代码示例。如果您正苦于以下问题:Golang NewFlagContext函数的具体用法?Golang NewFlagContext怎么用?Golang NewFlagContext使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewFlagContext函数的19个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: RunCLICommandWithoutDependency
func RunCLICommandWithoutDependency(cmdName string, args []string, requirementsFactory requirements.Factory, ui *testterm.FakeUI) bool {
cmd := commandregistry.Commands.FindCommand(cmdName)
context := flags.NewFlagContext(cmd.MetaData().Flags)
context.SkipFlagParsing(cmd.MetaData().SkipFlagParsing)
err := context.Parse(args...)
if err != nil {
fmt.Println("ERROR:", err)
os.Exit(1)
}
defer func() {
errMsg := recover()
if errMsg != nil && errMsg != testterm.QuietPanic {
panic(errMsg)
}
}()
requirements := cmd.Requirements(requirementsFactory, context)
for _, requirement := range requirements {
if err = requirement.Execute(); err != nil {
return false
}
}
err = cmd.Execute(context)
if err != nil {
ui.Failed(err.Error())
}
return true
}
开发者ID:Reejoshi,项目名称:cli,代码行数:33,代码来源:runner.go
示例2: RunCommandMoreBetter
func RunCommandMoreBetter(cmdName string, args []string, requirementsFactory *testreq.FakeReqFactory, updateFunc func(bool), pluginCall bool) (result RunCommandResult) {
updateFunc(pluginCall)
cmd := command_registry.Commands.FindCommand(cmdName)
context := flags.NewFlagContext(cmd.MetaData().Flags)
context.SkipFlagParsing(cmd.MetaData().SkipFlagParsing)
err := context.Parse(args...)
if err != nil {
fmt.Println("ERROR:", err)
return RunCommandResultFailed
}
defer func() {
errMsg := recover()
if errMsg != nil && errMsg != testterm.QuietPanic {
panic(errMsg)
}
result = RunCommandResultFailed
}()
requirements, err := cmd.Requirements(requirementsFactory, context)
if err != nil {
return RunCommandResultRequirementsFailed
}
for _, requirement := range requirements {
if !requirement.Execute() {
return RunCommandResultRequirementsFailed
}
}
cmd.Execute(context)
return RunCommandResultSuccess
}
开发者ID:rakutentech,项目名称:cli,代码行数:35,代码来源:runner.go
示例3: RunCliCommandWithoutDependency
func RunCliCommandWithoutDependency(cmdName string, args []string, requirementsFactory *testreq.FakeReqFactory) (passedRequirements bool) {
cmd := command_registry.Commands.FindCommand(cmdName)
context := flags.NewFlagContext(cmd.MetaData().Flags)
context.SkipFlagParsing(cmd.MetaData().SkipFlagParsing)
err := context.Parse(args...)
if err != nil {
fmt.Println("ERROR:", err)
os.Exit(1)
}
defer func() {
errMsg := recover()
if errMsg != nil && errMsg != testterm.QuietPanic {
panic(errMsg)
}
}()
requirements, err := cmd.Requirements(requirementsFactory, context)
if err != nil {
return false
}
for _, requirement := range requirements {
if !requirement.Execute() {
return false
}
}
passedRequirements = true
cmd.Execute(context)
return
}
开发者ID:rakutentech,项目名称:cli,代码行数:34,代码来源:runner.go
示例4: Command
func (c *commandRunner) Command(args []string, deps command_registry.Dependency, pluginApiCall bool) error {
var err error
cmdRegistry := command_registry.Commands
if cmdRegistry.CommandExists(args[0]) {
fc := flags.NewFlagContext(cmdRegistry.FindCommand(args[0]).MetaData().Flags)
err = fc.Parse(args[1:]...)
if err != nil {
return err
}
cfCmd := cmdRegistry.FindCommand(args[0])
cfCmd = cfCmd.SetDependency(deps, pluginApiCall)
reqs := cfCmd.Requirements(requirements.NewFactory(deps.Config, deps.RepoLocator), fc)
for _, r := range reqs {
if err = r.Execute(); err != nil {
return err
}
}
cfCmd.Execute(fc)
}
return nil
}
开发者ID:cloudfoundry-incubator,项目名称:Diego-Enabler,代码行数:28,代码来源:call_command_registry.go
示例5: Run
func (c *NozzlerCmd) Run(cliConnection plugin.CliConnection, args []string) {
var debug bool
if args[0] != "nozzle" {
return
}
c.ui = terminal.NewUI(os.Stdin, terminal.NewTeePrinter())
fc := flags.NewFlagContext(setupFlags())
err := fc.Parse(args[1:]...)
if err != nil {
c.ui.Failed(err.Error())
}
if fc.IsSet("debug") {
debug = fc.Bool("debug")
}
dopplerEndpoint, err := cliConnection.DopplerEndpoint()
if err != nil {
c.ui.Failed(err.Error())
}
authToken, err := cliConnection.AccessToken()
if err != nil {
c.ui.Failed(err.Error())
}
client := firehose.NewClient(authToken, dopplerEndpoint, debug, c.ui)
client.Start()
}
开发者ID:jtuchscherer,项目名称:nozzle-plugin,代码行数:29,代码来源:main.go
示例6: Usage
func (u *usagePresenter) Usage() string {
metadata := u.cmd.MetaData()
output := T("NAME:") + "\n"
output += " " + metadata.Name + " - " + metadata.Description + "\n\n"
output += T("USAGE:") + "\n"
output += " " + strings.Replace(strings.Join(metadata.Usage, ""), "CF_NAME", cf.Name, -1) + "\n"
if len(metadata.Examples) > 0 {
output += "\n"
output += fmt.Sprintf("%s:\n", T("EXAMPLES"))
for _, e := range metadata.Examples {
output += fmt.Sprintf(" %s\n", strings.Replace(e, "CF_NAME", cf.Name, -1))
}
}
if metadata.ShortName != "" {
output += "\n" + T("ALIAS:") + "\n"
output += " " + metadata.ShortName + "\n"
}
if metadata.Flags != nil {
output += "\n" + T("OPTIONS:") + "\n"
output += flags.NewFlagContext(metadata.Flags).ShowUsage(3)
}
return output
}
开发者ID:Reejoshi,项目名称:cli,代码行数:29,代码来源:registry.go
示例7: RunCLICommand
func RunCLICommand(cmdName string, args []string, requirementsFactory *testreq.FakeReqFactory, updateFunc func(bool), pluginCall bool) (passedRequirements bool) {
updateFunc(pluginCall)
cmd := commandregistry.Commands.FindCommand(cmdName)
context := flags.NewFlagContext(cmd.MetaData().Flags)
context.SkipFlagParsing(cmd.MetaData().SkipFlagParsing)
err := context.Parse(args...)
if err != nil {
fmt.Println("ERROR:", err)
os.Exit(1)
}
defer func() {
errMsg := recover()
if errMsg != nil && errMsg != testterm.QuietPanic {
panic(errMsg)
}
}()
requirements := cmd.Requirements(requirementsFactory, context)
for _, requirement := range requirements {
if err = requirement.Execute(); err != nil {
return false
}
}
passedRequirements = true
cmd.Execute(context)
return
}
开发者ID:yingkitw,项目名称:cli,代码行数:32,代码来源:runner.go
示例8: CommandUsage
func (r *registry) CommandUsage(cmdName string) string {
output := ""
cmd := r.FindCommand(cmdName)
output = i18n.T("NAME") + ":" + "\n"
output += " " + cmd.MetaData().Name + " - " + cmd.MetaData().Description + "\n\n"
output += i18n.T("USAGE") + ":" + "\n"
output += " " + strings.Replace(cmd.MetaData().Usage, "CF_NAME", cf.Name(), -1) + "\n"
if cmd.MetaData().ShortName != "" {
output += "\n" + i18n.T("ALIAS") + ":" + "\n"
output += " " + cmd.MetaData().ShortName + "\n"
}
if cmd.MetaData().Flags != nil {
output += "\n" + i18n.T("OPTIONS") + ":" + "\n"
output += flags.NewFlagContext(cmd.MetaData().Flags).ShowUsage(3)
}
return output
}
开发者ID:vframbach,项目名称:cli,代码行数:22,代码来源:registry.go
示例9: CallCoreCommand
func (cmd *CliRpcCmd) CallCoreCommand(args []string, retVal *bool) error {
defer func() {
recover()
}()
var err error
cmdRegistry := command_registry.Commands
if cmdRegistry.CommandExists(args[0]) {
//non-codegangsta path
deps := command_registry.NewDependency()
//set deps objs to be the one used by all other codegangsta commands
//once all commands are converted, we can make fresh deps for each command run
deps.Config = cmd.cliConfig
deps.RepoLocator = cmd.repoLocator
fc := flags.NewFlagContext(cmdRegistry.FindCommand(args[0]).MetaData().Flags)
err = fc.Parse(args[1:]...)
if err == nil {
cmdRegistry.SetCommand(cmdRegistry.FindCommand(args[0]).SetDependency(deps))
cmdRegistry.FindCommand(args[0]).Execute(fc)
}
} else {
//call codegangsta command
err = cmd.coreCommandRunner.Run(append([]string{"CF_NAME"}, args...))
}
if err != nil {
*retVal = false
return err
}
*retVal = true
return nil
}
开发者ID:jmcarp,项目名称:autopilot,代码行数:36,代码来源:cli_rpc_server.go
示例10: Main
func Main(traceEnv string, args []string) {
//handle `cf -v` for cf version
if len(args) == 2 && (args[1] == "-v" || args[1] == "--version") {
args[1] = "version"
}
//handles `cf`
if len(args) == 1 {
args = []string{args[0], "help"}
}
//handles `cf [COMMAND] -h ...`
//rearrange args to `cf help COMMAND` and let `command help` to print out usage
args = append([]string{args[0]}, handleHelp(args[1:])...)
newArgs, isVerbose := handleVerbose(args)
args = newArgs
errFunc := func(err error) {
if err != nil {
ui := terminal.NewUI(
os.Stdin,
Writer,
terminal.NewTeePrinter(Writer),
trace.NewLogger(Writer, isVerbose, traceEnv, ""),
)
ui.Failed(fmt.Sprintf("Config error: %s", err))
}
}
// Only used to get Trace, so our errorHandler doesn't matter, since it's not used
configPath, err := confighelpers.DefaultFilePath()
if err != nil {
errFunc(err)
}
config := coreconfig.NewRepositoryFromFilepath(configPath, errFunc)
defer config.Close()
traceConfigVal := config.Trace()
// Writer is assigned in writer_unix.go/writer_windows.go
traceLogger := trace.NewLogger(Writer, isVerbose, traceEnv, traceConfigVal)
deps := commandregistry.NewDependency(Writer, traceLogger, os.Getenv("CF_DIAL_TIMEOUT"))
defer handlePanics(args, deps.TeePrinter, deps.Logger)
defer deps.Config.Close()
//handle `cf --build`
if len(args) == 2 && (args[1] == "--build" || args[1] == "-b") {
deps.UI.Say(T("{{.CFName}} was built with Go version: {{.GoVersion}}",
map[string]interface{}{
"CFName": args[0],
"GoVersion": runtime.Version(),
}))
os.Exit(0)
}
warningProducers := []net.WarningProducer{}
for _, warningProducer := range deps.Gateways {
warningProducers = append(warningProducers, warningProducer)
}
warningsCollector := net.NewWarningsCollector(deps.UI, warningProducers...)
commandsloader.Load()
//run core command
cmdName := args[1]
cmd := cmdRegistry.FindCommand(cmdName)
if cmd != nil {
meta := cmd.MetaData()
flagContext := flags.NewFlagContext(meta.Flags)
flagContext.SkipFlagParsing(meta.SkipFlagParsing)
cmdArgs := args[2:]
err = flagContext.Parse(cmdArgs...)
if err != nil {
usage := cmdRegistry.CommandUsage(cmdName)
deps.UI.Failed(T("Incorrect Usage") + "\n\n" + err.Error() + "\n\n" + usage)
}
cmd = cmd.SetDependency(deps, false)
cmdRegistry.SetCommand(cmd)
requirementsFactory := requirements.NewFactory(deps.Config, deps.RepoLocator)
reqs := cmd.Requirements(requirementsFactory, flagContext)
for _, req := range reqs {
err = req.Execute()
if err != nil {
deps.UI.Failed(err.Error())
}
}
err = cmd.Execute(flagContext)
if err != nil {
ui := terminal.NewUI(os.Stdin, Writer, terminal.NewTeePrinter(Writer), traceLogger)
ui.Failed(err.Error())
}
//.........这里部分代码省略.........
开发者ID:Reejoshi,项目名称:cli,代码行数:101,代码来源:cmd.go
示例11:
var (
fCtx flags.FlagContext
cmdFlagMap map[string]flags.FlagSet
)
BeforeEach(func() {
cmdFlagMap = make(map[string]flags.FlagSet)
cmdFlagMap["name"] = &flags.StringFlag{Name: "name", ShortName: "n", Usage: "test string flag"}
cmdFlagMap["skip"] = &flags.BoolFlag{Name: "skip", Usage: "test bool flag"}
cmdFlagMap["instance"] = &flags.IntFlag{Name: "instance", Usage: "test int flag"}
cmdFlagMap["float"] = &flags.Float64Flag{Name: "float", Usage: "test float64 flag"}
cmdFlagMap["skip2"] = &flags.BoolFlag{Name: "skip2", Usage: "test bool flag"}
cmdFlagMap["slice"] = &flags.StringSliceFlag{Name: "slice", Usage: "test stringSlice flag"}
fCtx = flags.NewFlagContext(cmdFlagMap)
})
It("accepts flags with either single '-' or double '-' ", func() {
err := fCtx.Parse("--name", "blue")
Expect(err).NotTo(HaveOccurred())
err = fCtx.Parse("-name", "")
Expect(err).NotTo(HaveOccurred())
})
It("sets a flag with it's full name", func() {
err := fCtx.Parse("-name", "blue")
Expect(err).NotTo(HaveOccurred())
Expect(fCtx.IsSet("name")).To(BeTrue())
Expect(fCtx.IsSet("n")).To(BeTrue())
开发者ID:Reejoshi,项目名称:cli,代码行数:31,代码来源:flags_test.go
示例12: main
func main() {
commands_loader.Load()
defer handlePanics(deps.TeePrinter)
defer deps.Config.Close()
//////////////// non-codegangsta path ///////////////////////
//handles `cf` | `cf -h` || `cf -help`
if len(os.Args) == 1 || os.Args[1] == "--help" || os.Args[1] == "-help" ||
os.Args[1] == "--h" || os.Args[1] == "-h" {
help.ShowHelp(help.GetHelpTemplate())
os.Exit(0)
}
//handle `cf -v` for cf version
if len(os.Args) == 2 && os.Args[1] == "-v" {
deps.Ui.Say(os.Args[0] + " version " + cf.Version + "-" + cf.BuiltOnDate)
os.Exit(0)
}
//handles `cf [COMMAND] -h ...`
//rearrage args to `cf help COMMAND` and let `command help` to print out usage
if requestHelp(os.Args[2:]) {
os.Args[2] = os.Args[1]
os.Args[1] = "help"
}
if len(os.Args) > 1 {
cmd := os.Args[1]
if cmdRegistry.CommandExists(cmd) {
meta := cmdRegistry.FindCommand(os.Args[1]).MetaData()
fc := flags.NewFlagContext(meta.Flags)
fc.SkipFlagParsing(meta.SkipFlagParsing)
if requestHelp(os.Args[2:]) {
deps.Ui.Say(cmdRegistry.CommandUsage(cmd))
os.Exit(0)
} else {
err := fc.Parse(os.Args[2:]...)
if err != nil {
deps.Ui.Failed("Incorrect Usage\n\n" + err.Error() + "\n\n" + cmdRegistry.CommandUsage(cmd))
}
}
cmdRegistry.SetCommand(cmdRegistry.FindCommand(cmd).SetDependency(deps, false))
cfCmd := cmdRegistry.FindCommand(cmd)
reqs, err := cfCmd.Requirements(requirements.NewFactory(deps.Ui, deps.Config, deps.RepoLocator), fc)
if err != nil {
deps.Ui.Failed(err.Error())
}
for _, r := range reqs {
if !r.Execute() {
os.Exit(1)
}
}
cfCmd.Execute(fc)
os.Exit(0)
}
}
//////////////////////////////////////////
rpcService := newCliRpcServer(deps.TeePrinter, deps.TeePrinter)
cmdFactory := command_factory.NewFactory(deps.Ui, deps.Config, deps.ManifestRepo, deps.RepoLocator, deps.PluginConfig, rpcService)
requirementsFactory := requirements.NewFactory(deps.Ui, deps.Config, deps.RepoLocator)
cmdRunner := command_runner.NewRunner(cmdFactory, requirementsFactory, deps.Ui)
pluginsConfig := plugin_config.NewPluginConfig(func(err error) { deps.Ui.Failed(fmt.Sprintf("Error read/writing plugin config: %s, ", err.Error())) })
pluginList := pluginsConfig.Plugins()
var badFlags string
metaDatas := cmdFactory.CommandMetadatas()
//return only metadata for current command
metaDatas = mergePluginMetaData(metaDatas, pluginList)
if len(os.Args) > 1 {
flags := cmdFactory.GetCommandFlags(os.Args[1])
totalArgs, _ := cmdFactory.GetCommandTotalArgs(os.Args[1])
if args2skip := totalArgs + 2; len(os.Args) >= args2skip {
badFlags = matchArgAndFlags(flags, os.Args[args2skip:])
}
if badFlags != "" {
badFlags = badFlags + "\n\n"
}
}
injectHelpTemplate(badFlags)
theApp := app.NewApp(cmdRunner, metaDatas...)
rpcService.SetTheApp(theApp)
if cmdFactory.CheckIfCoreCmdExists(os.Args[1]) {
callCoreCommand(os.Args[0:], theApp)
} else {
// run each plugin and find the method/
// run method if exist
//.........这里部分代码省略.........
开发者ID:exg77,项目名称:cli,代码行数:101,代码来源:main.go
示例13: Run
func (cmd *LogalyzerCmd) Run(cliConnection plugin.CliConnection, args []string) {
port := 8080
aggregationWindow := 2 * time.Second
bufferSize := 100
cmd.ui = terminal.NewUI(os.Stdin, terminal.NewTeePrinter())
cmd.sendChan = make(chan []byte, 256)
if len(args) < 2 {
cmd.ui.Say("Usage: %s\n", cmd.Usage())
cmd.ui.Failed("No App Name given")
}
fc := flags.NewFlagContext(setupFlags())
err := fc.Parse(args[2:]...)
if err != nil {
cmd.ui.Failed(err.Error())
}
if fc.IsSet("p") {
port = fc.Int("p")
}
if fc.IsSet("agg-window") {
aggregationWindow = time.Duration(fc.Int("agg-window")) * time.Second
}
if fc.IsSet("buffer-size") {
bufferSize = fc.Int("buffer-size")
}
appName := args[1]
dopplerEndpoint, err := cliConnection.DopplerEndpoint()
if err != nil {
cmd.ui.Failed(err.Error())
}
appModel, err := cliConnection.GetApp(appName)
if err != nil {
cmd.ui.Failed(err.Error())
}
authToken, err := cliConnection.AccessToken()
if err != nil {
cmd.ui.Failed(err.Error())
}
outputChan := make(chan *events.LogMessage)
errorChan := make(chan error)
dopplerConnection := noaa.NewConsumer(dopplerEndpoint, &tls.Config{InsecureSkipVerify: true}, nil)
go dopplerConnection.TailingLogs(appModel.Guid, authToken, outputChan, errorChan)
go cmd.happyCalcer(aggregationWindow, bufferSize)
go cmd.startServer(cmd.getAssetsDir(), port)
cmd.ui.Say("Webserver is started at http://localhost:%d", port)
for {
select {
case log := <-outputChan:
if log.GetMessageType() == events.LogMessage_ERR {
cmd.errCount++
}
cmd.logCount++
cmd.sendChan <- log.GetMessage()
case err := <-errorChan:
cmd.ui.Failed(err.Error())
}
}
}
开发者ID:jtuchscherer,项目名称:logalyzer,代码行数:71,代码来源:main.go
示例14:
repoLocator := deps.RepoLocator.SetUserRepository(userRepo)
spaceRepo = new(apifakes.FakeSpaceRepository)
repoLocator = repoLocator.SetSpaceRepository(spaceRepo)
flagRepo = new(featureflagsfakes.FakeFeatureFlagRepository)
repoLocator = repoLocator.SetFeatureFlagRepository(flagRepo)
deps = commandregistry.Dependency{
UI: ui,
Config: configRepo,
RepoLocator: repoLocator,
}
cmd = &user.UnsetSpaceRole{}
cmd.SetDependency(deps, false)
flagContext = flags.NewFlagContext(map[string]flags.FlagSet{})
factory = new(requirementsfakes.FakeFactory)
loginRequirement = &passingRequirement{}
factory.NewLoginRequirementReturns(loginRequirement)
userRequirement = new(requirementsfakes.FakeUserRequirement)
userRequirement.ExecuteReturns(nil)
factory.NewUserRequirementReturns(userRequirement)
organizationRequirement = new(requirementsfakes.FakeOrganizationRequirement)
organizationRequirement.ExecuteReturns(nil)
factory.NewOrganizationRequirementReturns(organizationRequirement)
})
开发者ID:jsloyer,项目名称:cli,代码行数:30,代码来源:unset_space_role_test.go
示例15: main
func main() {
//make a reference to something in cf/commands/domain, so all init() in the directory will run
_ = domain.CreateDomain{}
defer handlePanics(deps.TeePrinter)
defer deps.Config.Close()
//////////////// non-codegangsta path ///////////////////////
if len(os.Args) > 1 {
cmd := os.Args[1]
if cmdRegistry.CommandExists(cmd) {
meta := cmdRegistry.FindCommand(os.Args[1]).MetaData()
fc := flags.NewFlagContext(meta.Flags)
fc.SkipFlagParsing(meta.SkipFlagParsing)
if requestHelp(os.Args[2:]) {
deps.Ui.Say(cmdRegistry.CommandUsage(cmd))
os.Exit(0)
} else {
err := fc.Parse(os.Args[2:]...)
if err != nil {
deps.Ui.Failed("Incorrect Usage\n\n" + err.Error() + "\n\n" + cmdRegistry.CommandUsage(cmd))
}
}
cmdRegistry.SetCommand(cmdRegistry.FindCommand(cmd).SetDependency(deps, false))
cfCmd := cmdRegistry.FindCommand(cmd)
reqs, err := cfCmd.Requirements(requirements.NewFactory(deps.Ui, deps.Config, deps.RepoLocator), fc)
if err != nil {
deps.Ui.Failed(err.Error())
}
for _, r := range reqs {
if !r.Execute() {
os.Exit(1)
}
}
cfCmd.Execute(fc)
os.Exit(0)
}
}
//////////////////////////////////////////
rpcService := newCliRpcServer(deps.TeePrinter, deps.TeePrinter)
cmdFactory := command_factory.NewFactory(deps.Ui, deps.Config, deps.ManifestRepo, deps.RepoLocator, deps.PluginConfig, rpcService)
requirementsFactory := requirements.NewFactory(deps.Ui, deps.Config, deps.RepoLocator)
cmdRunner := command_runner.NewRunner(cmdFactory, requirementsFactory, deps.Ui)
pluginsConfig := plugin_config.NewPluginConfig(func(err error) { deps.Ui.Failed(fmt.Sprintf("Error read/writing plugin config: %s, ", err.Error())) })
pluginList := pluginsConfig.Plugins()
var badFlags string
metaDatas := cmdFactory.CommandMetadatas()
//return only metadata for current command
metaDatas = mergePluginMetaData(metaDatas, pluginList)
if len(os.Args) > 1 {
flags := cmdFactory.GetCommandFlags(os.Args[1])
totalArgs, _ := cmdFactory.GetCommandTotalArgs(os.Args[1])
if args2skip := totalArgs + 2; len(os.Args) >= args2skip {
badFlags = matchArgAndFlags(flags, os.Args[args2skip:])
}
if badFlags != "" {
badFlags = badFlags + "\n\n"
}
}
injectHelpTemplate(badFlags)
theApp := app.NewApp(cmdRunner, metaDatas...)
rpcService.SetTheApp(theApp)
//command `cf` without argument
if len(os.Args) == 1 || os.Args[1] == "help" || requestHelp(os.Args[2:]) {
theApp.Run(os.Args)
} else if cmdFactory.CheckIfCoreCmdExists(os.Args[1]) {
callCoreCommand(os.Args[0:], theApp)
} else {
// run each plugin and find the method/
// run method if exist
ran := rpc.RunMethodIfExists(rpcService, os.Args[1:], pluginList)
if !ran {
theApp.Run(os.Args)
}
}
}
开发者ID:CodeWire,项目名称:cli,代码行数:90,代码来源:main.go
示例16: main
func main() {
commands_loader.Load()
defer handlePanics(deps.TeePrinter)
defer deps.Config.Close()
//handles `cf` | `cf -h` || `cf -help`
if len(os.Args) == 1 || os.Args[1] == "--help" || os.Args[1] == "-help" ||
os.Args[1] == "--h" || os.Args[1] == "-h" {
help.ShowHelp(help.GetHelpTemplate())
os.Exit(0)
}
//handle `cf -v` for cf version
if len(os.Args) == 2 && os.Args[1] == "-v" {
deps.Ui.Say(os.Args[0] + " version " + cf.Version + "-" + cf.BuiltOnDate)
os.Exit(0)
}
//handles `cf [COMMAND] -h ...`
//rearrage args to `cf help COMMAND` and let `command help` to print out usage
if requestHelp(os.Args[2:]) {
os.Args[2] = os.Args[1]
os.Args[1] = "help"
}
//run core command
cmd := os.Args[1]
if cmdRegistry.CommandExists(cmd) {
meta := cmdRegistry.FindCommand(os.Args[1]).MetaData()
fc := flags.NewFlagContext(meta.Flags)
fc.SkipFlagParsing(meta.SkipFlagParsing)
err := fc.Parse(os.Args[2:]...)
if err != nil {
deps.Ui.Failed("Incorrect Usage\n\n" + err.Error() + "\n\n" + cmdRegistry.CommandUsage(cmd))
}
cmdRegistry.SetCommand(cmdRegistry.FindCommand(cmd).SetDependency(deps, false))
cfCmd := cmdRegistry.FindCommand(cmd)
reqs, err := cfCmd.Requirements(requirements.NewFactory(deps.Ui, deps.Config, deps.RepoLocator), fc)
if err != nil {
deps.Ui.Failed(err.Error())
}
for _, r := range reqs {
if !r.Execute() {
os.Exit(1)
}
}
cfCmd.Execute(fc)
os.Exit(0)
}
//non core command, try plugin command
rpcService := newCliRpcServer(deps.TeePrinter, deps.TeePrinter)
pluginsConfig := plugin_config.NewPluginConfig(func(err error) { deps.Ui.Failed(fmt.Sprintf("Error read/writing plugin config: %s, ", err.Error())) })
pluginList := pluginsConfig.Plugins()
ran := rpc.RunMethodIfExists(rpcService, os.Args[1:], pluginList)
if !ran {
deps.Ui.Say("'" + os.Args[1] + T("' is not a registered command. See 'cf help'"))
os.Exit(1)
}
}
开发者ID:ralfcam,项目名称:cli,代码行数:70,代码来源:main.go
示例17: main
func main() {
defer handlePanics(deps.TeePrinter)
defer deps.Config.Close()
//handles `cf` | `cf -h` || `cf -help`
if len(os.Args) == 1 || os.Args[1] == "--help" || os.Args[1] == "-help" ||
os.Args[1] == "--h" || os.Args[1] == "-h" {
help.ShowHelp(help.GetHelpTemplate())
os.Exit(0)
}
//handle `cf -v` for cf version
if len(os.Args) == 2 && (os.Args[1] == "-v" || os.Args[1] == "--version") {
deps.Ui.Say(os.Args[0] + " version " + cf.Version + "-" + cf.BuiltOnDate)
os.Exit(0)
}
//handle `cf --build`
if len(os.Args) == 2 && (os.Args[1] == "--build" || os.Args[1] == "-b") {
deps.Ui.Say(T("{{.CFName}} was built with Go version: {{.GoVersion}}",
map[string]interface{}{
"CFName": os.Args[0],
"GoVersion": runtime.Version(),
}))
os.Exit(0)
}
//handles `cf [COMMAND] -h ...`
//rearrage args to `cf help COMMAND` and let `command help` to print out usage
if requestHelp(os.Args[2:]) {
os.Args[2] = os.Args[1]
os.Args[1] = "help"
}
warningProducers := []net.WarningProducer{}
for _, warningProducer := range deps.Gateways {
warningProducers = append(warningProducers, warningProducer)
}
warningsCollector := net.NewWarningsCollector(deps.Ui, warningProducers...)
commands_loader.Load()
//run core command
cmdName := os.Args[1]
cmd := cmdRegistry.FindCommand(cmdName)
if cmd != nil {
meta := cmd.MetaData()
flagContext := flags.NewFlagContext(meta.Flags)
flagContext.SkipFlagParsing(meta.SkipFlagParsing)
cmdArgs := os.Args[2:]
err := flagContext.Parse(cmdArgs...)
if err != nil {
usage := cmdRegistry.CommandUsage(cmdName)
deps.Ui.Failed("Incorrect Usage\n\n" + err.Error() + "\n\n" + usage)
}
cmd = cmd.SetDependency(deps, false)
cmdRegistry.SetCommand(cmd)
requirementsFactory := requirements.NewFactory(deps.Ui, deps.Config, deps.RepoLocator)
reqs, err := cmd.Requirements(requirementsFactory, flagContext)
if err != nil {
deps.Ui.Failed(err.Error())
}
for _, req := range reqs {
req.Execute()
}
cmd.Execute(flagContext)
warningsCollector.PrintWarnings()
os.Exit(0)
}
//non core command, try plugin command
rpcService := newCliRpcServer(deps.TeePrinter, deps.TeePrinter)
pluginConfig := plugin_config.NewPluginConfig(func(err error) {
deps.Ui.Failed(fmt.Sprintf("Error read/writing plugin config: %s, ", err.Error()))
})
pluginList := pluginConfig.Plugins()
ran := rpc.RunMethodIfExists(rpcService, os.Args[1:], pluginList)
if !ran {
deps.Ui.Say("'" + os.Args[1] + T("' is not a registered command. See 'cf help'"))
os.Exit(1)
}
}
开发者ID:xinpingluo,项目名称:cli,代码行数:93,代码来源:main.go
示例18:
buildpackRepo = new(apifakes.OldFakeBuildpackRepository)
requirementsFactory = &testreq.FakeReqFactory{}
})
runCommand := func(args ...string) bool {
return testcmd.RunCLICommand("buildpacks", args, requirementsFactory, updateCommandDependency, false)
}
Context("when arguments are provided", func() {
var cmd commandregistry.Command
var flagContext flags.FlagContext
BeforeEach(func() {
cmd = &buildpack.ListBuildpacks{}
cmd.SetDependency(deps, false)
flagContext = flags.NewFlagContext(cmd.MetaData().Flags)
})
It("should fail with usage", func() {
flagContext.Parse("blahblah")
reqs := cmd.Requirements(requirementsFactory, flagContext)
err := testcmd.RunRequirements(reqs)
Expect(err).To(HaveOccurred())
Expect(err.Error()).To(ContainSubstring("Incorrect Usage"))
Expect(err.Error()).To(ContainSubstring("No argument required"))
})
})
It("fails requirements when login fails", func() {
开发者ID:yingkitw,项目名称:cli,代码行数:31,代码来源:buildpacks_test.go
示例19:
Expect(outputLines).To(Equal([]string{
"-d Usage for d",
"--foo-a, -a Usage for foo-a",
"--foo-c, -c Usage for foo-c",
"--someflag-b Usage for someflag-b",
}))
}
})
Context("hidden flag", func() {
BeforeEach(func() {
fs := make(map[string]flags.FlagSet)
fs["hostname"] = &flags.StringFlag{Name: "hostname", ShortName: "n", Usage: "Hostname used to identify the HTTP route", Hidden: true}
fs["path"] = &flags.StringFlag{Name: "path", Usage: "Path used to identify the HTTP route"}
fc = flags.NewFlagContext(fs)
})
It("prints the flags in order", func() {
output := fc.ShowUsage(0)
outputLines := strings.Split(output, "\n")
Expect(outputLines).To(Equal([]string{
"--path Path used to identify the HTTP route",
}))
})
})
})
})
开发者ID:Reejoshi,项目名称:cli,代码行数:29,代码来源:flags_usage_test.go
注:本文中的github.com/cloudfoundry/cli/flags.NewFlagContext函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论