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
}