You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			31 lines
		
	
	
		
			640 B
		
	
	
	
		
			Go
		
	
			
		
		
	
	
			31 lines
		
	
	
		
			640 B
		
	
	
	
		
			Go
		
	
| package tracing
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 	"os"
 | |
| 	"strings"
 | |
| 
 | |
| 	"github.com/moby/buildkit/util/tracing/detect"
 | |
| 	"go.opentelemetry.io/otel/attribute"
 | |
| 	"go.opentelemetry.io/otel/trace"
 | |
| )
 | |
| 
 | |
| func TraceCurrentCommand(ctx context.Context, name string) (context.Context, func(error), error) {
 | |
| 	tp, err := detect.TracerProvider()
 | |
| 	if err != nil {
 | |
| 		return context.Background(), nil, err
 | |
| 	}
 | |
| 	ctx, span := tp.Tracer("").Start(ctx, name, trace.WithAttributes(
 | |
| 		attribute.String("command", strings.Join(os.Args, " ")),
 | |
| 	))
 | |
| 
 | |
| 	return ctx, func(err error) {
 | |
| 		if err != nil {
 | |
| 			span.RecordError(err)
 | |
| 		}
 | |
| 		span.End()
 | |
| 
 | |
| 		detect.Shutdown(context.TODO())
 | |
| 	}, nil
 | |
| }
 |