github.com/pingcap/tiflow@v0.0.0-20240520035814-5bf52d54e205/pkg/cmd/cli/cli.go (about) 1 // Copyright 2021 PingCAP, Inc. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // See the License for the specific language governing permissions and 12 // limitations under the License. 13 14 package cli 15 16 import ( 17 "github.com/pingcap/tiflow/pkg/cmd/factory" 18 "github.com/pingcap/tiflow/pkg/cmd/util" 19 "github.com/pingcap/tiflow/pkg/logutil" 20 "github.com/spf13/cobra" 21 ) 22 23 // NewCmdCli creates the `cli` command. 24 func NewCmdCli() *cobra.Command { 25 // Bind the certificate and log options. 26 cf := factory.NewClientFlags() 27 28 cmds := &cobra.Command{ 29 Use: "cli", 30 Short: "Manage replication task and TiCDC cluster", 31 Args: cobra.NoArgs, 32 } 33 34 // Binding the `cli` command flags. 35 cf.AddFlags(cmds) 36 cmds.PersistentPreRun = func(cmd *cobra.Command, args []string) { 37 // Here we will initialize the logging configuration and set the current default context. 38 cancel := util.InitCmd(cmd, &logutil.Config{Level: cf.GetLogLevel()}) 39 util.LogHTTPProxies() 40 // A notify that complete immediately, it skips the second signal essentially. 41 doneNotify := func() <-chan struct{} { 42 done := make(chan struct{}) 43 close(done) 44 return done 45 } 46 util.InitSignalHandling(doneNotify, cancel) 47 48 util.CheckErr(cf.CompleteClientAuthParameters(cmd)) 49 } 50 51 // Construct the client construction factory. 52 f := factory.NewFactory(cf) 53 54 // Add subcommands. 55 cmds.AddCommand(newCmdCapture(f)) 56 cmds.AddCommand(newCmdChangefeed(f)) 57 cmds.AddCommand(newCmdProcessor(f)) 58 cmds.AddCommand(newCmdTso(f)) 59 cmds.AddCommand(newCmdUnsafe(f)) 60 cmds.AddCommand(newConfigureCredentials()) 61 62 return cmds 63 }