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: modrevision.go
    path of file: ./repos/iris/middleware/modrevision
    
    the code of the file until where you have to start completion: package modrevision

import (
	"fmt"
	"strings"
	"time"

	"github.com/kataras/iris/v12/context"
)

func init() {
	context.SetHandlerName("iris/middleware/modrevision.*", "iris.modrevision")
}

// Options holds the necessary values to render the server name, environment and build information.
// See the `New` package-level function.
type Options
    
func New(opts Options) context.Handler {
	buildTime, buildRevision := context.BuildTime, context.BuildRevision
	if opts.UnixTime {
		if t, err := time.Parse(time.RFC3339, buildTime); err == nil {
			buildTime = fmt.Sprintf("%d", t.Unix())
		}
	} else if opts.TimeLocation != nil {
		if t, err := time.Parse(time.RFC3339, buildTime); err == nil {
			buildTime = t.In(opts.TimeLocation).String()
		}
	}

	var buildInfo string
	if buildInfo = opts.ServerName; buildInfo != "" {
		if env := opts.Env; env != "" {
			buildInfo += fmt.Sprintf(" (%s)", env)
		}
	}

	if buildRevision != "" && buildTime != "" {
		buildTitle := ">>>> build"
		tab := strings.Repeat(" ", len(buildTitle))
		buildInfo += fmt.Sprintf("\n\n%s\n%[2]srevision        %[3]s\n%[2]sbuildtime       %[4]s\n%[2]sdeveloper       %[5]s",
			buildTitle, tab, buildRevision, buildTime, opts.Developer)
	}

	contents := []byte(buildInfo)
	if len(contents) > 0 {
		contents = append(contents, []byte("\n\nOK")...)
	} else {
		contents = []byte("OK")
	}

	return func(ctx *context.Context) {
		ctx.Write(contents)
	}
}