You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: cmd_meta_get.go
    path of file: ./repos/storj/cmd/uplink
    
    the code of the file until where you have to start completion: // Copyright (C) 2021 Storj Labs, Inc.
// See LICENSE for copying information.

package main

import (
	"context"
	"encoding/json"
	"fmt"
	"strconv"

	"github.com/zeebo/clingy"
	"github.com/zeebo/errs"

	"storj.io/storj/cmd/uplink/ulext"
	"storj.io/storj/cmd/uplink/ulloc"
)

type cmdMetaGet struct {
	ex ulext.External

	access    string
	encrypted bool

	location ulloc.Location
	entry    *string
}

func newCmdMetaGet(ex ulext.External) *cmdMetaGet {
	return &cmdMetaGet{ex: ex}
}

func (c *cmdMetaGet) Setup(params clingy.Parameters) {
	c.access = params.Flag("access", "Access name or value to use", "").(string)
	c.encrypted = params.Flag("encrypted", "Shows keys base64 encoded without decrypting", false,
		clingy.Transform(strconv.ParseBool), clingy.Boolean,
	).(bool)

	c.lo
    
func (c *cmdMetaGet) Execute(ctx context.Context) error {
	project, err := c.ex.OpenProject(ctx, c.access, ulext.BypassEncryption(c.encrypted))
	if err != nil {
		return err
	}
	defer func() { _ = project.Close() }()

	bucket, key, ok := c.location.RemoteParts()
	if !ok {
		return errs.New("location must be remote")
	}

	object, err := project.StatObject(ctx, bucket, key)
	if err != nil {
		return err
	}

	if c.entry != nil {
		value, ok := object.Custom[*c.entry]
		if !ok {
			return errs.New("entry %q does not exist", *c.entry)
		}

		fmt.Fprintln(clingy.Stdout(ctx), value)
		return nil
	}

	if object.Custom == nil {
		fmt.Fprintln(clingy.Stdout(ctx), "{}")
		return nil
	}

	data, err := json.MarshalIndent(object.Custom, "", "  ")
	if err != nil {
		return errs.Wrap(err)
	}

	fmt.Fprintln(clingy.Stdout(ctx), string(data))
	return nil
}