Skip to content

Commit cffddc3

Browse files
committed
Refactor computeVersion to a separate option class
1 parent 6b6d064 commit cffddc3

File tree

6 files changed

+29
-13
lines changed

6 files changed

+29
-13
lines changed

modules/cli/src/main/scala/scala/cli/commands/publish/Publish.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ object Publish extends ScalaCommand[PublishOptions] with BuildCommandHelpers {
111111
.sequence
112112
},
113113
computeVersion = value {
114-
publishParams.computeVersion
114+
publishParams.projectVersionOptions.computeVersion
115115
.map(Positioned.commandLine)
116116
.map(ComputeVersion.parse)
117117
.sequence

modules/cli/src/main/scala/scala/cli/commands/publish/PublishParamsOptions.scala

+3-5
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package scala.cli.commands.publish
22

33
import caseapp.*
44

5-
import scala.cli.commands.shared.HelpGroup
5+
import scala.cli.commands.shared.{HelpGroup, ProjectVersionOptions}
66
import scala.cli.commands.tags
77
import scala.cli.signing.shared.PasswordOption
88
import scala.cli.signing.util.ArgParsers.*
@@ -11,6 +11,8 @@ import scala.cli.util.MaybeConfigPasswordOption
1111

1212
// format: off
1313
final case class PublishParamsOptions(
14+
@Recurse
15+
projectVersionOptions: ProjectVersionOptions = ProjectVersionOptions(),
1416

1517
@Group(HelpGroup.Publishing.toString)
1618
@HelpMessage("Organization to publish artifacts under")
@@ -33,10 +35,6 @@ final case class PublishParamsOptions(
3335
@Tag(tags.inShortHelp)
3436
version: Option[String] = None,
3537
@Group(HelpGroup.Publishing.toString)
36-
@HelpMessage("How to compute the version to publish artifacts as")
37-
@Tag(tags.restricted)
38-
computeVersion: Option[String] = None,
39-
@Group(HelpGroup.Publishing.toString)
4038
@HelpMessage("URL to put in publishing metadata")
4139
@Tag(tags.restricted)
4240
@Tag(tags.inShortHelp)

modules/cli/src/main/scala/scala/cli/commands/publish/checks/ComputeVersionCheck.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ final case class ComputeVersionCheck(
2929
}
3030
else
3131
None
32-
val cv = options.publishParams.computeVersion
32+
val cv = options.publishParams.projectVersionOptions.computeVersion
3333
.orElse(fromGitOpt)
3434
cv.map(OptionCheck.DefaultValue.simple(_, Nil, Nil)).toRight {
3535
new MissingPublishOptionError(
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package scala.cli.commands.shared
2+
3+
import caseapp.*
4+
5+
import scala.cli.commands.tags
6+
7+
// format: off
8+
final case class ProjectVersionOptions(
9+
@HelpMessage("Method used to compute the project version")
10+
@ValueDescription("git|git:tag|command:...")
11+
@Tag(tags.restricted)
12+
computeVersion: Option[String] = None
13+
)
14+
// format: on
15+
16+
object ProjectVersionOptions {
17+
implicit lazy val parser: Parser[ProjectVersionOptions] = Parser.derive
18+
implicit lazy val help: Help[ProjectVersionOptions] = Help.derive
19+
}

modules/cli/src/main/scala/scala/cli/commands/shared/SharedOptions.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ final case class SharedOptions(
319319
sourceGeneratorOptions = bo.SourceGeneratorOptions(
320320
useBuildInfo = sourceGenerator.useBuildInfo,
321321
computeVersion = value {
322-
sourceGenerator.computeVersion
322+
sourceGenerator.projectVersionOptions.computeVersion
323323
.map(Positioned.commandLine)
324324
.map(ComputeVersion.parse)
325325
.sequence

modules/cli/src/main/scala/scala/cli/commands/shared/SourceGeneratorOptions.scala

+4-5
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,13 @@ import scala.cli.commands.tags
66

77
// format: off
88
final case class SourceGeneratorOptions(
9+
@Recurse
10+
projectVersionOptions: ProjectVersionOptions = ProjectVersionOptions(),
911
@Group(HelpGroup.SourceGenerator.toString)
10-
@Tag(tags.experimental)
12+
@Tag(tags.restricted)
1113
@HelpMessage("Generate BuildInfo for project")
1214
@Name("buildInfo")
13-
useBuildInfo: Option[Boolean] = None,
14-
@HelpMessage("Method used to compute the project version for BuildInfo")
15-
@Tag(tags.experimental)
16-
computeVersion: Option[String] = None,
15+
useBuildInfo: Option[Boolean] = None
1716
)
1817
// format: on
1918

0 commit comments

Comments
 (0)