func New()

in internal/output/gcppubsub/gcppubsub.go [30:45]


func New(opts *output.Options) (output.Output, error) {
	if opts.Addr == "" {
		return nil, errors.New("emulator address is required")
	}

	os.Setenv("PUBSUB_EMULATOR_HOST", opts.Addr)

	ctx, cancel := context.WithCancel(context.Background())
	client, err := pubsub.NewClient(ctx, opts.GCPPubsubOptions.Project)
	if err != nil {
		cancel()
		return nil, fmt.Errorf("failed to create client: %w", err)
	}

	return &Output{opts: opts, client: client, cancelFunc: cancel}, nil
}