Skip to content

Commit 5357f28

Browse files
authored
Merge pull request #3000 from danielleontiev/optimize-lables-adding
refactoring: remove ForgeApiAlg.labelPullRequest
2 parents e60240f + ecd2d10 commit 5357f28

22 files changed

+185
-110
lines changed

modules/core/src/main/scala/org/scalasteward/core/forge/ForgeApiAlg.scala

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,6 @@ trait ForgeApiAlg[F[_]] {
4040

4141
def commentPullRequest(repo: Repo, number: PullRequestNumber, comment: String): F[Comment]
4242

43-
def labelPullRequest(repo: Repo, number: PullRequestNumber, labels: List[String]): F[Unit]
44-
4543
final def createForkOrGetRepo(repo: Repo, doNotFork: Boolean): F[RepoOut] =
4644
if (doNotFork) getRepo(repo) else createFork(repo)
4745

modules/core/src/main/scala/org/scalasteward/core/forge/azurerepos/AzureReposApiAlg.scala

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@ package org.scalasteward.core.forge.azurerepos
1818

1919
import cats.MonadThrow
2020
import cats.syntax.all._
21-
import io.circe.Json
22-
import io.circe.syntax.KeyOps
2321
import org.http4s.{Request, Uri}
2422
import org.scalasteward.core.application.Config.AzureReposCfg
2523
import org.scalasteward.core.data.Repo
@@ -90,20 +88,6 @@ final class AzureReposApiAlg[F[_]](
9088
modify(repo)
9189
)
9290

93-
// https://docs.microsoft.com/en-us/rest/api/azure/devops/git/pull-request-labels/create?view=azure-devops-rest-7.1
94-
override def labelPullRequest(
95-
repo: Repo,
96-
number: PullRequestNumber,
97-
labels: List[String]
98-
): F[Unit] =
99-
client
100-
.postWithBody[Json, Json](
101-
url.labelPullRequest(repo, number),
102-
Json.obj("name" := labels.mkString("-")),
103-
modify(repo)
104-
)
105-
.void
106-
10791
private def warnIfAssigneesAreUsed =
10892
logger.warn("assignees are not supported by AzureRepos")
10993

modules/core/src/main/scala/org/scalasteward/core/forge/azurerepos/JsonCodec.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ final private[azurerepos] case class PullRequestPayload(
2828
sourceRefName: String,
2929
targetRefName: String,
3030
title: String,
31+
labels: Option[List[String]],
3132
description: String
3233
)
3334

@@ -39,6 +40,7 @@ private[azurerepos] object PullRequestPayload {
3940
sourceRefName = withPrefix(data.head),
4041
targetRefName = data.base.name,
4142
title = data.title,
43+
labels = Option.when(data.labels.nonEmpty)(data.labels),
4244
description = data.body
4345
)
4446
}

modules/core/src/main/scala/org/scalasteward/core/forge/azurerepos/Url.scala

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,4 @@ class Url(apiHost: Uri, organization: String) {
4949

5050
def commentPullRequest(repo: Repo, number: PullRequestNumber): Uri =
5151
pullRequests(repo) / number.value / "threads"
52-
53-
def labelPullRequest(repo: Repo, number: PullRequestNumber): Uri =
54-
pullRequests(repo) / number.value / "labels"
5552
}

modules/core/src/main/scala/org/scalasteward/core/forge/bitbucket/BitbucketApiAlg.scala

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ class BitbucketApiAlg[F[_]](
9292
for {
9393
_ <- F.whenA(data.assignees.nonEmpty)(warnIfAssigneesAreUsed)
9494
_ <- F.whenA(data.reviewers.nonEmpty)(warnIfReviewersAreUsed)
95+
_ <- F.whenA(data.labels.nonEmpty)(warnIfLabelsAreUsed)
9596
pullRequestOut <- create
9697
} yield pullRequestOut
9798
}
@@ -132,11 +133,7 @@ class BitbucketApiAlg[F[_]](
132133
)
133134
.map((cc: CreateComment) => Comment(cc.content.raw))
134135

135-
override def labelPullRequest(
136-
repo: Repo,
137-
number: PullRequestNumber,
138-
labels: List[String]
139-
): F[Unit] =
136+
private def warnIfLabelsAreUsed =
140137
logger.warn(
141138
"Bitbucket does not support PR labels, remove --add-labels to make this warning disappear"
142139
)

