github.com/GoogleContainerTools/kpt@v1.0.0-beta.50.0.20240520170205-c25345ffcbee/thirdparty/cmdconfig/commands/cmdsink/cmdsink.go (about) 1 // Copyright 2019 The Kubernetes Authors. 2 // SPDX-License-Identifier: Apache-2.0 3 4 package cmdsink 5 6 import ( 7 "context" 8 9 "github.com/GoogleContainerTools/kpt/internal/docs/generated/fndocs" 10 "github.com/GoogleContainerTools/kpt/internal/util/cmdutil" 11 "github.com/spf13/cobra" 12 ) 13 14 // GetSinkRunner returns a command for Sink. 15 func GetSinkRunner(ctx context.Context, name string) *SinkRunner { 16 r := &SinkRunner{ 17 Ctx: ctx, 18 } 19 c := &cobra.Command{ 20 Use: "sink DIR [flags]", 21 Short: fndocs.SinkShort, 22 Long: fndocs.SinkShort + "\n" + fndocs.SinkLong, 23 Args: cobra.MinimumNArgs(1), 24 Example: fndocs.SinkExamples, 25 RunE: r.runE, 26 } 27 r.Command = c 28 return r 29 } 30 31 func NewCommand(ctx context.Context, name string) *cobra.Command { 32 return GetSinkRunner(ctx, name).Command 33 } 34 35 // SinkRunner contains the run function 36 type SinkRunner struct { 37 Command *cobra.Command 38 Ctx context.Context 39 } 40 41 func (r *SinkRunner) runE(c *cobra.Command, args []string) error { 42 if err := cmdutil.CheckDirectoryNotPresent(args[0]); err != nil { 43 return err 44 } 45 return cmdutil.WriteToOutput(c.InOrStdin(), nil, args[0]) 46 }