hunk.code_window:       - openldap
         - elasticsearch
         - prometheus
         - grafana
       command: postgres:5432 mysql:3306 minio:9000 inbucket:10080 openldap:389 elasticsearch:9200 prometheus:9090 grafana:3000
     leader:
       build:
         context: .
  
hunk.labels: keep keep keep keep replace keep keep keep keep
hunk.after_edit:     command: postgres:5432 mysql:3306 minio:9000 inbucket:9001 openldap:389 elasticsearch:9200 prometheus:9090 grafana:3000
  
hunk.file_path: docker-compose.yaml
hunk.type: replace
file: // Copyright 2018 The Go Authors. All rights reserved.
  // Use of this source code is governed by a BSD-style
  // license that can be found in the LICENSE file.
  
  // Package packagesdriver fetches type sizes for go/packages and go/analysis.
  package packagesdriver
  
  import (
  	"context"
  	"fmt"
  	"go/types"
  	"strings"
  
  	"golang.org/x/tools/internal/gocommand"
  )
  
  var debug = false
  
  func GetSizesGolist(ctx context.Context, inv gocommand.Invocation, gocmdRunner *gocommand.Runner) (types.Sizes, error) {
  	inv.Verb = "list"
  	inv.Args = []string{"-f", "{{context.GOARCH}} {{context.Compiler}}", "--", "unsafe"}
  	stdout, stderr, friendlyErr, rawErr := gocmdRunner.RunRaw(ctx, inv)
  	var goarch, compiler string
  	if rawErr != nil {
  		if rawErrMsg := rawErr.Error(); strings.Contains(rawErrMsg, "cannot find main module") || strings.Contains(rawErrMsg, "go.mod file not found") {
  			// User's running outside of a module. All bets are off. Get GOARCH and guess compiler is gc.
  			// TODO(matloob): Is this a problem in practice?
  			inv.Verb = "env"
  			inv.Args = []string{"GOARCH"}
  			envout, enverr := gocmdRunner.Run(ctx, inv)
  			if enverr != nil {
  				return nil, enverr
  			}
  			goarch = strings.TrimSpace(envout.String())
  			compiler = "gc"
  		} else {
  			return nil, friendlyErr
  		}
  	} else {
  		fields := strings.Fields(stdout.String())
  		if len(fields) < 2 {
  			return nil, fmt.Errorf("could not parse GOARCH and Go compiler in format \"<GOARCH> <compiler>\":\nstdout: <<%s>>\nstderr: <<%s>>",
  				stdout.String(), stderr.String())
  		}
  		goarch = fields[0]
  		compiler = fields[1]
  	}
  	return types.SizesFor(compiler, goarch), nil
  }
  