modules/core/src/main/scala/org/scalasteward/core/forge/bitbucketserver/BitbucketServerApiAlg.scala

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ final class BitbucketServerApiAlg[F[_]](
7070
reviewers <- useDefaultReviewers(repo)
7171
_ <- F.whenA(data.assignees.nonEmpty)(warnIfAssigneesAreUsed)
7272
_ <- F.whenA(data.reviewers.nonEmpty)(warnIfReviewersAreUsed)
73+
_ <- F.whenA(data.labels.nonEmpty)(warnIfLabelsAreUsed)
7374
req = Json.NewPR(
7475
title = data.title,
7576
description = data.body,
@@ -121,11 +122,7 @@ final class BitbucketServerApiAlg[F[_]](
121122
.get[Json.Page[Json.PR]](url.listPullRequests(repo, s"refs/heads/$head"), modify(repo))
122123
.map(_.values.map(_.toPullRequestOut))
123124

124-
override def labelPullRequest(
125-
repo: Repo,
126-
number: PullRequestNumber,
127-
labels: List[String]
128-
): F[Unit] =
125+
private def warnIfLabelsAreUsed =
129126
logger.warn(
130127
"Bitbucket does not support PR labels, remove --add-labels to make this warning disappear"
131128
)

modules/core/src/main/scala/org/scalasteward/core/forge/data/NewPullRequestData.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,7 @@ object NewPullRequestData {
223223
artifactIdToUrl: Map[String, Uri] = Map.empty,
224224
artifactIdToUpdateInfoUrls: Map[String, List[UpdateInfoUrl]] = Map.empty,
225225
filesWithOldVersion: List[String] = List.empty,
226+
addLabels: Boolean = false,
226227
labels: List[String] = List.empty
227228
): NewPullRequestData =
228229
NewPullRequestData(
@@ -243,7 +244,7 @@ object NewPullRequestData {
243244
),
244245
head = branchName,
245246
base = data.baseBranch,
246-
labels = labels,
247+
labels = if (addLabels) labels else List.empty,
247248
assignees = data.repoConfig.assignees,
248249
reviewers = data.repoConfig.reviewers
249250
)

modules/core/src/main/scala/org/scalasteward/core/forge/gitea/GiteaApiAlg.scala

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -255,25 +255,6 @@ final class GiteaApiAlg[F[_]: HttpJsonClient](
255255
}
256256
}
257257

258-
override def labelPullRequest(
259-
repo: Repo,
260-
number: PullRequestNumber,
261-
labels: List[String]
262-
): F[Unit] = {
263-
def attachLabels(labels: Vector[Int]): F[Unit] =
264-
if (labels.nonEmpty)
265-
client
266-
.postWithBody[Vector[Label], AttachLabelReq](
267-
url.pullRequestLabels(repo, number),
268-
AttachLabelReq(labels),
269-
modify(repo)
270-
)
271-
.void
272-
else ().pure[F]
273-
274-
getOrCreateLabel(repo, labels.toVector) >>= attachLabels
275-
}
276-
277258
def getOrCreateLabel(repo: Repo, labels: Vector[String]): F[Vector[Int]] =
278259
listLabels(repo).flatMap { repoLabels =>
279260
val existing = repoLabels.filter(label => labels.contains(label.name))

modules/core/src/main/scala/org/scalasteward/core/forge/github/GitHubApiAlg.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ final class GitHubApiAlg[F[_]](
5353

5454
for {
5555
pullRequestOut <- create
56+
_ <- F.whenA(data.labels.nonEmpty)(labelPullRequest(repo, pullRequestOut.number, data.labels))
5657
_ <-
5758
F.whenA(data.assignees.nonEmpty)(addAssignees(repo, pullRequestOut.number, data.assignees))
5859
_ <-
@@ -92,7 +93,7 @@ final class GitHubApiAlg[F[_]](
9293
.postWithBody(url.comments(repo, number), Comment(comment), modify(repo))
9394

9495
/** https://docs.github.com/en/rest/reference/issues#add-labels-to-an-issue */
95-
override def labelPullRequest(
96+
private def labelPullRequest(
9697
repo: Repo,
9798
number: PullRequestNumber,
9899
labels: List[String]

modules/core/src/main/scala/org/scalasteward/core/forge/gitlab/GitLabApiAlg.scala

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ final private[gitlab] case class MergeRequestPayload(
3636
id: String,
3737
title: String,
3838
description: String,
39+
labels: Option[List[String]],
3940
assignee_ids: Option[List[Int]],
4041
reviewer_ids: Option[List[Int]],
4142
target_project_id: Long,
@@ -58,6 +59,7 @@ private[gitlab] object MergeRequestPayload {
5859
description = data.body,
5960
assignee_ids = Option.when(assignees.nonEmpty)(assignees),
6061
reviewer_ids = Option.when(reviewers.nonEmpty)(reviewers),
62+
labels = Option.when(data.labels.nonEmpty)(data.labels),
6163
target_project_id = projectId,
6264
source_branch = data.head,
6365
target_branch = data.base
@@ -329,17 +331,4 @@ final class GitLabApiAlg[F[_]: Parallel](
329331
): F[Comment] =
330332
client.postWithBody(url.comments(repo, number), Comment(comment), modify(repo))
331333

332-
// https://docs.gitlab.com/ee/api/merge_requests.html#update-mr
333-
override def labelPullRequest(
334-
repo: Repo,
335-
number: PullRequestNumber,
336-
labels: List[String]
337-
): F[Unit] =
338-
client
339-
.putWithBody[Json, Json](
340-
url.existingMergeRequest(repo, number),
341-
Json.obj("labels" := labels.mkString(",")),
342-
modify(repo)
343-
)
344-
.void
345334
}

0 commit comments

Comments
 (0)