Skip to content

Commit eafd736

Browse files
committed
Refactor computeVersion and version to a separate option class
1 parent f562c0d commit eafd736

File tree

15 files changed

+82
-62
lines changed

15 files changed

+82
-62
lines changed

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

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ import scala.cli.commands.shared.{
5050
HelpGroup,
5151
MainClassOptions,
5252
SharedOptions,
53-
SharedPythonOptions
53+
SharedPythonOptions,
54+
SharedVersionOptions
5455
}
5556
import scala.cli.commands.util.{BuildCommandHelpers, ScalaCliSttpBackend}
5657
import scala.cli.commands.{ScalaCommand, SpecificationLevel, WatchUtil}
@@ -85,6 +86,7 @@ object Publish extends ScalaCommand[PublishOptions] with BuildCommandHelpers {
8586

8687
def mkBuildOptions(
8788
baseOptions: BuildOptions,
89+
sharedVersionOptions: SharedVersionOptions,
8890
publishParams: PublishParamsOptions,
8991
sharedPublish: SharedPublishOptions,
9092
publishRepo: PublishRepositoryOptions,
@@ -111,7 +113,7 @@ object Publish extends ScalaCommand[PublishOptions] with BuildCommandHelpers {
111113
.sequence
112114
},
113115
computeVersion = value {
114-
publishParams.computeVersion
116+
sharedVersionOptions.computeVersion
115117
.map(Positioned.commandLine)
116118
.map(ComputeVersion.parse)
117119
.sequence
@@ -132,7 +134,9 @@ object Publish extends ScalaCommand[PublishOptions] with BuildCommandHelpers {
132134
moduleName =
133135
publishParams.moduleName.map(_.trim).filter(_.nonEmpty).map(Positioned.commandLine),
134136
version =
135-
publishParams.version.map(_.trim).filter(_.nonEmpty).map(Positioned.commandLine),
137+
sharedVersionOptions.projectVersion.map(_.trim).filter(_.nonEmpty).map(
138+
Positioned.commandLine
139+
),
136140
url = publishParams.url.map(_.trim).filter(_.nonEmpty).map(Positioned.commandLine),
137141
license = value {
138142
publishParams.license
@@ -203,6 +207,7 @@ object Publish extends ScalaCommand[PublishOptions] with BuildCommandHelpers {
203207

204208
val initialBuildOptions = mkBuildOptions(
205209
baseOptions,
210+
options.shared.sharedVersionOptions,
206211
options.publishParams,
207212
options.sharedPublish,
208213
options.publishRepo,

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ object PublishLocal extends ScalaCommand[PublishLocalOptions] {
4040

4141
val initialBuildOptions = Publish.mkBuildOptions(
4242
baseOptions,
43+
options.shared.sharedVersionOptions,
4344
options.publishParams,
4445
options.sharedPublish,
4546
PublishRepositoryOptions(),

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

Lines changed: 1 addition & 11 deletions
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, SharedVersionOptions}
66
import scala.cli.commands.tags
77
import scala.cli.signing.shared.PasswordOption
88
import scala.cli.signing.util.ArgParsers.*
@@ -11,7 +11,6 @@ import scala.cli.util.MaybeConfigPasswordOption
1111

1212
// format: off
1313
final case class PublishParamsOptions(
14-
1514
@Group(HelpGroup.Publishing.toString)
1615
@HelpMessage("Organization to publish artifacts under")
1716
@Tag(tags.restricted)
@@ -28,15 +27,6 @@ final case class PublishParamsOptions(
2827
@Tag(tags.inShortHelp)
2928
moduleName: Option[String] = None,
3029
@Group(HelpGroup.Publishing.toString)
31-
@HelpMessage("Version to publish artifacts as")
32-
@Tag(tags.restricted)
33-
@Tag(tags.inShortHelp)
34-
version: Option[String] = None,
35-
@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)
4030
@HelpMessage("URL to put in publishing metadata")
4131
@Tag(tags.restricted)
4232
@Tag(tags.inShortHelp)

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ final case class PublishSetupOptions(
1515
global: GlobalOptions = GlobalOptions(),
1616
@Recurse
1717
coursier: CoursierOptions = CoursierOptions(),
18+
@Recurse
19+
sharedVersionOptions: SharedVersionOptions = SharedVersionOptions(),
1820
@Recurse
1921
workspace: SharedWorkspaceOptions = SharedWorkspaceOptions(),
2022
@Recurse

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

Lines changed: 1 addition & 1 deletion
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.sharedVersionOptions.computeVersion
3333
.orElse(fromGitOpt)
3434
cv.map(OptionCheck.DefaultValue.simple(_, Nil, Nil)).toRight {
3535
new MissingPublishOptionError(

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ enum HelpGroup:
1212
Launcher, LegacyScalaRunner, Logging,
1313
MacOS, Markdown,
1414
NativeImage,
15-
Package, PGP, Publishing,
15+
Package, PGP, ProjectVersion, Publishing,
1616
RedHat, Repl, Run, Runner,
1717
Scala, ScalaJs, ScalaNative, Secret, Signing, SuppressWarnings, SourceGenerator,
1818
Test,
@@ -29,6 +29,7 @@ enum HelpGroup:
2929
case ScalaNative => "Scala Native"
3030
case SuppressWarnings => "Suppress warnings"
3131
case SourceGenerator => "Source generator"
32+
case ProjectVersion => "Project version"
3233
case e => e.productPrefix
3334

3435
enum HelpCommandGroup:

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ import scala.util.control.NonFatal
5252

5353
// format: off
5454
final case class SharedOptions(
55+
@Recurse
56+
sharedVersionOptions: SharedVersionOptions = SharedVersionOptions(),
5557
@Recurse
5658
sourceGenerator: SourceGeneratorOptions = SourceGeneratorOptions(),
5759
@Recurse
@@ -319,7 +321,7 @@ final case class SharedOptions(
319321
sourceGeneratorOptions = bo.SourceGeneratorOptions(
320322
useBuildInfo = sourceGenerator.useBuildInfo,
321323
computeVersion = value {
322-
sourceGenerator.computeVersion
324+
sharedVersionOptions.computeVersion
323325
.map(Positioned.commandLine)
324326
.map(ComputeVersion.parse)
325327
.sequence
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
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 SharedVersionOptions(
9+
@Group(HelpGroup.ProjectVersion.toString)
10+
@HelpMessage("Method used to compute the project version")
11+
@ValueDescription("git|git:tag|command:...")
12+
@Tag(tags.restricted)
13+
@Tag(tags.inShortHelp)
14+
computeVersion: Option[String] = None,
15+
@Group(HelpGroup.ProjectVersion.toString)
16+
@HelpMessage("Set the project version")
17+
@Tag(tags.restricted)
18+
@Tag(tags.inShortHelp)
19+
projectVersion: Option[String] = None
20+
)
21+
// format: on
22+
23+
object SharedVersionOptions {
24+
implicit lazy val parser: Parser[SharedVersionOptions] = Parser.derive
25+
implicit lazy val help: Help[SharedVersionOptions] = Help.derive
26+
}

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

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,10 @@ import scala.cli.commands.tags
77
// format: off
88
final case class SourceGeneratorOptions(
99
@Group(HelpGroup.SourceGenerator.toString)
10-
@Tag(tags.experimental)
10+
@Tag(tags.restricted)
1111
@HelpMessage("Generate BuildInfo for project")
1212
@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,
13+
useBuildInfo: Option[Boolean] = None
1714
)
1815
// format: on
1916

modules/integration/src/test/scala/scala/cli/integration/ConfigTests.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,7 @@ class ConfigTests extends ScalaCliSuite {
408408
testOrg,
409409
"--name",
410410
testName,
411-
"--version",
411+
"--project-version",
412412
testVersion
413413
)
414414
.call(cwd = root, stdin = os.Inherit, stdout = os.Inherit, env = extraEnv)

0 commit comments

Comments
 (0)