func()

in app/registry/view.go [22:85]


func (a *App) viewRegistry(ctx *gin.Context) (router.Response, error) {
	userCtx := router.ContextWithUserAccessToken(ctx)

	registryName := ctx.Param("name")

	values, err := GetValuesFromGit(registryName, MasterBranch, a.Services.Gerrit)
	if err != nil {
		return nil, errors.Wrap(err, "unable to get values from git")
	}

	valuesJson, err := json.Marshal(values)
	if err != nil {
		return nil, errors.Wrap(err, "unable to encode values")
	}

	viewParams := gin.H{
		"timezone":   a.Config.Timezone,
		"values":     values,
		"valuesJson": string(valuesJson),
	}

	mrs, err := a.Services.Gerrit.GetMergeRequestByProject(userCtx, registryName)
	if err != nil {
		return nil, fmt.Errorf("unable to get merge reqyests by project, %w", err)
	}

	cbService, err := a.Services.Codebase.ServiceForContext(userCtx)
	if err != nil {
		return nil, fmt.Errorf("unable to init service for user context, %w", err)
	}

	reg, err := cbService.Get(registryName)
	if err != nil {
		return nil, fmt.Errorf("unable to get registry by name: %s, %w", registryName, err)
	}

	hasUpdate, _, registryVersion, err := HasUpdate(userCtx, a.Services.Gerrit, reg, MRTargetRegistryVersionUpdate)
	if err != nil {
		return nil, fmt.Errorf("unable to check for updates, %w", err)
	}

	if is, redirect := isVersionRedirect(ctx, "/admin/registry/view", reg.Name, registryVersion); is {
		return redirect, nil
	}

	viewParams["hasUpdate"] = hasUpdate

	for _, f := range a.viewRegistryProcessFunctions(mrs) {
		if err := f(userCtx, reg, values, viewParams); err != nil {
			return nil, errors.Wrap(err, "error during view registry function")
		}
	}

	templateArgs, err := json.Marshal(viewParams)
	if err != nil {
		return nil, errors.Wrap(err, "unable to encode template arguments")
	}

	return router.MakeHTMLResponse(200, "registry/view.html", gin.H{
		"page":            "registry",
		"registryVersion": MajorVersion(registryVersion.Core().Original()),
		"templateArgs":    string(templateArgs),
	}), nil
}