本文整理匯總了Golang中github.com/micro/cli.Context.String方法的典型用法代碼示例。如果您正苦於以下問題:Golang Context.String方法的具體用法?Golang Context.String怎麽用?Golang Context.String使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/micro/cli.Context
的用法示例。
在下文中一共展示了Context.String方法的14個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: srv
func srv(ctx *cli.Context) {
service := micro.NewService(
micro.Name("go.micro.srv.db"),
micro.RegisterTTL(
time.Duration(ctx.GlobalInt("register_ttl"))*time.Second,
),
micro.RegisterInterval(
time.Duration(ctx.GlobalInt("register_interval"))*time.Second,
),
)
if len(ctx.String("database_service_namespace")) > 0 {
db.DBServiceNamespace = ctx.String("database_service_namespace")
}
proto.RegisterDBHandler(service.Server(), new(handler.DB))
if err := db.Init(service.Client().Options().Selector); err != nil {
log.Fatal(err)
}
if err := service.Run(); err != nil {
log.Fatal(err)
}
}
示例2: Init
func (h *hipchatInput) Init(ctx *cli.Context) error {
username := ctx.String("hipchat_username")
password := ctx.String("hipchat_password")
server := ctx.String("hipchat_server")
debug := ctx.Bool("hipchat_debug")
if len(username) == 0 {
return errors.New("require username")
}
if len(password) == 0 {
return errors.New("require password")
}
if len(server) == 0 {
return errors.New("require server")
}
h.username = username
h.password = password
h.server = server
h.debug = debug
return nil
}
示例3: Init
func (r *router) Init(ctx *cli.Context) error {
// TODO: Make this more configurable and add more sources
var conf config.Config
if c := ctx.String("config_source"); len(c) == 0 && r.opts.Config == nil {
return errors.New("config source must be defined")
} else if len(c) > 0 {
var source config.Source
switch c {
case "platform":
source = config.NewSource()
case "file":
fileName := DefaultFile
parts := strings.Split(c, ":")
if len(parts) > 1 {
fileName = parts[1]
}
source = file.NewSource(config.SourceName(fileName))
default:
return errors.New("Unknown config source " + c)
}
conf = config.NewConfig(config.WithSource(source))
} else {
conf = r.opts.Config
}
go r.run(conf)
return nil
}
示例4: Init
func (p *slackInput) Init(ctx *cli.Context) error {
debug := ctx.Bool("slack_debug")
token := ctx.String("slack_token")
if len(token) == 0 {
return errors.New("missing slack token")
}
p.debug = debug
p.token = token
return nil
}
示例5: runClient
func runClient(service micro.Service, c *cli.Context) {
// Create new greeter client
greeter := greeterProto.NewGreeterClient("greeter", service.Client())
name := "World"
if flagName := c.String("name"); flagName != "" {
name = flagName
}
// Call the greeter
rsp, err := greeter.Hello(context.TODO(), &greeterProto.HelloRequest{Name: name})
if err != nil {
fmt.Println(err)
return
}
// Print response
fmt.Println(rsp.Greeting)
}
示例6: srv
func srv(ctx *cli.Context) {
service := micro.NewService(
micro.Name("go.micro.srv.kv"),
micro.Version("latest"),
micro.RegisterTTL(
time.Duration(ctx.GlobalInt("register_ttl"))*time.Second,
),
micro.RegisterInterval(
time.Duration(ctx.GlobalInt("register_interval"))*time.Second,
),
micro.Flags(),
)
opts := []kv.Option{
kv.Client(service.Client()),
kv.Server(service.Server()),
}
if len(ctx.String("namespace")) > 0 {
opts = append(opts, kv.Namespace(ctx.String("namespace")))
}
keyval := kv.NewKV(opts...)
defer keyval.Close()
service.Server().Init(server.WrapHandler(func(fn server.HandlerFunc) server.HandlerFunc {
return func(ctx context.Context, req server.Request, rsp interface{}) error {
ctx = kv.NewContext(ctx, keyval)
return fn(ctx, req, rsp)
}
}))
proto.RegisterStoreHandler(service.Server(), new(handler.Store))
if err := service.Run(); err != nil {
log.Fatal(err)
}
}
示例7: run
func run(ctx *cli.Context) {
// Parse flags
if len(ctx.String("inputs")) == 0 {
log.Println("[bot] no inputs specified")
os.Exit(1)
}
inputs := strings.Split(ctx.String("inputs"), ",")
if len(inputs) == 0 {
log.Println("[bot] no inputs specified")
os.Exit(1)
}
ios := make(map[string]input.Input)
cmds := make(map[string]command.Command)
// create built in commands
for pattern, cmd := range commands {
cmds[pattern] = cmd(ctx)
}
// take other commands
for pattern, cmd := range command.Commands {
if c, ok := cmds[pattern]; ok {
log.Printf("[bot] command %s already registered for pattern %s\n", c.String(), pattern)
continue
}
// register command
cmds[pattern] = cmd
}
// Parse inputs
for _, io := range inputs {
i, ok := input.Inputs[io]
if !ok {
log.Printf("[bot] input %s not found\n", i)
os.Exit(1)
}
ios[io] = i
}
// Start bot
b := newBot(ctx, ios, cmds)
if err := b.start(); err != nil {
log.Println("error starting bot", err)
os.Exit(1)
}
// setup service
service := micro.NewService(
micro.Name("go.micro.bot"),
micro.RegisterTTL(
time.Duration(ctx.GlobalInt("register_ttl"))*time.Second,
),
micro.RegisterInterval(
time.Duration(ctx.GlobalInt("register_interval"))*time.Second,
),
)
// Run server
if err := service.Run(); err != nil {
log.Fatal(err)
}
// Stop bot
if err := b.stop(); err != nil {
log.Println("error stopping bot", err)
}
}
示例8: Before
func (c *cmd) Before(ctx *cli.Context) error {
// Due to logger issues with glog, we need to do this
os.Args = os.Args[:1]
flag.Set("logtostderr", fmt.Sprintf("%v", ctx.Bool("logtostderr")))
flag.Set("alsologtostderr", fmt.Sprintf("%v", ctx.Bool("alsologtostderr")))
flag.Set("stderrthreshold", ctx.String("stderrthreshold"))
flag.Set("log_backtrace_at", ctx.String("log_backtrace_at"))
flag.Set("log_dir", ctx.String("log_dir"))
flag.Set("vmodule", ctx.String("vmodule"))
flag.Set("v", ctx.String("v"))
flag.Parse()
// If flags are set then use them otherwise do nothing
var serverOpts []server.Option
var clientOpts []client.Option
// Set the broker
if len(ctx.String("broker")) > 0 {
if b, ok := c.opts.Brokers[ctx.String("broker")]; ok {
n := b(strings.Split(ctx.String("broker_address"), ","))
*c.opts.Broker = n
} else {
return fmt.Errorf("Broker %s not found", ctx.String("broker"))
}
serverOpts = append(serverOpts, server.Broker(*c.opts.Broker))
clientOpts = append(clientOpts, client.Broker(*c.opts.Broker))
}
// Set the registry
if len(ctx.String("registry")) > 0 {
if r, ok := c.opts.Registries[ctx.String("registry")]; ok {
n := r(strings.Split(ctx.String("registry_address"), ","))
*c.opts.Registry = n
} else {
return fmt.Errorf("Registry %s not found", ctx.String("registry"))
}
serverOpts = append(serverOpts, server.Registry(*c.opts.Registry))
clientOpts = append(clientOpts, client.Registry(*c.opts.Registry))
(*c.opts.Selector).Init(selector.Registry(*c.opts.Registry))
clientOpts = append(clientOpts, client.Selector(*c.opts.Selector))
(*c.opts.Broker).Init(broker.Registry(*c.opts.Registry))
}
// Set the selector
if len(ctx.String("selector")) > 0 {
if s, ok := c.opts.Selectors[ctx.String("selector")]; ok {
n := s(selector.Registry(*c.opts.Registry))
*c.opts.Selector = n
} else {
return fmt.Errorf("Selector %s not found", ctx.String("selector"))
}
// No server option here. Should there be?
clientOpts = append(clientOpts, client.Selector(*c.opts.Selector))
}
// Set the transport
if len(ctx.String("transport")) > 0 {
if t, ok := c.opts.Transports[ctx.String("transport")]; ok {
n := t(strings.Split(ctx.String("transport_address"), ","))
*c.opts.Transport = n
} else {
return fmt.Errorf("Transport %s not found", ctx.String("transport"))
}
serverOpts = append(serverOpts, server.Transport(*c.opts.Transport))
clientOpts = append(clientOpts, client.Transport(*c.opts.Transport))
}
// Parse the server options
metadata := make(map[string]string)
for _, d := range ctx.StringSlice("server_metadata") {
var key, val string
parts := strings.Split(d, "=")
key = parts[0]
if len(parts) > 1 {
val = strings.Join(parts[1:], "=")
}
metadata[key] = val
}
if len(metadata) > 0 {
serverOpts = append(serverOpts, server.Metadata(metadata))
}
if len(ctx.String("server_name")) > 0 {
serverOpts = append(serverOpts, server.Name(ctx.String("server_name")))
}
if len(ctx.String("server_version")) > 0 {
serverOpts = append(serverOpts, server.Version(ctx.String("server_version")))
}
if len(ctx.String("server_id")) > 0 {
serverOpts = append(serverOpts, server.Id(ctx.String("server_id")))
//.........這裏部分代碼省略.........
示例9: run
func run(ctx *cli.Context) {
namespace := ctx.String("namespace")
alias := ctx.String("alias")
fqdn := ctx.String("fqdn")
atype := ctx.String("type")
dir := ctx.Args().First()
if len(dir) == 0 {
fmt.Println("specify service name")
return
}
if len(namespace) == 0 {
fmt.Println("namespace not defined")
return
}
if len(atype) == 0 {
fmt.Println("type not defined")
return
}
// check if the path is absolute, we don't want this
// we want to a relative path so we can install in GOPATH
if path.IsAbs(dir) {
fmt.Println("require relative path as service will be installed in GOPATH")
return
}
goPath := os.Getenv("GOPATH")
// don't know GOPATH, runaway....
if len(goPath) == 0 {
fmt.Println("unknown GOPATH")
return
}
// attempt to split path if not windows
if runtime.GOOS != "windows" {
goPath = strings.Split(goPath, ":")[0]
}
goDir := filepath.Join(goPath, "src", path.Clean(dir))
if len(alias) == 0 {
// set as last part
alias = filepath.Base(dir)
}
if len(fqdn) == 0 {
fqdn = strings.Join([]string{namespace, atype, alias}, ".")
}
var c config
switch atype {
case "srv":
// create srv config
c = config{
Alias: alias,
Namespace: namespace,
Type: atype,
FQDN: fqdn,
Dir: dir,
GoDir: goDir,
GoPath: goPath,
Files: []file{
{"main.go", tmpl.MainSRV},
{"handler/example.go", tmpl.HandlerSRV},
{"subscriber/example.go", tmpl.SubscriberSRV},
{"proto/example/example.proto", tmpl.ProtoSRV},
{"Dockerfile", tmpl.DockerSRV},
{"README.md", tmpl.Readme},
},
Comments: []string{
"\ndownload protobuf for micro:\n",
"go get github.com/micro/protobuf/{proto,protoc-gen-go}",
"\ncompile the proto file example.proto:\n",
fmt.Sprintf("protoc -I%s \\\n\t--go_out=plugins=micro:%s \\\n\t%s\n",
goPath+"/src", goPath+"/src", goDir+"/proto/example/example.proto"),
},
}
case "api":
// create api config
c = config{
Alias: alias,
Namespace: namespace,
Type: atype,
FQDN: fqdn,
Dir: dir,
GoDir: goDir,
GoPath: goPath,
Files: []file{
{"main.go", tmpl.MainAPI},
{"client/example.go", tmpl.WrapperAPI},
{"handler/example.go", tmpl.HandlerAPI},
{"proto/example/example.proto", tmpl.ProtoAPI},
{"Dockerfile", tmpl.DockerSRV},
{"README.md", tmpl.Readme},
},
//.........這裏部分代碼省略.........
示例10: run
func run(ctx *cli.Context) {
if len(ctx.String("address")) > 0 {
Address = ctx.String("address")
}
if len(ctx.String("namespace")) > 0 {
Namespace = ctx.String("namespace")
}
if len(ctx.String("cors")) > 0 {
origins := make(map[string]bool)
for _, origin := range strings.Split(ctx.String("cors"), ",") {
origins[origin] = true
}
CORS = origins
}
// Init plugins
for _, p := range Plugins() {
p.Init(ctx)
}
var h http.Handler
r := mux.NewRouter()
s := &srv{r}
h = s
if ctx.GlobalBool("enable_stats") {
statsURL = "/stats"
st := stats.New()
s.HandleFunc("/stats", st.StatsHandler)
h = st.ServeHTTP(s)
st.Start()
defer st.Stop()
}
s.HandleFunc("/registry", registryHandler)
s.HandleFunc("/rpc", handler.RPC)
s.HandleFunc("/cli", cliHandler)
s.HandleFunc("/query", queryHandler)
s.HandleFunc("/favicon.ico", faviconHandler)
s.PathPrefix("/{service:[a-zA-Z0-9]+}").Handler(s.proxy())
s.HandleFunc("/", indexHandler)
var opts []server.Option
if ctx.GlobalBool("enable_tls") {
config, err := helper.TLSConfig(ctx)
if err != nil {
fmt.Println(err.Error())
return
}
opts = append(opts, server.EnableTLS(true))
opts = append(opts, server.TLSConfig(config))
}
// reverse wrap handler
plugins := append(Plugins(), plugin.Plugins()...)
for i := len(plugins); i > 0; i-- {
h = plugins[i-1].Handler()(h)
}
srv := server.NewServer(Address)
srv.Init(opts...)
srv.Handle("/", h)
// Initialise Server
service := micro.NewService(
micro.Name("go.micro.web"),
micro.RegisterTTL(
time.Duration(ctx.GlobalInt("register_ttl"))*time.Second,
),
micro.RegisterInterval(
time.Duration(ctx.GlobalInt("register_interval"))*time.Second,
),
)
if err := srv.Start(); err != nil {
log.Fatal(err)
}
// Run server
if err := service.Run(); err != nil {
log.Fatal(err)
}
if err := srv.Stop(); err != nil {
log.Fatal(err)
}
}
示例11: Init
func (w *whitelist) Init(ctx *cli.Context) error {
if whitelist := ctx.String("ip_whitelist"); len(whitelist) > 0 {
w.load(strings.Split(whitelist, ",")...)
}
return nil
}
示例12: Before
func (c *cmd) Before(ctx *cli.Context) error {
// If flags are set then use them otherwise do nothing
var serverOpts []server.Option
var clientOpts []client.Option
// Set the broker
if name := ctx.String("broker"); len(name) > 0 || len(ctx.String("broker_address")) > 0 {
if len(name) == 0 {
name = defaultBroker
}
if b, ok := c.opts.Brokers[name]; ok {
n := b(broker.Addrs(strings.Split(ctx.String("broker_address"), ",")...))
*c.opts.Broker = n
} else {
return fmt.Errorf("Broker %s not found", name)
}
serverOpts = append(serverOpts, server.Broker(*c.opts.Broker))
clientOpts = append(clientOpts, client.Broker(*c.opts.Broker))
}
// Set the registry
if name := ctx.String("registry"); len(name) > 0 || len(ctx.String("registry_address")) > 0 {
if len(name) == 0 {
name = defaultRegistry
}
if r, ok := c.opts.Registries[name]; ok {
n := r(registry.Addrs(strings.Split(ctx.String("registry_address"), ",")...))
*c.opts.Registry = n
} else {
return fmt.Errorf("Registry %s not found", name)
}
serverOpts = append(serverOpts, server.Registry(*c.opts.Registry))
clientOpts = append(clientOpts, client.Registry(*c.opts.Registry))
(*c.opts.Selector).Init(selector.Registry(*c.opts.Registry))
clientOpts = append(clientOpts, client.Selector(*c.opts.Selector))
(*c.opts.Broker).Init(broker.Registry(*c.opts.Registry))
}
// Set the selector
if name := ctx.String("selector"); len(name) > 0 {
if s, ok := c.opts.Selectors[name]; ok {
n := s(selector.Registry(*c.opts.Registry))
*c.opts.Selector = n
} else {
return fmt.Errorf("Selector %s not found", name)
}
// No server option here. Should there be?
clientOpts = append(clientOpts, client.Selector(*c.opts.Selector))
}
// Set the transport
if name := ctx.String("transport"); len(name) > 0 || len(ctx.String("transport_address")) > 0 {
if len(name) == 0 {
name = defaultTransport
}
if t, ok := c.opts.Transports[name]; ok {
n := t(transport.Addrs(strings.Split(ctx.String("transport_address"), ",")...))
*c.opts.Transport = n
} else {
return fmt.Errorf("Transport %s not found", name)
}
serverOpts = append(serverOpts, server.Transport(*c.opts.Transport))
clientOpts = append(clientOpts, client.Transport(*c.opts.Transport))
}
// Parse the server options
metadata := make(map[string]string)
for _, d := range ctx.StringSlice("server_metadata") {
var key, val string
parts := strings.Split(d, "=")
key = parts[0]
if len(parts) > 1 {
val = strings.Join(parts[1:], "=")
}
metadata[key] = val
}
if len(metadata) > 0 {
serverOpts = append(serverOpts, server.Metadata(metadata))
}
if len(ctx.String("server_name")) > 0 {
serverOpts = append(serverOpts, server.Name(ctx.String("server_name")))
}
if len(ctx.String("server_version")) > 0 {
serverOpts = append(serverOpts, server.Version(ctx.String("server_version")))
}
if len(ctx.String("server_id")) > 0 {
//.........這裏部分代碼省略.........
示例13: run
func run(ctx *cli.Context, car *sidecar) {
if len(ctx.String("address")) > 0 {
Address = ctx.String("address")
}
if len(ctx.String("cors")) > 0 {
origins := make(map[string]bool)
for _, origin := range strings.Split(ctx.String("cors"), ",") {
origins[origin] = true
}
CORS = origins
}
if len(ctx.String("namespace")) > 0 {
Namespace = ctx.String("namespace")
}
// Init plugins
for _, p := range Plugins() {
p.Init(ctx)
}
var opts []server.Option
if ctx.GlobalBool("enable_tls") {
config, err := helper.TLSConfig(ctx)
if err != nil {
fmt.Println(err.Error())
return
}
opts = append(opts, server.EnableTLS(true))
opts = append(opts, server.TLSConfig(config))
}
r := mux.NewRouter()
s := &srv{r}
// new server
srv := server.NewServer(Address)
srv.Init(opts...)
// register handlers
if car != nil {
log.Printf("Registering Health handler at %s", HealthPath)
r.Handle(HealthPath, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if c, err := car.hc(); err != nil {
http.Error(w, err.Error(), c)
return
}
}))
}
log.Printf("Registering Registry handler at %s", RegistryPath)
r.Handle(RegistryPath, http.HandlerFunc(handler.Registry))
log.Printf("Registering RPC handler at %s", RPCPath)
r.Handle(RPCPath, http.HandlerFunc(handler.RPC))
log.Printf("Registering Broker handler at %s", BrokerPath)
r.Handle(BrokerPath, http.HandlerFunc(handler.Broker))
log.Printf("Registering Root Handler at %s", RootPath)
r.PathPrefix(RootPath).Handler(handler.RPCX(Namespace))
var h http.Handler = s
if ctx.GlobalBool("enable_stats") {
st := stats.New()
r.Handle("/stats", http.HandlerFunc(st.StatsHandler))
h = st.ServeHTTP(r)
st.Start()
defer st.Stop()
}
// reverse wrap handler
plugins := append(Plugins(), plugin.Plugins()...)
for i := len(plugins); i > 0; i-- {
h = plugins[i-1].Handler()(h)
}
srv.Handle("/", h)
// Initialise Server
service := micro.NewService(
micro.Name("go.micro.sidecar"),
micro.RegisterTTL(
time.Duration(ctx.GlobalInt("register_ttl"))*time.Second,
),
micro.RegisterInterval(
time.Duration(ctx.GlobalInt("register_interval"))*time.Second,
),
)
if err := srv.Start(); err != nil {
log.Fatal(err)
}
// Run server
if err := service.Run(); err != nil {
log.Fatal(err)
}
//.........這裏部分代碼省略.........
示例14: run
func run(ctx *cli.Context) {
if len(ctx.String("address")) > 0 {
Address = ctx.String("address")
}
if len(ctx.String("handler")) > 0 {
Handler = ctx.String("handler")
}
if len(ctx.String("namespace")) > 0 {
Namespace = ctx.String("namespace")
}
if len(ctx.String("cors")) > 0 {
origins := make(map[string]bool)
for _, origin := range strings.Split(ctx.String("cors"), ",") {
origins[origin] = true
}
CORS = origins
}
// Init plugins
for _, p := range Plugins() {
p.Init(ctx)
}
// Init API
var opts []server.Option
if ctx.GlobalBool("enable_tls") {
config, err := helper.TLSConfig(ctx)
if err != nil {
fmt.Println(err.Error())
return
}
opts = append(opts, server.EnableTLS(true))
opts = append(opts, server.TLSConfig(config))
}
// create the router
r := mux.NewRouter()
s := &srv{r}
var h http.Handler = s
if ctx.GlobalBool("enable_stats") {
st := stats.New()
r.HandleFunc("/stats", st.StatsHandler)
h = st.ServeHTTP(s)
st.Start()
defer st.Stop()
}
log.Printf("Registering RPC Handler at %s", RPCPath)
r.HandleFunc(RPCPath, handler.RPC)
switch Handler {
case "rpc":
log.Printf("Registering API RPC Handler at %s", APIPath)
r.PathPrefix(APIPath).Handler(handler.RPCX(Namespace))
case "proxy":
log.Printf("Registering API Proxy Handler at %s", ProxyPath)
r.PathPrefix(ProxyPath).Handler(handler.Proxy(Namespace, false))
default:
log.Printf("Registering API Default Handler at %s", APIPath)
r.PathPrefix(APIPath).Handler(handler.API(Namespace))
}
// reverse wrap handler
plugins := append(Plugins(), plugin.Plugins()...)
for i := len(plugins); i > 0; i-- {
h = plugins[i-1].Handler()(h)
}
// create the server
api := server.NewServer(Address)
api.Init(opts...)
api.Handle("/", h)
// Initialise Server
service := micro.NewService(
micro.Name("go.micro.api"),
micro.RegisterTTL(
time.Duration(ctx.GlobalInt("register_ttl"))*time.Second,
),
micro.RegisterInterval(
time.Duration(ctx.GlobalInt("register_interval"))*time.Second,
),
)
// Start API
if err := api.Start(); err != nil {
log.Fatal(err)
}
// Run server
if err := service.Run(); err != nil {
log.Fatal(err)
}
// Stop API
if err := api.Stop(); err != nil {
log.Fatal(err)
//.........這裏部分代碼省略.........