func getRelease()

in internal/commands/get.go [45:78]


func getRelease(ctx *cli.Context, log logrus.FieldLogger, httpClient gitlab.HTTPClient) error {
	projectID := ctx.String(flags.ProjectID)
	serverURL := ctx.String(flags.ServerURL)
	jobToken := ctx.String(flags.JobToken)
	privateToken := ctx.String(flags.PrivateToken)
	tagName := ctx.String(flags.TagName)
	includeHTML := ctx.Bool(flags.IncludeHTMLDescription)

	l := log.WithFields(logrus.Fields{
		"command":                    ctx.Command.Name,
		flags.ServerURL:              serverURL,
		flags.ProjectID:              projectID,
		flags.TagName:                tagName,
		flags.IncludeHTMLDescription: includeHTML,
	})

	l.Info("Getting release")

	gitlabClient, err := gitlab.New(serverURL, jobToken, privateToken, projectID, httpClient, log)
	if err != nil {
		return fmt.Errorf("create GitLab client: %w", err)
	}

	release, err := gitlabClient.GetRelease(ctx.Context, tagName, includeHTML)
	if err != nil {
		return fmt.Errorf("get release: %w", err)
	}

	if err := json.NewEncoder(ctx.App.Writer).Encode(release); err != nil {
		return fmt.Errorf("encode release response: %w", err)
	}

	return nil
}