func newCreateReleaseReq()

in internal/commands/create.go [123:168]


func newCreateReleaseReq(ctx *cli.Context, log logrus.FieldLogger) (*gitlab.CreateReleaseRequest, error) {
	assetsLink := ctx.StringSlice(flags.AssetsLink)
	description := ctx.String(flags.Description)
	releasedAt := ctx.String(flags.ReleasedAt)
	legacyCatalogPublish := new(bool)

	assets, err := gitlab.ParseAssets(assetsLink)
	if err != nil {
		return nil, fmt.Errorf("failed to parse assets: %w", err)
	}

	descriptionString, err := getDescription(description, log)
	if err != nil {
		return nil, err
	}

	// We define `legacyCatalogPublish` as a pointer to assign `nil` to it along with boolean values.
	// That's because we don't want to send this parameter via API if it's not `true`.
	*legacyCatalogPublish = ctx.Bool(flags.CatalogPublish)
	if !*legacyCatalogPublish {
		legacyCatalogPublish = nil
	}

	crr := &gitlab.CreateReleaseRequest{
		ID:                   ctx.String(flags.ProjectID),
		Name:                 ctx.String(flags.Name),
		Description:          descriptionString,
		TagName:              ctx.String(flags.TagName),
		TagMessage:           ctx.String(flags.TagMessage),
		Ref:                  ctx.String(flags.Ref),
		Assets:               assets,
		Milestones:           ctx.StringSlice(flags.Milestone),
		LegacyCatalogPublish: legacyCatalogPublish,
	}

	if releasedAt != "" {
		timeReleasedAt, err := gitlab.ParseDateTime(releasedAt)
		if err != nil {
			return nil, fmt.Errorf("failed to parse released-at: %w", err)
		}

		crr.ReleasedAt = &timeReleasedAt
	}

	return crr, nil
}