Skip to content

Commit

Permalink
Close #192 - Add Scala binary version param (--scala-binary-version-n…
Browse files Browse the repository at this point in the history
…ame)
  • Loading branch information
kevin-lee committed Mar 7, 2021
1 parent defe4f0 commit 1251c41
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 11 deletions.
9 changes: 3 additions & 6 deletions cli/src/main/scala/maven2sbt/cli/Maven2SbtApp.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import cats.effect._
import cats.syntax.all._
import effectie.cats.ConsoleEffect
import effectie.cats.EitherTSupport._
import maven2sbt.core.{BuildSbt, Maven2Sbt, Maven2SbtError, ScalaBinaryVersion}
import maven2sbt.core.{BuildSbt, Maven2Sbt, Maven2SbtError}
import pirate._
import piratex._

Expand All @@ -32,8 +32,7 @@ object Maven2SbtApp extends MainIo[Maven2SbtArgs] {
if (file.isAbsolute) file else file.getCanonicalFile

override def run(args: Maven2SbtArgs): IO[Either[Maven2SbtError, Unit]] = args match {
case Maven2SbtArgs.FileArgs(scalaVersion, propsName, libsName, out, overwrite, pomPath) =>
val scalaBinaryVersionName = ScalaBinaryVersion.Name("scalaBinaryVersion").some
case Maven2SbtArgs.FileArgs(scalaVersion, scalaBinaryVersionName, propsName, libsName, out, overwrite, pomPath) =>
for {
pom <- IO(toCanonicalFile(pomPath))
buildSbtPath <- IO(toCanonicalFile(out))
Expand Down Expand Up @@ -61,9 +60,7 @@ object Maven2SbtApp extends MainIo[Maven2SbtArgs] {
}
} yield result

case Maven2SbtArgs.PrintArgs(scalaVersion, propsName, libsName, pomPath) =>
val scalaBinaryVersionName = ScalaBinaryVersion.Name("scalaBinaryVersion").some

case Maven2SbtArgs.PrintArgs(scalaVersion, scalaBinaryVersionName, propsName, libsName, pomPath) =>
(for {
pom <- eitherTRightF(IO(toCanonicalFile(pomPath)))
buildSbt <- EitherT(maven2SbtIo.buildSbtFromPomFile(scalaVersion, propsName, scalaBinaryVersionName, pom))
Expand Down
13 changes: 10 additions & 3 deletions cli/src/main/scala/maven2sbt/cli/Maven2SbtArgs.scala
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package maven2sbt.cli

import maven2sbt.core.{Libs, Props, ScalaBinaryVersion, ScalaVersion}

import java.io.File
import maven2sbt.core.{Libs, Props, ScalaVersion}

/**
* @author Kevin Lee
Expand All @@ -13,6 +14,7 @@ object Maven2SbtArgs {

final case class FileArgs(
scalaVersion: ScalaVersion
, scalaBinaryVersionName: Option[ScalaBinaryVersion.Name]
, propsName: Props.PropsName
, libsName: Libs.LibsName
, out: File
Expand All @@ -22,6 +24,7 @@ object Maven2SbtArgs {

final case class PrintArgs(
scalaVersion: ScalaVersion
, scalaBinaryVersionName: Option[ScalaBinaryVersion.Name]
, propsName: Props.PropsName
, libsName: Libs.LibsName
, pomPath: File
Expand All @@ -30,19 +33,23 @@ object Maven2SbtArgs {

def fileArgs(
scalaVersion: ScalaVersion
, scalaBinaryVersionName: Option[ScalaBinaryVersion.Name]
, propsName: Props.PropsName
, libsName: Libs.LibsName
, out: File
, overwrite: Overwrite
, pomPath: File
): Maven2SbtArgs = FileArgs(scalaVersion, propsName, libsName, out, overwrite, pomPath)
): Maven2SbtArgs =
FileArgs(scalaVersion, scalaBinaryVersionName, propsName, libsName, out, overwrite, pomPath)

def printArgs(
scalaVersion: ScalaVersion
, scalaBinaryVersionName: Option[ScalaBinaryVersion.Name]
, propsName: Props.PropsName
, libsName: Libs.LibsName
, pomPath: File
): Maven2SbtArgs = PrintArgs(scalaVersion, propsName, libsName, pomPath)
): Maven2SbtArgs =
PrintArgs(scalaVersion, scalaBinaryVersionName, propsName, libsName, pomPath)

}

Expand Down
41 changes: 39 additions & 2 deletions cli/src/main/scala/maven2sbt/cli/Maven2SbtArgsParser.scala
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package maven2sbt.cli

import java.io.File
import scalaz._
import Scalaz._
import pirate._
import Pirate._
import maven2sbt.core.{Libs, Props, ScalaVersion}
import maven2sbt.core.{Libs, Props, ScalaBinaryVersion, ScalaVersion}
import maven2sbt.info.Maven2SbtBuildInfo

import java.io.File

/**
* @author Kevin Lee
* @since 2020-01-01
Expand All @@ -19,6 +20,40 @@ object Maven2SbtArgsParser {
, metavar("<version>") |+| description("Scala version")
).map(ScalaVersion.apply)

private val scalaBinaryVersionArg: Parse[Option[ScalaBinaryVersion.Name]] = flag[String](
both('b', "scala-binary-version-name")
, metavar("<scala-binary-version-name>") |+|
description(
s"""The name of Scala binary version property. This is useful to figure out if it is a Scala library or Java library
|e.g.)
|-b scala.binary
|# or
|--scala-binary-version-name scala.binary
|---
|<properties>
| <scala.binary>2.13</scala.binary>
|</properties>
|<dependencies>
| <dependency>
| <groupId>io.kevinlee</groupId>
| <artifactId>myLib1_$${scala.binary}</artifactId>
| <version>0.1.0</version>
| </dependency>
| <dependency>
| <groupId>io.kevinlee</groupId>
| <artifactId>myLib2</artifactId>
| <version>0.2.0</version>
| </dependency>
|</dependencies>
|---
|results in
|"io.kevinlee" %% "myLib1" % "0.1.0"
|"io.kevinlee" % "myLib2" % "0.1.0"
|---
|""".stripMargin
)
).option.map(_.map(ScalaBinaryVersion.Name(_)))

private val paramsNameArg: Parse[Props.PropsName] = flag[String](
long("props-name")
, metavar("<props-name>") |+| description("properties object name (e.g. 'props' in `lazy val props = new {}`) (default: props)")
Expand All @@ -35,6 +70,7 @@ object Maven2SbtArgsParser {

def fileParser: Parse[Maven2SbtArgs] = Maven2SbtArgs.fileArgs _ |*| ((
scalaVersionArg
, scalaBinaryVersionArg
, paramsNameArg
, libsNameArg
, flag[String](
Expand All @@ -50,6 +86,7 @@ object Maven2SbtArgsParser {

def printParse: Parse[Maven2SbtArgs] = Maven2SbtArgs.printArgs _ |*| ((
scalaVersionArg
, scalaBinaryVersionArg
, paramsNameArg
, libsNameArg
, pomPathArg
Expand Down

0 comments on commit 1251c41

Please sign in to comment.