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  }