Skip to content

Commit 9e5850c

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

File tree

9 files changed

+65
-45
lines changed

9 files changed

+65
-45
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

website/docs/reference/cli-options.md

+12-8
Original file line numberDiff line numberDiff line change
@@ -899,6 +899,18 @@ Available in commands:
899899

900900
Key server to push / pull keys from
901901

902+
## Project version options
903+
904+
Available in commands:
905+
906+
[`bsp`](./commands.md#bsp), [`compile`](./commands.md#compile), [`dependency-update`](./commands.md#dependency-update), [`doc`](./commands.md#doc), [`export`](./commands.md#export), [`fmt` , `format` , `scalafmt`](./commands.md#fmt), [`package`](./commands.md#package), [`publish`](./commands.md#publish), [`publish local`](./commands.md#publish-local), [`publish setup`](./commands.md#publish-setup), [`repl` , `console`](./commands.md#repl), [`run`](./commands.md#run), [`setup-ide`](./commands.md#setup-ide), [`shebang`](./commands.md#shebang), [`test`](./commands.md#test)
907+
908+
<!-- Automatically generated, DO NOT EDIT MANUALLY -->
909+
910+
### `--compute-version`
911+
912+
Method used to compute the project version
913+
902914
## Publish options
903915

904916
Available in commands:
@@ -989,10 +1001,6 @@ Final name to publish artifacts as, including Scala version and platform suffixe
9891001

9901002
Version to publish artifacts as
9911003

992-
### `--compute-version`
993-
994-
How to compute the version to publish artifacts as
995-
9961004
### `--url`
9971005

9981006
URL to put in publishing metadata
@@ -1575,10 +1583,6 @@ Aliases: `--build-info`
15751583

15761584
Generate BuildInfo for project
15771585

1578-
### `--compute-version`
1579-
1580-
Method used to compute the project version for BuildInfo
1581-
15821586
## Suppress warning options
15831587

15841588
Available in commands:

0 commit comments

Comments
 (0)