diff --git a/.gitignore b/.gitignore index 60ed3d6910d..0ba22ca3b5c 100644 --- a/.gitignore +++ b/.gitignore @@ -15,5 +15,5 @@ docs/resources docs/node_modules docs/themes docs/package-lock.json -pkg/skaffold/color/debug.test +pkg/skaffold/output/debug.test cmd/skaffold/app/cmd/statik/statik.go diff --git a/cmd/skaffold/app/cmd/cmd.go b/cmd/skaffold/app/cmd/cmd.go index 1af8a6c9d07..e4b0b4ed05f 100644 --- a/cmd/skaffold/app/cmd/cmd.go +++ b/cmd/skaffold/app/cmd/cmd.go @@ -28,11 +28,12 @@ import ( "github.com/spf13/pflag" "k8s.io/kubectl/pkg/util/templates" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/config" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/constants" sErrors "github.com/GoogleContainerTools/skaffold/pkg/skaffold/errors" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/instrumentation" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/instrumentation/prompt" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/runner/runcontext" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/server" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/survey" @@ -78,7 +79,7 @@ func NewSkaffoldCommand(out, errOut io.Writer) *cobra.Command { opts.Command = cmd.Use instrumentation.SetCommand(cmd.Use) - out := color.SetupColors(out, defaultColor, forceColors) + out := output.SetupColors(out, defaultColor, forceColors) if timestamps { l := logrus.New() l.SetOutput(out) @@ -114,7 +115,7 @@ func NewSkaffoldCommand(out, errOut io.Writer) *cobra.Command { updateMsg <- updateCheckForReleasedVersionsIfNotDisabled(versionInfo.Version) surveyPrompt <- config.ShouldDisplaySurveyPrompt(opts.GlobalConfig) }() - metricsPrompt = instrumentation.ShouldDisplayMetricsPrompt(opts.GlobalConfig) + metricsPrompt = prompt.ShouldDisplayMetricsPrompt(opts.GlobalConfig) return nil }, PersistentPostRun: func(cmd *cobra.Command, args []string) { @@ -140,7 +141,7 @@ func NewSkaffoldCommand(out, errOut io.Writer) *cobra.Command { default: } if metricsPrompt { - if err := instrumentation.DisplayMetricsPrompt(opts.GlobalConfig, cmd.OutOrStdout()); err != nil { + if err := prompt.DisplayMetricsPrompt(opts.GlobalConfig, cmd.OutOrStdout()); err != nil { fmt.Fprintf(cmd.OutOrStderr(), "%v\n", err) } } @@ -194,7 +195,7 @@ func NewSkaffoldCommand(out, errOut io.Writer) *cobra.Command { templates.ActsAsRootCommand(rootCmd, nil, groups...) rootCmd.PersistentFlags().StringVarP(&v, "verbosity", "v", constants.DefaultLogLevel.String(), "Log level (debug, info, warn, error, fatal, panic)") - rootCmd.PersistentFlags().IntVar(&defaultColor, "color", int(color.DefaultColorCode), "Specify the default output color in ANSI escape codes") + rootCmd.PersistentFlags().IntVar(&defaultColor, "color", int(output.DefaultColorCode), "Specify the default output color in ANSI escape codes") rootCmd.PersistentFlags().BoolVar(&forceColors, "force-colors", false, "Always print color codes (hidden)") rootCmd.PersistentFlags().BoolVar(&interactive, "interactive", true, "Allow user prompts for more information") rootCmd.PersistentFlags().BoolVar(&update.EnableCheck, "update-check", true, "Check for a more recent version of Skaffold") diff --git a/cmd/skaffold/app/cmd/diagnose.go b/cmd/skaffold/app/cmd/diagnose.go index 83534efcf3a..10f674dc967 100644 --- a/cmd/skaffold/app/cmd/diagnose.go +++ b/cmd/skaffold/app/cmd/diagnose.go @@ -23,8 +23,8 @@ import ( "github.com/spf13/cobra" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/diagnose" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/parser" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/runner/runcontext" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" @@ -91,7 +91,7 @@ func printArtifactDiagnostics(ctx context.Context, out io.Writer, configs []*lat return fmt.Errorf("running diagnostic on artifacts: %w", err) } - color.Blue.Fprintln(out, "\nConfiguration") + output.Blue.Fprintln(out, "\nConfiguration") } return nil } diff --git a/cmd/skaffold/app/cmd/find_configs.go b/cmd/skaffold/app/cmd/find_configs.go index ae95ad19ae2..d1e38c77330 100644 --- a/cmd/skaffold/app/cmd/find_configs.go +++ b/cmd/skaffold/app/cmd/find_configs.go @@ -25,7 +25,7 @@ import ( "github.com/spf13/cobra" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/walk" @@ -65,9 +65,9 @@ func doFindConfigs(_ context.Context, out io.Writer) error { case "table": pathOutLen, versionOutLen := 70, 30 for p, v := range pathToVersion { - c := color.Default + c := output.Default if v != latestV1.Version { - c = color.Green + c = output.Green } c.Fprintf(out, fmt.Sprintf("%%-%ds\t%%-%ds\n", pathOutLen, versionOutLen), p, v) } diff --git a/cmd/skaffold/app/cmd/fix.go b/cmd/skaffold/app/cmd/fix.go index c2e0896d3f1..d9fc2b66f2d 100644 --- a/cmd/skaffold/app/cmd/fix.go +++ b/cmd/skaffold/app/cmd/fix.go @@ -24,7 +24,7 @@ import ( "github.com/spf13/cobra" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/validation" @@ -63,7 +63,7 @@ func fix(out io.Writer, configFile string, toVersion string, overwrite bool) err } } if !needsUpdate { - color.Default.Fprintln(out, "config is already version", toVersion) + output.Default.Fprintln(out, "config is already version", toVersion) return nil } @@ -97,7 +97,7 @@ func fix(out io.Writer, configFile string, toVersion string, overwrite bool) err if err := ioutil.WriteFile(configFile, newCfg, 0644); err != nil { return fmt.Errorf("writing config file: %w", err) } - color.Default.Fprintf(out, "New config at version %s generated and written to %s\n", toVersion, opts.ConfigurationFile) + output.Default.Fprintf(out, "New config at version %s generated and written to %s\n", toVersion, opts.ConfigurationFile) } else { out.Write(newCfg) } diff --git a/cmd/skaffold/app/cmd/generate_pipeline.go b/cmd/skaffold/app/cmd/generate_pipeline.go index a2fa932f714..c6dd86cf24d 100644 --- a/cmd/skaffold/app/cmd/generate_pipeline.go +++ b/cmd/skaffold/app/cmd/generate_pipeline.go @@ -23,7 +23,7 @@ import ( "github.com/spf13/cobra" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/runner" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" ) @@ -48,7 +48,7 @@ func doGeneratePipeline(ctx context.Context, out io.Writer) error { if err := r.GeneratePipeline(ctx, out, configs, configFiles, "pipeline.yaml"); err != nil { return fmt.Errorf("generating : %w", err) } - color.Default.Fprintln(out, "Pipeline config written to pipeline.yaml!") + output.Default.Fprintln(out, "Pipeline config written to pipeline.yaml!") return nil }) } diff --git a/cmd/skaffold/app/cmd/runner.go b/cmd/skaffold/app/cmd/runner.go index 99802665f6a..d3cd73c8f65 100644 --- a/cmd/skaffold/app/cmd/runner.go +++ b/cmd/skaffold/app/cmd/runner.go @@ -24,7 +24,6 @@ import ( "github.com/sirupsen/logrus" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/config" sErrors "github.com/GoogleContainerTools/skaffold/pkg/skaffold/errors" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/event" @@ -32,6 +31,7 @@ import ( initConfig "github.com/GoogleContainerTools/skaffold/pkg/skaffold/initializer/config" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/instrumentation" kubectx "github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubernetes/context" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/parser" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/runner" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/runner/runcontext" @@ -109,7 +109,7 @@ func withFallbackConfig(out io.Writer, opts config.SkaffoldOptions, getCfgs func var e sErrors.Error if errors.As(err, &e) && e.StatusCode() == proto.StatusCode_CONFIG_FILE_NOT_FOUND_ERR { if opts.AutoCreateConfig && initializer.ValidCmd(opts) { - color.Default.Fprintf(out, "Skaffold config file %s not found - Trying to create one for you...\n", opts.ConfigurationFile) + output.Default.Fprintf(out, "Skaffold config file %s not found - Trying to create one for you...\n", opts.ConfigurationFile) config, err := initializer.Transparent(context.Background(), out, initConfig.Config{Opts: opts}) if err != nil { return nil, fmt.Errorf("unable to generate skaffold config file automatically - try running `skaffold init`: %w", err) diff --git a/cmd/skaffold/app/tips/tips.go b/cmd/skaffold/app/tips/tips.go index 2c165e47938..36a15e482b9 100644 --- a/cmd/skaffold/app/tips/tips.go +++ b/cmd/skaffold/app/tips/tips.go @@ -19,8 +19,8 @@ package tips import ( "io" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/config" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" ) // PrintForRun prints tips to the user who has run `skaffold run`. @@ -51,5 +51,5 @@ func PrintUseRunVsDeploy(out io.Writer) { } func printTip(out io.Writer, message string) { - color.Green.Fprintln(out, message) + output.Green.Fprintln(out, message) } diff --git a/cmd/skaffold/skaffold.go b/cmd/skaffold/skaffold.go index d0659d3eedf..711ca5dba10 100644 --- a/cmd/skaffold/skaffold.go +++ b/cmd/skaffold/skaffold.go @@ -24,8 +24,8 @@ import ( "github.com/sirupsen/logrus" "github.com/GoogleContainerTools/skaffold/cmd/skaffold/app" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/instrumentation" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" ) type ExitCoder interface { @@ -41,8 +41,8 @@ func main() { // As we allow some color setup using CLI flags for the main run, we can't run SetupColors() // for the entire skaffold run here. It's possible SetupColors() was never called, so call it again // before we print an error to get the right coloring. - errOut := color.SetupColors(os.Stderr, color.DefaultColorCode, false) - color.Red.Fprintln(errOut, err) + errOut := output.SetupColors(os.Stderr, output.DefaultColorCode, false) + output.Red.Fprintln(errOut, err) code = exitCode(err) } } diff --git a/hack/versions/cmd/new/version.go b/hack/versions/cmd/new/version.go index 52c46e79def..d3ac40e64ef 100644 --- a/hack/versions/cmd/new/version.go +++ b/hack/versions/cmd/new/version.go @@ -29,7 +29,7 @@ import ( "github.com/sirupsen/logrus" hackschema "github.com/GoogleContainerTools/skaffold/hack/versions/pkg/schema" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/walk" ) @@ -118,7 +118,7 @@ func readNextVersion(current string) string { var new string if len(os.Args) <= 1 { new = bumpVersion(current) - color.Red.Fprintf(os.Stdout, "Please enter new version (default: %s): ", new) + output.Red.Fprintf(os.Stdout, "Please enter new version (default: %s): ", new) reader := bufio.NewReader(os.Stdin) if line, err := reader.ReadString('\n'); err != nil { logrus.Fatalf("error reading input: %s", err) diff --git a/pkg/skaffold/build/bazel/build.go b/pkg/skaffold/build/bazel/build.go index 5abe353cd4c..1212fcfded4 100644 --- a/pkg/skaffold/build/bazel/build.go +++ b/pkg/skaffold/build/bazel/build.go @@ -26,8 +26,8 @@ import ( "path/filepath" "strings" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/docker" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/util" ) @@ -56,7 +56,7 @@ func (b *Builder) buildTar(ctx context.Context, out io.Writer, workspace string, args = append(args, a.BuildArgs...) args = append(args, a.BuildTarget) - if color.IsColorable(out) { + if output.IsColorable(out) { args = append(args, "--color=yes") } else { args = append(args, "--color=no") diff --git a/pkg/skaffold/build/buildpacks/lifecycle.go b/pkg/skaffold/build/buildpacks/lifecycle.go index 1dfd8634f3f..b46d4830ef3 100644 --- a/pkg/skaffold/build/buildpacks/lifecycle.go +++ b/pkg/skaffold/build/buildpacks/lifecycle.go @@ -32,8 +32,8 @@ import ( "github.com/buildpacks/pack/project" "github.com/sirupsen/logrus" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/docker" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" ) @@ -91,7 +91,7 @@ func (b *Builder) build(ctx context.Context, out io.Writer, a *latestV1.Artifact builderImage, runImage, pullPolicy := resolveDependencyImages(artifact, b.artifacts, a.Dependencies, b.pushImages) - if err := runPackBuildFunc(ctx, color.GetWriter(out), b.localDocker, pack.BuildOptions{ + if err := runPackBuildFunc(ctx, output.GetWriter(out), b.localDocker, pack.BuildOptions{ AppPath: workspace, Builder: builderImage, RunImage: runImage, diff --git a/pkg/skaffold/build/cache/retrieve.go b/pkg/skaffold/build/cache/retrieve.go index dacb013574b..04c866ee634 100644 --- a/pkg/skaffold/build/cache/retrieve.go +++ b/pkg/skaffold/build/cache/retrieve.go @@ -25,10 +25,10 @@ import ( "github.com/sirupsen/logrus" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/build" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/docker" sErrors "github.com/GoogleContainerTools/skaffold/pkg/skaffold/errors" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/graph" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/tag" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/util" @@ -40,7 +40,7 @@ func (c *cache) Build(ctx context.Context, out io.Writer, tags tag.ImageTags, ar start := time.Now() - color.Default.Fprintln(out, "Checking cache...") + output.Default.Fprintln(out, "Checking cache...") lookup := make(chan []cacheDetails) go func() { lookup <- c.lookupArtifacts(ctx, tags, artifacts) }() @@ -56,28 +56,28 @@ func (c *cache) Build(ctx context.Context, out io.Writer, tags tag.ImageTags, ar var needToBuild []*latestV1.Artifact var alreadyBuilt []graph.Artifact for i, artifact := range artifacts { - color.Default.Fprintf(out, " - %s: ", artifact.ImageName) + output.Default.Fprintf(out, " - %s: ", artifact.ImageName) result := results[i] switch result := result.(type) { case failed: - color.Red.Fprintln(out, "Error checking cache.") + output.Red.Fprintln(out, "Error checking cache.") return nil, result.err case needsBuilding: - color.Yellow.Fprintln(out, "Not found. Building") + output.Yellow.Fprintln(out, "Not found. Building") hashByName[artifact.ImageName] = result.Hash() needToBuild = append(needToBuild, artifact) continue case needsTagging: - color.Green.Fprintln(out, "Found. Tagging") + output.Green.Fprintln(out, "Found. Tagging") if err := result.Tag(ctx, c); err != nil { return nil, fmt.Errorf("tagging image: %w", err) } case needsPushing: - color.Green.Fprintln(out, "Found. Pushing") + output.Green.Fprintln(out, "Found. Pushing") if err := result.Push(ctx, out, c); err != nil { return nil, fmt.Errorf("%s: %w", sErrors.PushImageErr, err) } @@ -88,9 +88,9 @@ func (c *cache) Build(ctx context.Context, out io.Writer, tags tag.ImageTags, ar return nil, err } if isLocal { - color.Green.Fprintln(out, "Found Locally") + output.Green.Fprintln(out, "Found Locally") } else { - color.Green.Fprintln(out, "Found Remotely") + output.Green.Fprintln(out, "Found Remotely") } } diff --git a/pkg/skaffold/build/cluster/secret.go b/pkg/skaffold/build/cluster/secret.go index 5db792ede3e..8974c610b45 100644 --- a/pkg/skaffold/build/cluster/secret.go +++ b/pkg/skaffold/build/cluster/secret.go @@ -28,8 +28,8 @@ import ( typedV1 "k8s.io/client-go/kubernetes/typed/core/v1" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/build/kaniko" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" kubernetesclient "github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubernetes/client" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" ) const ( @@ -41,7 +41,7 @@ func (b *Builder) setupPullSecret(ctx context.Context, out io.Writer) (func(), e return func() {}, nil } - color.Default.Fprintf(out, "Checking for kaniko secret [%s/%s]...\n", b.Namespace, b.PullSecretName) + output.Default.Fprintf(out, "Checking for kaniko secret [%s/%s]...\n", b.Namespace, b.PullSecretName) client, err := kubernetesclient.Client() if err != nil { return nil, fmt.Errorf("getting Kubernetes client: %w", err) @@ -49,7 +49,7 @@ func (b *Builder) setupPullSecret(ctx context.Context, out io.Writer) (func(), e secrets := client.CoreV1().Secrets(b.Namespace) if _, err := secrets.Get(ctx, b.PullSecretName, metav1.GetOptions{}); err != nil { - color.Default.Fprintf(out, "Creating kaniko secret [%s/%s]...\n", b.Namespace, b.PullSecretName) + output.Default.Fprintf(out, "Creating kaniko secret [%s/%s]...\n", b.Namespace, b.PullSecretName) if b.PullSecretPath == "" { return nil, fmt.Errorf("secret %s does not exist. No path specified to create it", b.PullSecretName) } @@ -95,7 +95,7 @@ func (b *Builder) setupDockerConfigSecret(ctx context.Context, out io.Writer) (f return func() {}, nil } - color.Default.Fprintf(out, "Creating docker config secret [%s]...\n", b.DockerConfig.SecretName) + output.Default.Fprintf(out, "Creating docker config secret [%s]...\n", b.DockerConfig.SecretName) client, err := kubernetesclient.Client() if err != nil { diff --git a/pkg/skaffold/build/docker/docker.go b/pkg/skaffold/build/docker/docker.go index 29e0bc1ea96..a3022c7b1ab 100644 --- a/pkg/skaffold/build/docker/docker.go +++ b/pkg/skaffold/build/docker/docker.go @@ -23,8 +23,8 @@ import ( "os" "os/exec" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/docker" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/util" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/warnings" @@ -48,7 +48,7 @@ func (b *Builder) Build(ctx context.Context, out io.Writer, a *latestV1.Artifact var imageID string if b.useCLI || b.useBuildKit { - imageID, err = b.dockerCLIBuild(ctx, color.GetWriter(out), a.Workspace, dockerfile, a.ArtifactType.DockerArtifact, opts) + imageID, err = b.dockerCLIBuild(ctx, output.GetWriter(out), a.Workspace, dockerfile, a.ArtifactType.DockerArtifact, opts) } else { imageID, err = b.localDocker.Build(ctx, out, a.Workspace, a.ImageName, a.ArtifactType.DockerArtifact, opts) } diff --git a/pkg/skaffold/build/gcb/cloud_build.go b/pkg/skaffold/build/gcb/cloud_build.go index bcd3bc3d731..ce4022730b6 100644 --- a/pkg/skaffold/build/gcb/cloud_build.go +++ b/pkg/skaffold/build/gcb/cloud_build.go @@ -34,10 +34,10 @@ import ( "k8s.io/apimachinery/pkg/util/wait" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/build" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/constants" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/docker" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/gcp" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/sources" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/util" @@ -99,7 +99,7 @@ func (b *Builder) buildArtifactWithCloudBuild(ctx context.Context, out io.Writer return "", fmt.Errorf("getting dependencies for %q: %w", artifact.ImageName, err) } - color.Default.Fprintf(out, "Pushing code to gs://%s/%s\n", cbBucket, buildObject) + output.Default.Fprintf(out, "Pushing code to gs://%s/%s\n", cbBucket, buildObject) // Upload entire workspace for Jib projects to fix multi-module bug // https://github.com/GoogleContainerTools/skaffold/issues/3477 @@ -132,7 +132,7 @@ func (b *Builder) buildArtifactWithCloudBuild(ctx context.Context, out io.Writer return "", fmt.Errorf("getting build ID from op: %w", err) } logsObject := fmt.Sprintf("log-%s.txt", remoteID) - color.Default.Fprintf(out, "Logs are available at \nhttps://console.cloud.google.com/m/cloudstorage/b/%s/o/%s\n", cbBucket, logsObject) + output.Default.Fprintf(out, "Logs are available at \nhttps://console.cloud.google.com/m/cloudstorage/b/%s/o/%s\n", cbBucket, logsObject) var digest string offset := int64(0) diff --git a/pkg/skaffold/build/jib/gradle.go b/pkg/skaffold/build/jib/gradle.go index a718fbb0d1d..913c422486d 100644 --- a/pkg/skaffold/build/jib/gradle.go +++ b/pkg/skaffold/build/jib/gradle.go @@ -24,8 +24,8 @@ import ( "github.com/sirupsen/logrus" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/docker" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/util" ) @@ -44,7 +44,7 @@ const MinimumJibGradleVersionForSync = "2.0.0" var GradleCommand = util.CommandWrapper{Executable: "gradle", Wrapper: "gradlew"} func (b *Builder) buildJibGradleToDocker(ctx context.Context, out io.Writer, workspace string, artifact *latestV1.JibArtifact, deps []*latestV1.ArtifactDependency, tag string) (string, error) { - args := GenerateGradleBuildArgs("jibDockerBuild", tag, artifact, b.skipTests, b.pushImages, deps, b.artifacts, b.cfg.GetInsecureRegistries(), color.IsColorable(out)) + args := GenerateGradleBuildArgs("jibDockerBuild", tag, artifact, b.skipTests, b.pushImages, deps, b.artifacts, b.cfg.GetInsecureRegistries(), output.IsColorable(out)) if err := b.runGradleCommand(ctx, out, workspace, args); err != nil { return "", jibToolErr(err) } @@ -53,7 +53,7 @@ func (b *Builder) buildJibGradleToDocker(ctx context.Context, out io.Writer, wor } func (b *Builder) buildJibGradleToRegistry(ctx context.Context, out io.Writer, workspace string, artifact *latestV1.JibArtifact, deps []*latestV1.ArtifactDependency, tag string) (string, error) { - args := GenerateGradleBuildArgs("jib", tag, artifact, b.skipTests, b.pushImages, deps, b.artifacts, b.cfg.GetInsecureRegistries(), color.IsColorable(out)) + args := GenerateGradleBuildArgs("jib", tag, artifact, b.skipTests, b.pushImages, deps, b.artifacts, b.cfg.GetInsecureRegistries(), output.IsColorable(out)) if err := b.runGradleCommand(ctx, out, workspace, args); err != nil { return "", jibToolErr(err) } diff --git a/pkg/skaffold/build/jib/maven.go b/pkg/skaffold/build/jib/maven.go index 7bf2127740c..e7a09d36e04 100644 --- a/pkg/skaffold/build/jib/maven.go +++ b/pkg/skaffold/build/jib/maven.go @@ -24,8 +24,8 @@ import ( "github.com/sirupsen/logrus" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/docker" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/util" ) @@ -44,7 +44,7 @@ const MinimumJibMavenVersionForSync = "2.0.0" var MavenCommand = util.CommandWrapper{Executable: "mvn", Wrapper: "mvnw"} func (b *Builder) buildJibMavenToDocker(ctx context.Context, out io.Writer, workspace string, artifact *latestV1.JibArtifact, deps []*latestV1.ArtifactDependency, tag string) (string, error) { - args := GenerateMavenBuildArgs("dockerBuild", tag, artifact, b.skipTests, b.pushImages, deps, b.artifacts, b.cfg.GetInsecureRegistries(), color.IsColorable(out)) + args := GenerateMavenBuildArgs("dockerBuild", tag, artifact, b.skipTests, b.pushImages, deps, b.artifacts, b.cfg.GetInsecureRegistries(), output.IsColorable(out)) if err := b.runMavenCommand(ctx, out, workspace, args); err != nil { return "", jibToolErr(err) } @@ -53,7 +53,7 @@ func (b *Builder) buildJibMavenToDocker(ctx context.Context, out io.Writer, work } func (b *Builder) buildJibMavenToRegistry(ctx context.Context, out io.Writer, workspace string, artifact *latestV1.JibArtifact, deps []*latestV1.ArtifactDependency, tag string) (string, error) { - args := GenerateMavenBuildArgs("build", tag, artifact, b.skipTests, b.pushImages, deps, b.artifacts, b.cfg.GetInsecureRegistries(), color.IsColorable(out)) + args := GenerateMavenBuildArgs("build", tag, artifact, b.skipTests, b.pushImages, deps, b.artifacts, b.cfg.GetInsecureRegistries(), output.IsColorable(out)) if err := b.runMavenCommand(ctx, out, workspace, args); err != nil { return "", jibToolErr(err) } diff --git a/pkg/skaffold/build/local/local.go b/pkg/skaffold/build/local/local.go index 89c3919d6ca..363b12a83da 100644 --- a/pkg/skaffold/build/local/local.go +++ b/pkg/skaffold/build/local/local.go @@ -23,8 +23,8 @@ import ( "github.com/sirupsen/logrus" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/build" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/config" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" ) @@ -40,7 +40,7 @@ func (b *Builder) Build(ctx context.Context, out io.Writer, a *latestV1.Artifact func (b *Builder) PreBuild(_ context.Context, out io.Writer) error { if b.localCluster { - color.Default.Fprintf(out, "Found [%s] context, using local docker daemon.\n", b.kubeContext) + output.Default.Fprintf(out, "Found [%s] context, using local docker daemon.\n", b.kubeContext) } return nil } diff --git a/pkg/skaffold/build/result.go b/pkg/skaffold/build/result.go index b7edcf8bb53..cf7f00fde32 100644 --- a/pkg/skaffold/build/result.go +++ b/pkg/skaffold/build/result.go @@ -25,8 +25,8 @@ import ( "github.com/sirupsen/logrus" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/graph" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" ) @@ -62,8 +62,8 @@ func (l *logAggregatorImpl) GetWriter() (io.Writer, func(), error) { r, w := io.Pipe() writer := io.Writer(w) - if color.IsColorable(l.out) { - writer = color.NewWriter(writer) + if output.IsColorable(l.out) { + writer = output.NewWriter(writer) } ch := make(chan string, buffSize) l.messages <- ch diff --git a/pkg/skaffold/build/scheduler.go b/pkg/skaffold/build/scheduler.go index 955fbb9ccdb..a5bf3cb5132 100644 --- a/pkg/skaffold/build/scheduler.go +++ b/pkg/skaffold/build/scheduler.go @@ -23,10 +23,10 @@ import ( "golang.org/x/sync/errgroup" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/event" eventV2 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/event/v2" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/graph" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/tag" ) @@ -120,7 +120,7 @@ func InOrder(ctx context.Context, out io.Writer, tags tag.ImageTags, artifacts [ concurrency = len(artifacts) } if concurrency > 1 { - color.Default.Fprintf(out, "Building %d artifacts in parallel\n", concurrency) + output.Default.Fprintf(out, "Building %d artifacts in parallel\n", concurrency) } s := newScheduler(artifacts, artifactBuilder, concurrency, out, store) ctx, cancel := context.WithCancel(ctx) @@ -129,7 +129,7 @@ func InOrder(ctx context.Context, out io.Writer, tags tag.ImageTags, artifacts [ } func performBuild(ctx context.Context, cw io.Writer, tags tag.ImageTags, artifact *latestV1.Artifact, build ArtifactBuilder) (string, error) { - color.Default.Fprintf(cw, "Building [%s]...\n", artifact.ImageName) + output.Default.Fprintf(cw, "Building [%s]...\n", artifact.ImageName) tag, present := tags[artifact.ImageName] if !present { return "", fmt.Errorf("unable to find tag for image %s", artifact.ImageName) diff --git a/pkg/skaffold/deploy/helm/deploy.go b/pkg/skaffold/deploy/helm/deploy.go index a5b1a25b3d5..3c9fe54ef75 100644 --- a/pkg/skaffold/deploy/helm/deploy.go +++ b/pkg/skaffold/deploy/helm/deploy.go @@ -35,7 +35,6 @@ import ( shell "github.com/kballard/go-shellquote" "github.com/sirupsen/logrus" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/config" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/constants" deployerr "github.com/GoogleContainerTools/skaffold/pkg/skaffold/deploy/error" @@ -44,6 +43,7 @@ import ( "github.com/GoogleContainerTools/skaffold/pkg/skaffold/deploy/types" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/graph" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubernetes/manifest" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/util" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/walk" @@ -359,7 +359,7 @@ func (h *Deployer) deployRelease(ctx context.Context, out io.Writer, releaseName } if err := h.exec(ctx, ioutil.Discard, false, nil, getArgs(releaseName, opts.namespace)...); err != nil { - color.Yellow.Fprintf(out, "Helm release %s not installed. Installing...\n", releaseName) + output.Yellow.Fprintf(out, "Helm release %s not installed. Installing...\n", releaseName) opts.upgrade = false opts.flags = h.Flags.Install diff --git a/pkg/skaffold/deploy/kpt/kpt.go b/pkg/skaffold/deploy/kpt/kpt.go index 3b24d46bd83..0a97c2c2af4 100644 --- a/pkg/skaffold/deploy/kpt/kpt.go +++ b/pkg/skaffold/deploy/kpt/kpt.go @@ -33,13 +33,13 @@ import ( "sigs.k8s.io/kustomize/kyaml/fn/framework" k8syaml "sigs.k8s.io/yaml" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/config" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/deploy/kustomize" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/deploy/types" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/event" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/graph" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubernetes/manifest" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/util" ) @@ -116,11 +116,11 @@ func versionCheck(dir string, stdout io.Writer) error { re := regexp.MustCompile(kustomizeVersionRegexP) match := re.FindStringSubmatch(versionInfo) if len(match) != 3 { - color.Yellow.Fprintf(stdout, "unable to determine kustomize version from %q\n"+ + output.Yellow.Fprintf(stdout, "unable to determine kustomize version from %q\n"+ "You can download the official kustomize (recommended >= %v) from %v\n", string(out), kustomizeMinVersion, kustomizeDownloadLink) } else if !semver.IsValid(match[2]) || semver.Compare(match[2], kustomizeMinVersion) < 0 { - color.Yellow.Fprintf(stdout, "you are using kustomize version %q "+ + output.Yellow.Fprintf(stdout, "you are using kustomize version %q "+ "(recommended >= %v). You can download the official kustomize from %v\n", match[2], kustomizeMinVersion, kustomizeDownloadLink) } diff --git a/pkg/skaffold/deploy/kubectl/kubectl.go b/pkg/skaffold/deploy/kubectl/kubectl.go index be6be11e0e3..a051b2864c4 100644 --- a/pkg/skaffold/deploy/kubectl/kubectl.go +++ b/pkg/skaffold/deploy/kubectl/kubectl.go @@ -28,7 +28,6 @@ import ( "github.com/segmentio/textio" "github.com/sirupsen/logrus" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/config" deployerr "github.com/GoogleContainerTools/skaffold/pkg/skaffold/deploy/error" deployutil "github.com/GoogleContainerTools/skaffold/pkg/skaffold/deploy/util" @@ -36,6 +35,7 @@ import ( "github.com/GoogleContainerTools/skaffold/pkg/skaffold/graph" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubernetes" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubernetes/manifest" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/util" ) @@ -253,8 +253,8 @@ func (k *Deployer) Render(ctx context.Context, out io.Writer, builds []graph.Art func (k *Deployer) renderManifests(ctx context.Context, out io.Writer, builds []graph.Artifact, offline bool) (manifest.ManifestList, error) { if err := k.kubectl.CheckVersion(ctx); err != nil { - color.Default.Fprintln(out, "kubectl client version:", k.kubectl.Version(ctx)) - color.Default.Fprintln(out, err) + output.Default.Fprintln(out, "kubectl client version:", k.kubectl.Version(ctx)) + output.Default.Fprintln(out, err) } debugHelpersRegistry, err := config.GetDebugHelpersRegistry(k.globalConfig) diff --git a/pkg/skaffold/deploy/kustomize/kustomize.go b/pkg/skaffold/deploy/kustomize/kustomize.go index a741b2f5880..63b72e948cc 100644 --- a/pkg/skaffold/deploy/kustomize/kustomize.go +++ b/pkg/skaffold/deploy/kustomize/kustomize.go @@ -27,13 +27,13 @@ import ( "github.com/segmentio/textio" yamlv3 "gopkg.in/yaml.v3" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/config" deployerr "github.com/GoogleContainerTools/skaffold/pkg/skaffold/deploy/error" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/deploy/kubectl" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/event" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/graph" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubernetes/manifest" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/util" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/warnings" @@ -171,8 +171,8 @@ func (k *Deployer) Deploy(ctx context.Context, out io.Writer, builds []graph.Art func (k *Deployer) renderManifests(ctx context.Context, out io.Writer, builds []graph.Artifact) (manifest.ManifestList, error) { if err := k.kubectl.CheckVersion(ctx); err != nil { - color.Default.Fprintln(out, "kubectl client version:", k.kubectl.Version(ctx)) - color.Default.Fprintln(out, err) + output.Default.Fprintln(out, "kubectl client version:", k.kubectl.Version(ctx)) + output.Default.Fprintln(out, err) } debugHelpersRegistry, err := config.GetDebugHelpersRegistry(k.globalConfig) diff --git a/pkg/skaffold/deploy/util/logfile.go b/pkg/skaffold/deploy/util/logfile.go index 00c11124459..28eeee4fccc 100644 --- a/pkg/skaffold/deploy/util/logfile.go +++ b/pkg/skaffold/deploy/util/logfile.go @@ -20,8 +20,8 @@ import ( "fmt" "io" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/logfile" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" ) // TimeFormat is used to name log files generated by deploy step @@ -43,7 +43,7 @@ func WithLogFile(filename string, out io.Writer, muted Muted) (io.Writer, func() return out, func() {}, fmt.Errorf("unable to create log file for deploy step: %w", err) } - color.Default.Fprintln(out, "Starting deploy...") + output.Default.Fprintln(out, "Starting deploy...") fmt.Fprintln(out, "- writing logs to", file.Name()) // After the deploy finishes, close the log file. @@ -63,7 +63,7 @@ func WithStatusCheckLogFile(filename string, out io.Writer, muted Muted) (io.Wri return out, func() {}, fmt.Errorf("unable to create log file for deploy step: %w", err) } - color.Default.Fprintln(out, "Waiting for deployments to stabilize...") + output.Default.Fprintln(out, "Waiting for deployments to stabilize...") fmt.Fprintln(out, "- writing logs to", file.Name()) // After the status-check finishes, close the log file. diff --git a/pkg/skaffold/diagnose/diagnose.go b/pkg/skaffold/diagnose/diagnose.go index 155302ff320..0aacbbc21fa 100644 --- a/pkg/skaffold/diagnose/diagnose.go +++ b/pkg/skaffold/diagnose/diagnose.go @@ -24,10 +24,10 @@ import ( "time" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/build" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/docker" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/filemon" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/graph" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/sync" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/util" @@ -43,7 +43,7 @@ type Config interface { func CheckArtifacts(ctx context.Context, cfg Config, out io.Writer) error { for _, p := range cfg.GetPipelines() { for _, artifact := range p.Build.Artifacts { - color.Default.Fprintf(out, "\n%s: %s\n", typeOfArtifact(artifact), artifact.ImageName) + output.Default.Fprintf(out, "\n%s: %s\n", typeOfArtifact(artifact), artifact.ImageName) if artifact.DockerArtifact != nil { size, err := sizeOfDockerContext(ctx, artifact, cfg) diff --git a/pkg/skaffold/event/event_test.go b/pkg/skaffold/event/event_test.go index c26161a49b1..7ee55bcc4e1 100644 --- a/pkg/skaffold/event/event_test.go +++ b/pkg/skaffold/event/event_test.go @@ -30,8 +30,8 @@ import ( "github.com/golang/protobuf/jsonpb" "github.com/google/go-cmp/cmp/cmpopts" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/constants" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" schemautil "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/util" "github.com/GoogleContainerTools/skaffold/proto/v1" @@ -139,7 +139,7 @@ func TestTestFailed(t *testing.T) { TestFailed("img", errors.New("BUG")) wait(t, func() bool { tState := handler.getState().TestState - color.Yellow.Fprintf(os.Stdout, "Priya_1 tState is: %s): ", tState) + output.Yellow.Fprintf(os.Stdout, "Priya_1 tState is: %s): ", tState) return tState.Status == Failed && tState.StatusCode == proto.StatusCode_TEST_UNKNOWN }) } diff --git a/pkg/skaffold/generate_pipeline/profile.go b/pkg/skaffold/generate_pipeline/profile.go index 461f3a53889..e73bedb7158 100644 --- a/pkg/skaffold/generate_pipeline/profile.go +++ b/pkg/skaffold/generate_pipeline/profile.go @@ -27,7 +27,7 @@ import ( yamlv2 "gopkg.in/yaml.v2" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" ) @@ -35,10 +35,10 @@ func CreateSkaffoldProfile(out io.Writer, namespace string, configFile *ConfigFi reader := bufio.NewReader(os.Stdin) // Check for existing oncluster profile, if none exists then prompt to create one - color.Default.Fprintf(out, "Checking for oncluster skaffold profile in %s...\n", configFile.Path) + output.Default.Fprintf(out, "Checking for oncluster skaffold profile in %s...\n", configFile.Path) for _, profile := range configFile.Config.Profiles { if profile.Name == "oncluster" { - color.Default.Fprintln(out, "profile \"oncluster\" found") + output.Default.Fprintln(out, "profile \"oncluster\" found") configFile.Profile = &profile return nil } @@ -46,7 +46,7 @@ func CreateSkaffoldProfile(out io.Writer, namespace string, configFile *ConfigFi confirmLoop: for { - color.Default.Fprintf(out, "No profile \"oncluster\" found. Create one? [y/n]: ") + output.Default.Fprintf(out, "No profile \"oncluster\" found. Create one? [y/n]: ") response, err := reader.ReadString('\n') if err != nil { return fmt.Errorf("reading user confirmation: %w", err) @@ -61,7 +61,7 @@ confirmLoop: } } - color.Default.Fprintln(out, "Creating skaffold profile \"oncluster\"...") + output.Default.Fprintln(out, "Creating skaffold profile \"oncluster\"...") profile, err := generateProfile(out, namespace, configFile.Config) if err != nil { return fmt.Errorf("generating profile \"oncluster\": %w", err) @@ -123,7 +123,7 @@ func generateProfile(out io.Writer, namespace string, config *latestV1.SkaffoldC for _, artifact := range profile.Build.Artifacts { artifact.ImageName = fmt.Sprintf("%s-pipeline", artifact.ImageName) if artifact.DockerArtifact != nil { - color.Default.Fprintf(out, "Cannot use Docker to build %s on cluster. Adding config for building with Kaniko.\n", artifact.ImageName) + output.Default.Fprintf(out, "Cannot use Docker to build %s on cluster. Adding config for building with Kaniko.\n", artifact.ImageName) artifact.DockerArtifact = nil artifact.KanikoArtifact = &latestV1.KanikoArtifact{} addKaniko = true diff --git a/pkg/skaffold/instrumentation/export.go b/pkg/skaffold/instrumentation/export.go index 507d550d679..50257d527ae 100644 --- a/pkg/skaffold/instrumentation/export.go +++ b/pkg/skaffold/instrumentation/export.go @@ -45,7 +45,7 @@ import ( ) func ExportMetrics(exitCode int) error { - if !shouldExportMetrics || meter.Command == "" { + if !ShouldExportMetrics || meter.Command == "" { return nil } home, err := homedir.Dir() diff --git a/pkg/skaffold/instrumentation/meter.go b/pkg/skaffold/instrumentation/meter.go index ee5ccf90b11..946de67f9ca 100644 --- a/pkg/skaffold/instrumentation/meter.go +++ b/pkg/skaffold/instrumentation/meter.go @@ -50,7 +50,7 @@ var ( doesDeploy = util.NewStringSet() initExporter = initCloudMonitoringExporterMetrics isOnline bool - shouldExportMetrics bool + ShouldExportMetrics bool ) func init() { @@ -64,7 +64,7 @@ func init() { // More info can be found here: https://www.chromium.org/chromium-os/chromiumos-design-docs/network-portal-detection func SetOnlineStatus() { go func() { - if shouldExportMetrics { + if ShouldExportMetrics { r, err := http.Get("http://clients3.google.com/generate_204") if err == nil { r.Body.Close() diff --git a/pkg/skaffold/instrumentation/prompt.go b/pkg/skaffold/instrumentation/prompt/prompt.go similarity index 83% rename from pkg/skaffold/instrumentation/prompt.go rename to pkg/skaffold/instrumentation/prompt/prompt.go index 8fc768f7308..7b9cc83b633 100644 --- a/pkg/skaffold/instrumentation/prompt.go +++ b/pkg/skaffold/instrumentation/prompt/prompt.go @@ -14,13 +14,14 @@ See the License for the specific language governing permissions and limitations under the License. */ -package instrumentation +package prompt import ( "io" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/config" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/instrumentation" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" ) const Prompt = `To help improve the quality of this product, we collect anonymized usage data for details on what is tracked and how we use this data visit . This data is handled in accordance with our privacy policy @@ -31,10 +32,10 @@ You may choose to opt out of this collection by running the following command: var ( // for testing - isStdOut = color.IsStdout + isStdOut = output.IsStdout updateConfig = config.UpdateGlobalCollectMetrics getConfig = config.GetConfigForCurrentKubectx - setStatus = SetOnlineStatus + setStatus = instrumentation.SetOnlineStatus ) // ShouldDisplayMetricsPrompt returns true if metrics is not enabled. @@ -46,14 +47,14 @@ func ShouldDisplayMetricsPrompt(configfile string) bool { if cfg == nil || cfg.CollectMetrics == nil { return true } - shouldExportMetrics = *cfg.CollectMetrics + instrumentation.ShouldExportMetrics = *cfg.CollectMetrics setStatus() return false } func DisplayMetricsPrompt(configFile string, out io.Writer) error { if isStdOut(out) { - color.Green.Fprintf(out, Prompt) + output.Green.Fprintf(out, Prompt) return updateConfig(configFile, true) } return nil diff --git a/pkg/skaffold/instrumentation/prompt_test.go b/pkg/skaffold/instrumentation/prompt/prompt_test.go similarity index 99% rename from pkg/skaffold/instrumentation/prompt_test.go rename to pkg/skaffold/instrumentation/prompt/prompt_test.go index 5a30646483d..c44887f0570 100644 --- a/pkg/skaffold/instrumentation/prompt_test.go +++ b/pkg/skaffold/instrumentation/prompt/prompt_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package instrumentation +package prompt import ( "bytes" diff --git a/pkg/skaffold/kubernetes/colorpicker.go b/pkg/skaffold/kubernetes/colorpicker.go index 8c7a92070ab..8a3d7f46067 100644 --- a/pkg/skaffold/kubernetes/colorpicker.go +++ b/pkg/skaffold/kubernetes/colorpicker.go @@ -19,33 +19,33 @@ package kubernetes import ( v1 "k8s.io/api/core/v1" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/tag" ) -var colorCodes = []color.Color{ - color.LightRed, - color.LightGreen, - color.LightYellow, - color.LightBlue, - color.LightPurple, - color.Red, - color.Green, - color.Yellow, - color.Blue, - color.Purple, - color.Cyan, +var colorCodes = []output.Color{ + output.LightRed, + output.LightGreen, + output.LightYellow, + output.LightBlue, + output.LightPurple, + output.Red, + output.Green, + output.Yellow, + output.Blue, + output.Purple, + output.Cyan, } // ColorPicker is used to associate colors for with pods so that the container logs // can be output to the terminal with a consistent color being used to identify logs // from each pod. type ColorPicker interface { - Pick(pod *v1.Pod) color.Color + Pick(pod *v1.Pod) output.Color } type colorPicker struct { - imageColors map[string]color.Color + imageColors map[string]output.Color } // NewColorPicker creates a new ColorPicker. For each artifact, a color will be selected @@ -53,7 +53,7 @@ type colorPicker struct { // again. The formatter for the associated color will then be returned by `Pick` each // time it is called for the artifact and can be used to write to out in that color. func NewColorPicker(imageNames []string) ColorPicker { - imageColors := make(map[string]color.Color) + imageColors := make(map[string]output.Color) for i, imageName := range imageNames { imageColors[tag.StripTag(imageName)] = colorCodes[i%len(colorCodes)] @@ -67,7 +67,7 @@ func NewColorPicker(imageNames []string) ColorPicker { // Pick will return the color that was associated with pod when `NewColorPicker` was called. // If no color was associated with the pod, the none color will be returned, which will // write with no formatting. -func (p *colorPicker) Pick(pod *v1.Pod) color.Color { +func (p *colorPicker) Pick(pod *v1.Pod) output.Color { for _, container := range pod.Spec.Containers { if c, present := p.imageColors[tag.StripTag(container.Image)]; present { return c @@ -75,5 +75,5 @@ func (p *colorPicker) Pick(pod *v1.Pod) color.Color { } // If no mapping is found, don't add any color formatting - return color.None + return output.None } diff --git a/pkg/skaffold/kubernetes/colorpicker_test.go b/pkg/skaffold/kubernetes/colorpicker_test.go index f40600ac802..9b56c2c0b00 100644 --- a/pkg/skaffold/kubernetes/colorpicker_test.go +++ b/pkg/skaffold/kubernetes/colorpicker_test.go @@ -21,7 +21,7 @@ import ( v1 "k8s.io/api/core/v1" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" "github.com/GoogleContainerTools/skaffold/testutil" ) @@ -29,12 +29,12 @@ func TestColorPicker(t *testing.T) { tests := []struct { description string pod *v1.Pod - expectedColor color.Color + expectedColor output.Color }{ { description: "not found", pod: &v1.Pod{}, - expectedColor: color.None, + expectedColor: output.None, }, { description: "found", diff --git a/pkg/skaffold/kubernetes/logger/log.go b/pkg/skaffold/kubernetes/logger/log.go index 920b3604d01..6abe3b66604 100644 --- a/pkg/skaffold/kubernetes/logger/log.go +++ b/pkg/skaffold/kubernetes/logger/log.go @@ -28,10 +28,10 @@ import ( "github.com/sirupsen/logrus" v1 "k8s.io/api/core/v1" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" eventV2 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/event/v2" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubectl" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubernetes" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/tag" ) @@ -108,7 +108,7 @@ func (a *LogAggregator) Start(ctx context.Context, namespaces []string) error { for _, c := range append(pod.Status.InitContainerStatuses, pod.Status.ContainerStatuses...) { if c.ContainerID == "" { if c.State.Waiting != nil && c.State.Waiting.Message != "" { - color.Red.Fprintln(a.output, c.State.Waiting.Message) + output.Red.Fprintln(a.output, c.State.Waiting.Message) } continue } @@ -171,7 +171,7 @@ func (a *LogAggregator) streamContainerLogs(ctx context.Context, pod *v1.Pod, co } } -func (a *LogAggregator) printLogLine(headerColor color.Color, prefix, text string) { +func (a *LogAggregator) printLogLine(headerColor output.Color, prefix, text string) { if !a.IsMuted() { a.outputLock.Lock() @@ -225,7 +225,7 @@ func podAndContainerPrefix(pod *v1.Pod, container v1.ContainerStatus) string { return fmt.Sprintf("[%s %s]", pod.Name, container.Name) } -func (a *LogAggregator) streamRequest(ctx context.Context, headerColor color.Color, prefix, podName, containerName string, rc io.Reader) error { +func (a *LogAggregator) streamRequest(ctx context.Context, headerColor output.Color, prefix, podName, containerName string, rc io.Reader) error { r := bufio.NewReader(rc) for { select { diff --git a/pkg/skaffold/kubernetes/logger/log_test.go b/pkg/skaffold/kubernetes/logger/log_test.go index a0dfca6e1f3..65e458f3628 100644 --- a/pkg/skaffold/kubernetes/logger/log_test.go +++ b/pkg/skaffold/kubernetes/logger/log_test.go @@ -27,8 +27,8 @@ import ( v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubernetes" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" "github.com/GoogleContainerTools/skaffold/testutil" ) @@ -111,7 +111,7 @@ func TestPrintLogLine(t *testing.T) { go func() { for i := 0; i < 100; i++ { - logger.printLogLine(color.Default, "PREFIX", "TEXT\n") + logger.printLogLine(output.Default, "PREFIX", "TEXT\n") } wg.Done() }() diff --git a/pkg/skaffold/kubernetes/portforward/entry_manager.go b/pkg/skaffold/kubernetes/portforward/entry_manager.go index 648fbf32cbc..0524c84068b 100644 --- a/pkg/skaffold/kubernetes/portforward/entry_manager.go +++ b/pkg/skaffold/kubernetes/portforward/entry_manager.go @@ -22,8 +22,8 @@ import ( "io" "sync" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/event" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/util" ) @@ -111,7 +111,7 @@ func (b *EntryManager) forwardPortForwardEntry(ctx context.Context, entry *portF b.forwardedResources.Store(entry.key(), entry) if err := b.entryForwarder.Forward(ctx, entry); err == nil { - color.Green.Fprintln( + output.Green.Fprintln( b.output, fmt.Sprintf("Port forwarding %s/%s in namespace %s, remote port %s -> %s:%d", entry.resource.Type, @@ -121,7 +121,7 @@ func (b *EntryManager) forwardPortForwardEntry(ctx context.Context, entry *portF entry.resource.Address, entry.localPort)) } else { - color.Red.Fprintln(b.output, err) + output.Red.Fprintln(b.output, err) } portForwardEvent(entry) } diff --git a/pkg/skaffold/kubernetes/portforward/kubectl_forwarder.go b/pkg/skaffold/kubernetes/portforward/kubectl_forwarder.go index 1607e85c5b7..c3c69f77133 100644 --- a/pkg/skaffold/kubernetes/portforward/kubectl_forwarder.go +++ b/pkg/skaffold/kubernetes/portforward/kubectl_forwarder.go @@ -33,9 +33,9 @@ import ( "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/util/intstr" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubectl" kubernetesclient "github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubernetes/client" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" schemautil "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/util" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/util" ) @@ -94,14 +94,14 @@ func (k *KubectlForwarder) forward(parentCtx context.Context, pfe *portForwardEn if !isPortFree(util.Loopback, pfe.localPort) { // Assuming that Skaffold brokered ports don't overlap, this has to be an external process that started // since the dev loop kicked off. We are notifying the user in the hope that they can fix it - color.Red.Fprintf(k.out, "failed to port forward %v, port %d is taken, retrying...\n", pfe, pfe.localPort) + output.Red.Fprintf(k.out, "failed to port forward %v, port %d is taken, retrying...\n", pfe, pfe.localPort) notifiedUser = true time.Sleep(waitPortNotFree) continue } if notifiedUser { - color.Green.Fprintf(k.out, "port forwarding %v recovered on port %d\n", pfe, pfe.localPort) + output.Green.Fprintf(k.out, "port forwarding %v recovered on port %d\n", pfe, pfe.localPort) notifiedUser = false } diff --git a/pkg/skaffold/kubernetes/portforward/pod_forwarder.go b/pkg/skaffold/kubernetes/portforward/pod_forwarder.go index c57abef2fdc..82802fc6bde 100644 --- a/pkg/skaffold/kubernetes/portforward/pod_forwarder.go +++ b/pkg/skaffold/kubernetes/portforward/pod_forwarder.go @@ -25,9 +25,9 @@ import ( v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/watch" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/constants" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubernetes" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" schemautil "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/util" ) @@ -118,7 +118,7 @@ func (p *WatchingPodForwarder) portForwardPod(ctx context.Context, pod *v1.Pod) return fmt.Errorf("getting pod forwarding entry: %w", err) } if entry.resource.Port.IntVal != entry.localPort { - color.Yellow.Fprintf(p.entryManager.output, "Forwarding container %s/%s to local port %d.\n", pod.Name, c.Name, entry.localPort) + output.Yellow.Fprintf(p.entryManager.output, "Forwarding container %s/%s to local port %d.\n", pod.Name, c.Name, entry.localPort) } if prevEntry, ok := p.entryManager.forwardedResources.Load(entry.key()); ok { // Check if this is a new generation of pod diff --git a/pkg/skaffold/color/formatter.go b/pkg/skaffold/output/color.go similarity index 99% rename from pkg/skaffold/color/formatter.go rename to pkg/skaffold/output/color.go index 414253321dd..7bccfd03345 100644 --- a/pkg/skaffold/color/formatter.go +++ b/pkg/skaffold/output/color.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package color +package output import ( "fmt" diff --git a/pkg/skaffold/color/formatter_test.go b/pkg/skaffold/output/color_test.go similarity index 99% rename from pkg/skaffold/color/formatter_test.go rename to pkg/skaffold/output/color_test.go index 17eb6b71c12..6a5e3fc9634 100644 --- a/pkg/skaffold/color/formatter_test.go +++ b/pkg/skaffold/output/color_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package color +package output import ( "bytes" diff --git a/pkg/skaffold/runner/build_deploy.go b/pkg/skaffold/runner/build_deploy.go index 22392e62a2c..ce6f13a74ea 100644 --- a/pkg/skaffold/runner/build_deploy.go +++ b/pkg/skaffold/runner/build_deploy.go @@ -27,12 +27,12 @@ import ( "github.com/GoogleContainerTools/skaffold/pkg/skaffold/build" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/build/cache" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/constants" deployutil "github.com/GoogleContainerTools/skaffold/pkg/skaffold/deploy/util" eventV2 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/event/v2" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/graph" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubernetes" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/runner/runcontext" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/tag" @@ -91,13 +91,13 @@ func (r *Builder) Build(ctx context.Context, out io.Writer, artifacts []*latestV // In dry-run mode or with --digest-source set to 'remote' or 'tag' in render, we don't build anything, just return the tag for each artifact. switch { case r.runCtx.DryRun(): - color.Yellow.Fprintln(out, "Skipping build phase since --dry-run=true") + output.Yellow.Fprintln(out, "Skipping build phase since --dry-run=true") return artifactsWithTags(tags, artifacts), nil case r.runCtx.RenderOnly() && r.runCtx.DigestSource() == RemoteDigestSource: - color.Yellow.Fprintln(out, "Skipping build phase since --digest-source=remote") + output.Yellow.Fprintln(out, "Skipping build phase since --digest-source=remote") return artifactsWithTags(tags, artifacts), nil case r.runCtx.RenderOnly() && r.runCtx.DigestSource() == TagDigestSource: - color.Yellow.Fprintln(out, "Skipping build phase since --digest-source=tag") + output.Yellow.Fprintln(out, "Skipping build phase since --digest-source=tag") return artifactsWithTags(tags, artifacts), nil default: } @@ -168,7 +168,7 @@ func (r *Builder) ApplyDefaultRepo(tag string) (string, error) { // imageTags generates tags for a list of artifacts func (r *Builder) imageTags(ctx context.Context, out io.Writer, artifacts []*latestV1.Artifact) (tag.ImageTags, error) { start := time.Now() - color.Default.Fprintln(out, "Generating tags...") + output.Default.Fprintln(out, "Generating tags...") tagErrs := make([]chan tagErr, len(artifacts)) @@ -187,7 +187,7 @@ func (r *Builder) imageTags(ctx context.Context, out io.Writer, artifacts []*lat for i, artifact := range artifacts { imageName := artifact.ImageName - color.Default.Fprintf(out, " - %s -> ", imageName) + output.Default.Fprintf(out, " - %s -> ", imageName) select { case <-ctx.Done(): @@ -218,7 +218,7 @@ func (r *Builder) imageTags(ctx context.Context, out io.Writer, artifacts []*lat } if showWarning { - color.Yellow.Fprintln(out, "Some taggers failed. Rerun with -vdebug for errors.") + output.Yellow.Fprintln(out, "Some taggers failed. Rerun with -vdebug for errors.") } logrus.Infoln("Tags generated in", util.ShowHumanizeTime(time.Since(start))) diff --git a/pkg/skaffold/runner/timings.go b/pkg/skaffold/runner/timings.go index a7473139701..d0db7cae340 100644 --- a/pkg/skaffold/runner/timings.go +++ b/pkg/skaffold/runner/timings.go @@ -24,9 +24,9 @@ import ( "github.com/sirupsen/logrus" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/build" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/deploy" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/graph" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/tag" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/test" @@ -57,7 +57,7 @@ func (w withTimings) Build(ctx context.Context, out io.Writer, tags tag.ImageTag return nil, nil } start := time.Now() - color.Default.Fprintln(out, "Starting build...") + output.Default.Fprintln(out, "Starting build...") bRes, err := w.Builder.Build(ctx, out, tags, artifacts) if err != nil { @@ -69,7 +69,7 @@ func (w withTimings) Build(ctx context.Context, out io.Writer, tags tag.ImageTag func (w withTimings) Test(ctx context.Context, out io.Writer, builds []graph.Artifact) error { start := time.Now() - color.Default.Fprintln(out, "Starting test...") + output.Default.Fprintln(out, "Starting test...") err := w.Tester.Test(ctx, out, builds) if err != nil { @@ -81,7 +81,7 @@ func (w withTimings) Test(ctx context.Context, out io.Writer, builds []graph.Art func (w withTimings) Deploy(ctx context.Context, out io.Writer, builds []graph.Artifact) ([]string, error) { start := time.Now() - color.Default.Fprintln(out, "Starting deploy...") + output.Default.Fprintln(out, "Starting deploy...") ns, err := w.Deployer.Deploy(ctx, out, builds) if err != nil { @@ -93,7 +93,7 @@ func (w withTimings) Deploy(ctx context.Context, out io.Writer, builds []graph.A func (w withTimings) Cleanup(ctx context.Context, out io.Writer) error { start := time.Now() - color.Default.Fprintln(out, "Cleaning up...") + output.Default.Fprintln(out, "Cleaning up...") err := w.Deployer.Cleanup(ctx, out) if err != nil { @@ -105,7 +105,7 @@ func (w withTimings) Cleanup(ctx context.Context, out io.Writer) error { func (w withTimings) Prune(ctx context.Context, out io.Writer) error { start := time.Now() - color.Default.Fprintln(out, "Pruning images...") + output.Default.Fprintln(out, "Pruning images...") err := w.Builder.Prune(ctx, out) if err != nil { diff --git a/pkg/skaffold/runner/v1/deploy.go b/pkg/skaffold/runner/v1/deploy.go index 86447b6f6a8..0e8b41e5367 100644 --- a/pkg/skaffold/runner/v1/deploy.go +++ b/pkg/skaffold/runner/v1/deploy.go @@ -25,7 +25,6 @@ import ( "github.com/sirupsen/logrus" "k8s.io/client-go/tools/clientcmd/api" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/config" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/constants" deployutil "github.com/GoogleContainerTools/skaffold/pkg/skaffold/deploy/util" @@ -34,6 +33,7 @@ import ( "github.com/GoogleContainerTools/skaffold/pkg/skaffold/graph" kubernetesclient "github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubernetes/client" kubectx "github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubernetes/context" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/runner" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/util" ) @@ -70,7 +70,7 @@ func (r *SkaffoldRunner) DeployAndLog(ctx context.Context, out io.Writer, artifa } if r.runCtx.Tail() || r.runCtx.PortForward() { - color.Yellow.Fprintln(out, "Press Ctrl+C to exit") + output.Yellow.Fprintln(out, "Press Ctrl+C to exit") <-ctx.Done() } @@ -83,10 +83,10 @@ func (r *SkaffoldRunner) Deploy(ctx context.Context, out io.Writer, artifacts [] return r.Render(ctx, out, artifacts, false, r.runCtx.RenderOutput()) } - color.Default.Fprintln(out, "Tags used in deployment:") + output.Default.Fprintln(out, "Tags used in deployment:") for _, artifact := range artifacts { - color.Default.Fprintf(out, " - %s -> ", artifact.ImageName) + output.Default.Fprintf(out, " - %s -> ", artifact.ImageName) fmt.Fprintln(out, artifact.Tag) } @@ -212,7 +212,7 @@ func (r *SkaffoldRunner) performStatusCheck(ctx context.Context, out io.Writer) eventV2.TaskInProgress(constants.StatusCheck) start := time.Now() - color.Default.Fprintln(out, "Waiting for deployments to stabilize...") + output.Default.Fprintln(out, "Waiting for deployments to stabilize...") s := runner.NewStatusCheck(r.runCtx, r.labeller) if err := s.Check(ctx, out); err != nil { @@ -220,7 +220,7 @@ func (r *SkaffoldRunner) performStatusCheck(ctx context.Context, out io.Writer) return err } - color.Default.Fprintln(out, "Deployments stabilized in", util.ShowHumanizeTime(time.Since(start))) + output.Default.Fprintln(out, "Deployments stabilized in", util.ShowHumanizeTime(time.Since(start))) eventV2.TaskSucceeded(constants.StatusCheck) return nil } diff --git a/pkg/skaffold/runner/v1/dev.go b/pkg/skaffold/runner/v1/dev.go index 3a498791815..68e4a5187e0 100644 --- a/pkg/skaffold/runner/v1/dev.go +++ b/pkg/skaffold/runner/v1/dev.go @@ -24,7 +24,6 @@ import ( "github.com/sirupsen/logrus" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/constants" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/event" eventV2 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/event/v2" @@ -33,6 +32,7 @@ import ( "github.com/GoogleContainerTools/skaffold/pkg/skaffold/instrumentation" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubernetes/logger" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubernetes/portforward" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/runner" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/sync" @@ -83,7 +83,7 @@ func (r *SkaffoldRunner) doDev(ctx context.Context, out io.Writer, logger *logge meterUpdated = true for _, s := range r.changeSet.NeedsResync() { fileCount := len(s.Copy) + len(s.Delete) - color.Default.Fprintf(out, "Syncing %d files for %s\n", fileCount, s.Image) + output.Default.Fprintf(out, "Syncing %d files for %s\n", fileCount, s.Image) fileSyncInProgress(fileCount, s.Image) if err := r.syncer.Sync(ctx, s); err != nil { @@ -182,7 +182,7 @@ func (r *SkaffoldRunner) Dev(ctx context.Context, out io.Writer, artifacts []*la g := getTransposeGraph(artifacts) // Watch artifacts start := time.Now() - color.Default.Fprintln(out, "Listing files to watch...") + output.Default.Fprintln(out, "Listing files to watch...") for i := range artifacts { artifact := artifacts[i] @@ -190,7 +190,7 @@ func (r *SkaffoldRunner) Dev(ctx context.Context, out io.Writer, artifacts []*la continue } - color.Default.Fprintf(out, " - %s\n", artifact.ImageName) + output.Default.Fprintf(out, " - %s\n", artifact.ImageName) select { case <-ctx.Done(): @@ -307,7 +307,7 @@ func (r *SkaffoldRunner) Dev(ctx context.Context, out io.Writer, artifacts []*la return fmt.Errorf("starting logger: %w", err) } - color.Yellow.Fprintln(out, "Press Ctrl+C to exit") + output.Yellow.Fprintln(out, "Press Ctrl+C to exit") event.DevLoopComplete(r.devIteration) eventV2.TaskSucceeded(constants.DevLoop) diff --git a/pkg/skaffold/runner/v1/generate_pipeline.go b/pkg/skaffold/runner/v1/generate_pipeline.go index cb4c5b84d92..9137ac0a116 100644 --- a/pkg/skaffold/runner/v1/generate_pipeline.go +++ b/pkg/skaffold/runner/v1/generate_pipeline.go @@ -22,8 +22,8 @@ import ( "io" "io/ioutil" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" pipeline "github.com/GoogleContainerTools/skaffold/pkg/skaffold/generate_pipeline" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/defaults" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" @@ -49,14 +49,14 @@ func (r *SkaffoldRunner) GeneratePipeline(ctx context.Context, out io.Writer, co configFiles = append(baseConfig, configFiles...) // Will run the profile setup multiple times and require user input for each specified config - color.Default.Fprintln(out, "Running profile setup...") + output.Default.Fprintln(out, "Running profile setup...") for _, configFile := range configFiles { if err := pipeline.CreateSkaffoldProfile(out, r.runCtx.GetKubeNamespace(), configFile); err != nil { return fmt.Errorf("setting up profile: %w", err) } } - color.Default.Fprintln(out, "Generating Pipeline...") + output.Default.Fprintln(out, "Generating Pipeline...") pipelineYaml, err := pipeline.Yaml(out, r.runCtx.GetKubeNamespace(), configFiles) if err != nil { return fmt.Errorf("generating pipeline yaml contents: %w", err) diff --git a/pkg/skaffold/runner/v1/load_images.go b/pkg/skaffold/runner/v1/load_images.go index 88ec046ab20..2f04f47254d 100644 --- a/pkg/skaffold/runner/v1/load_images.go +++ b/pkg/skaffold/runner/v1/load_images.go @@ -26,15 +26,15 @@ import ( "github.com/docker/distribution/reference" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/graph" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubectl" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/util" ) // loadImagesInKindNodes loads artifact images into every node of a kind cluster. func (r *SkaffoldRunner) loadImagesInKindNodes(ctx context.Context, out io.Writer, kindCluster string, artifacts []graph.Artifact) error { - color.Default.Fprintln(out, "Loading images into kind cluster nodes...") + output.Default.Fprintln(out, "Loading images into kind cluster nodes...") return r.loadImages(ctx, out, artifacts, func(tag string) *exec.Cmd { return exec.CommandContext(ctx, "kind", "load", "docker-image", "--name", kindCluster, tag) }) @@ -42,7 +42,7 @@ func (r *SkaffoldRunner) loadImagesInKindNodes(ctx context.Context, out io.Write // loadImagesInK3dNodes loads artifact images into every node of a k3s cluster. func (r *SkaffoldRunner) loadImagesInK3dNodes(ctx context.Context, out io.Writer, k3dCluster string, artifacts []graph.Artifact) error { - color.Default.Fprintln(out, "Loading images into k3d cluster nodes...") + output.Default.Fprintln(out, "Loading images into k3d cluster nodes...") return r.loadImages(ctx, out, artifacts, func(tag string) *exec.Cmd { return exec.CommandContext(ctx, "k3d", "image", "import", "--cluster", k3dCluster, tag) }) @@ -59,7 +59,7 @@ func (r *SkaffoldRunner) loadImages(ctx context.Context, out io.Writer, artifact continue } - color.Default.Fprintf(out, " - %s -> ", artifact.Tag) + output.Default.Fprintf(out, " - %s -> ", artifact.Tag) // Only load images that are unknown to the node if knownImages == nil { @@ -73,20 +73,20 @@ func (r *SkaffoldRunner) loadImages(ctx context.Context, out io.Writer, artifact return err } if util.StrSliceContains(knownImages, normalizedImageRef.String()) { - color.Green.Fprintln(out, "Found") + output.Green.Fprintln(out, "Found") continue } cmd := createCmd(artifact.Tag) - if output, err := util.RunCmdOut(cmd); err != nil { - color.Red.Fprintln(out, "Failed") - return fmt.Errorf("unable to load image %q into cluster: %w, %s", artifact.Tag, err, output) + if cmdOut, err := util.RunCmdOut(cmd); err != nil { + output.Red.Fprintln(out, "Failed") + return fmt.Errorf("unable to load image %q into cluster: %w, %s", artifact.Tag, err, cmdOut) } - color.Green.Fprintln(out, "Loaded") + output.Green.Fprintln(out, "Loaded") } - color.Default.Fprintln(out, "Images loaded in", util.ShowHumanizeTime(time.Since(start))) + output.Default.Fprintln(out, "Images loaded in", util.ShowHumanizeTime(time.Since(start))) return nil } diff --git a/pkg/skaffold/runner/v1/render.go b/pkg/skaffold/runner/v1/render.go index 4d9e61b8005..2f309890e3d 100644 --- a/pkg/skaffold/runner/v1/render.go +++ b/pkg/skaffold/runner/v1/render.go @@ -22,9 +22,9 @@ import ( "io" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/build" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/docker" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/graph" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/runner" ) @@ -40,7 +40,7 @@ func (r *SkaffoldRunner) Render(ctx context.Context, out io.Writer, builds []gra } } if r.runCtx.DigestSource() == runner.NoneDigestSource { - color.Default.Fprintln(out, "--digest-source set to 'none', tags listed in Kubernetes manifests will be used for render") + output.Default.Fprintln(out, "--digest-source set to 'none', tags listed in Kubernetes manifests will be used for render") } return r.deployer.Render(ctx, out, builds, offline, filepath) } diff --git a/pkg/skaffold/survey/survey.go b/pkg/skaffold/survey/survey.go index def4c9c558a..dab7dbdca1d 100644 --- a/pkg/skaffold/survey/survey.go +++ b/pkg/skaffold/survey/survey.go @@ -24,8 +24,8 @@ import ( "github.com/pkg/browser" "github.com/sirupsen/logrus" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/config" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" ) const ( @@ -46,7 +46,7 @@ Tip: To permanently disable the survey prompt, run: skaffold config set --survey --global disable-prompt true`, URL) // for testing - isStdOut = color.IsStdout + isStdOut = output.IsStdout open = browser.OpenURL updateConfig = config.UpdateGlobalSurveyPrompted ) @@ -63,7 +63,7 @@ func New(configFile string) *Runner { func (s *Runner) DisplaySurveyPrompt(out io.Writer) error { if isStdOut(out) { - color.Green.Fprintf(out, Prompt) + output.Green.Fprintf(out, Prompt) } return updateConfig(s.configFile) } diff --git a/pkg/skaffold/test/custom/custom.go b/pkg/skaffold/test/custom/custom.go index 8c6c822c776..49eed587d52 100644 --- a/pkg/skaffold/test/custom/custom.go +++ b/pkg/skaffold/test/custom/custom.go @@ -27,9 +27,9 @@ import ( "time" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/build/list" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/docker" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/event" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/util" ) @@ -79,9 +79,9 @@ func (ct *Runner) runCustomTest(ctx context.Context, out io.Writer, imageTag str } if test.TimeoutSeconds <= 0 { - color.Default.Fprintf(out, "Running custom test command: %q\n", command) + output.Default.Fprintf(out, "Running custom test command: %q\n", command) } else { - color.Default.Fprintf(out, "Running custom test command: %q with timeout %d s\n", command, test.TimeoutSeconds) + output.Default.Fprintf(out, "Running custom test command: %q with timeout %d s\n", command, test.TimeoutSeconds) newCtx, cancel := context.WithTimeout(ctx, time.Duration(test.TimeoutSeconds)*time.Second) defer cancel() @@ -97,17 +97,17 @@ func (ct *Runner) runCustomTest(ctx context.Context, out io.Writer, imageTag str if e, ok := err.(*exec.ExitError); ok { // If the process exited by itself, just return the error if e.Exited() { - color.Red.Fprintf(out, "Command finished with non-0 exit code.\n") + output.Red.Fprintf(out, "Command finished with non-0 exit code.\n") return cmdRunNonZeroExitErr(command, e) } // If the context is done, it has been killed by the exec.Command select { case <-ctx.Done(): if ctx.Err() == context.DeadlineExceeded { - color.Red.Fprintf(out, "Command timed out\n") + output.Red.Fprintf(out, "Command timed out\n") return cmdRunTimedoutErr(test.TimeoutSeconds, ctx.Err()) } else if ctx.Err() == context.Canceled { - color.Red.Fprintf(out, "Command cancelled\n") + output.Red.Fprintf(out, "Command cancelled\n") return cmdRunCancelledErr(ctx.Err()) } return cmdRunExecutionErr(ctx.Err()) @@ -117,7 +117,7 @@ func (ct *Runner) runCustomTest(ctx context.Context, out io.Writer, imageTag str } return cmdRunErr(err) } - color.Green.Fprintf(out, "Command finished successfully.\n") + output.Green.Fprintf(out, "Command finished successfully.\n") return nil } diff --git a/pkg/skaffold/test/test_factory.go b/pkg/skaffold/test/test_factory.go index 595f1bf725b..e9c71d2ca32 100644 --- a/pkg/skaffold/test/test_factory.go +++ b/pkg/skaffold/test/test_factory.go @@ -22,13 +22,13 @@ import ( "fmt" "io" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/config" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/constants" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/docker" eventV2 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/event/v2" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/graph" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/logfile" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/test/custom" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/test/structure" @@ -77,7 +77,7 @@ func (t FullTester) Test(ctx context.Context, out io.Writer, bRes []graph.Artifa } eventV2.TaskInProgress(constants.Test) - color.Default.Fprintln(out, "Testing images...") + output.Default.Fprintln(out, "Testing images...") if t.muted.MuteTest() { file, err := logfile.Create("test.log") diff --git a/pkg/skaffold/trigger/fsnotify/trigger.go b/pkg/skaffold/trigger/fsnotify/trigger.go index 0a37b6ec6bc..f7a6a5b4c3d 100644 --- a/pkg/skaffold/trigger/fsnotify/trigger.go +++ b/pkg/skaffold/trigger/fsnotify/trigger.go @@ -25,7 +25,7 @@ import ( "github.com/rjeczalik/notify" "github.com/sirupsen/logrus" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/util" ) @@ -64,9 +64,9 @@ func (t *Trigger) Debounce() bool { func (t *Trigger) LogWatchToUser(out io.Writer) { if t.isActive() { - color.Yellow.Fprintln(out, "Watching for changes...") + output.Yellow.Fprintln(out, "Watching for changes...") } else { - color.Yellow.Fprintln(out, "Not watching for changes...") + output.Yellow.Fprintln(out, "Not watching for changes...") } } diff --git a/pkg/skaffold/trigger/triggers.go b/pkg/skaffold/trigger/triggers.go index bfdef6ac888..4ad0d94c3e5 100644 --- a/pkg/skaffold/trigger/triggers.go +++ b/pkg/skaffold/trigger/triggers.go @@ -28,7 +28,7 @@ import ( "github.com/sirupsen/logrus" - "github.com/GoogleContainerTools/skaffold/pkg/skaffold/color" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/output" latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1" fsNotify "github.com/GoogleContainerTools/skaffold/pkg/skaffold/trigger/fsnotify" ) @@ -86,9 +86,9 @@ func (t *pollTrigger) Debounce() bool { func (t *pollTrigger) LogWatchToUser(out io.Writer) { if t.isActive() { - color.Yellow.Fprintf(out, "Watching for changes every %v...\n", t.Interval) + output.Yellow.Fprintf(out, "Watching for changes every %v...\n", t.Interval) } else { - color.Yellow.Fprintln(out, "Not watching for changes...") + output.Yellow.Fprintln(out, "Not watching for changes...") } } @@ -129,9 +129,9 @@ func (t *manualTrigger) Debounce() bool { func (t *manualTrigger) LogWatchToUser(out io.Writer) { if t.isActive() { - color.Yellow.Fprintln(out, "Press any key to rebuild/redeploy the changes") + output.Yellow.Fprintln(out, "Press any key to rebuild/redeploy the changes") } else { - color.Yellow.Fprintln(out, "Not watching for changes...") + output.Yellow.Fprintln(out, "Not watching for changes...") } }