diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8be6de2..0dd618f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,7 +26,7 @@ jobs: ${{ runner.os }}-ivy-scala-2_10- - name: Build for Scala 2.10 - run: .github/workflows/sbt-build-simple.sh 2.10.7 + run: .github/workflows/sbt-build-simple.sh core 2.10.7 build_scala2_11: runs-on: ubuntu-latest @@ -50,7 +50,7 @@ jobs: ${{ runner.os }}-ivy-scala-2_11- - name: Build for Scala 2.11 - run: .github/workflows/sbt-build-simple.sh 2.11.12 + run: .github/workflows/sbt-build-simple.sh core 2.11.12 build_scala2_12: runs-on: ubuntu-latest @@ -74,7 +74,7 @@ jobs: ${{ runner.os }}-ivy-scala-2_12- - name: Build for Scala 2.12 - run: .github/workflows/sbt-build-simple.sh 2.12.10 + run: .github/workflows/sbt-build-simple.sh core 2.12.10 build_scala2_13: runs-on: ubuntu-latest @@ -100,4 +100,4 @@ jobs: - name: Build for Scala 2.13 env: COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} - run: .github/workflows/sbt-build.sh 2.13.0 + run: .github/workflows/sbt-build.sh core 2.13.0 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 381f703..aa3418a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,16 +17,16 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_AUTH_TOKEN }} run: | echo "Run] sbt GitHub release" - echo 'sbt -J-Xmx2048m "; clean; +test; +packagedArtifacts; gitHubRelease"' - sbt -J-Xmx2048m "; clean; +test; +packagedArtifacts; gitHubRelease" + echo 'sbt -J-Xmx2048m "; project core; clean; +test; +packagedArtifacts; gitHubRelease"' + sbt -J-Xmx2048m "; project core; clean; +test; +packagedArtifacts; gitHubRelease" - name: sbt Publish env: BINTRAY_USER: ${{ secrets.BINTRAY_USER }} BINTRAY_PASS: ${{ secrets.BINTRAY_PASS }} run: | echo "Run] sbt GitHub release" - echo 'sbt -J-Xmx2048m "; clean; +publish"' - sbt -J-Xmx2048m "; clean; +publish" + echo 'sbt -J-Xmx2048m "; project core; clean; +publish"' + sbt -J-Xmx2048m "; project core; clean; +publish" - name: Sync to Maven Central env: BINTRAY_USER: ${{ secrets.BINTRAY_USER }} @@ -35,10 +35,11 @@ jobs: PROJECT_VERSION="${GITHUB_REF#refs/tags/v}" BINTRAY_SUBJECT=kevinlee BINTRAY_REPO=maven - BINTRAY_PACKAGE=just-fp + BINTRAY_PACKAGE=just-fp-core echo "BINTRAY_SUBJECT: $BINTRAY_SUBJECT" echo " BINTRAY_REPO: $BINTRAY_REPO" echo "BINTRAY_PACKAGE: $BINTRAY_PACKAGE" echo "PROJECT_VERSION: $PROJECT_VERSION" - echo "Sync to Maven Central..." - curl --user $BINTRAY_USER:$BINTRAY_PASS -X POST "https://api.bintray.com/maven_central_sync/$BINTRAY_SUBJECT/$BINTRAY_REPO/$BINTRAY_PACKAGE/versions/$PROJECT_VERSION" +# Uncomment once Bintray is connected to JCenter +# echo "Sync to Maven Central..." +# curl --user $BINTRAY_USER:$BINTRAY_PASS -X POST "https://api.bintray.com/maven_central_sync/$BINTRAY_SUBJECT/$BINTRAY_REPO/$BINTRAY_PACKAGE/versions/$PROJECT_VERSION" diff --git a/.github/workflows/sbt-build-simple.sh b/.github/workflows/sbt-build-simple.sh index ce6c701..1440bbb 100755 --- a/.github/workflows/sbt-build-simple.sh +++ b/.github/workflows/sbt-build-simple.sh @@ -2,13 +2,14 @@ set -x -if [ -z "$1" ] +if [ -z "$2" ] then - echo "Scala version is missing. Please enter the Scala version." - echo "sbt-build-simple.sh 2.11.12" + echo "Missing parameters. Please enter the [project] and [Scala version]." + echo "sbt-build-simple.sh core 2.12.10" exit 1 else - scala_version=$1 + project_name=$1 + scala_version=$2 echo "============================================" echo "Build projects (Simple)" echo "--------------------------------------------" @@ -16,9 +17,9 @@ else CURRENT_BRANCH_NAME="${GITHUB_REF#refs/heads/}" if [[ "$CURRENT_BRANCH_NAME" == "master" || "$CURRENT_BRANCH_NAME" == "release" ]] then - sbt -J-Xmx2048m "; ++ ${scala_version}!; clean; test; packagedArtifacts" + sbt -J-Xmx2048m "; project ${project_name}; ++ ${scala_version}! -v; clean; test; packagedArtifacts" else - sbt -J-Xmx2048m "; ++ ${scala_version}!; clean; test; package" + sbt -J-Xmx2048m "; project ${project_name}; ++ ${scala_version}! -v; clean; test; package" fi echo "============================================" diff --git a/.github/workflows/sbt-build.sh b/.github/workflows/sbt-build.sh index e9f7bc1..3607293 100755 --- a/.github/workflows/sbt-build.sh +++ b/.github/workflows/sbt-build.sh @@ -2,13 +2,14 @@ set -x -if [ -z "$1" ] +if [ -z "$2" ] then - echo "Scala version is missing. Please enter the Scala version." - echo "sbt-build.sh 2.11.12" + echo "Missing parameters. Please enter the [project] and [Scala version]." + echo "sbt-build.sh core 2.12.10" exit 1 else - scala_version=$1 + project_name=$1 + scala_version=$2 echo "============================================" echo "Build projects" echo "--------------------------------------------" @@ -16,12 +17,12 @@ else export CI_BRANCH="${GITHUB_REF#refs/heads/}" if [[ "$CI_BRANCH" == "master" || "$CI_BRANCH" == "release" ]] then - sbt -J-Xmx2048m "; ++ ${scala_version}!; clean; coverage; test; coverageReport; coverageAggregate" - sbt -J-Xmx2048m "; ++ ${scala_version}!; coveralls" - sbt -J-Xmx2048m "; ++ ${scala_version}!; clean; packagedArtifacts" + sbt -J-Xmx2048m "; project ${project_name}; ++ ${scala_version}!; clean; coverage; test; coverageReport; coverageAggregate" + sbt -J-Xmx2048m "; project ${project_name}; ++ ${scala_version}!; coveralls" + sbt -J-Xmx2048m "; project ${project_name}; ++ ${scala_version}!; clean; packagedArtifacts" else - sbt -J-Xmx2048m "; ++ ${scala_version}!; clean; coverage; test; coverageReport; coverageAggregate; package" - sbt -J-Xmx2048m "; ++ ${scala_version}!; coveralls" + sbt -J-Xmx2048m "; project ${project_name}; ++ ${scala_version}!; clean; coverage; test; coverageReport; coverageAggregate; package" + sbt -J-Xmx2048m "; project ${project_name}; ++ ${scala_version}!; coveralls" fi diff --git a/build.sbt b/build.sbt index 4113b99..34bc274 100644 --- a/build.sbt +++ b/build.sbt @@ -30,13 +30,22 @@ ThisBuild / scmInfo := , "git@github.com:Kevin-Lee/just-fp.git" )) +def prefixedProjectName(name: String) = s"just-fp${if (name.isEmpty) "" else s"-$name"}" + lazy val justFp = (project in file(".")) - .enablePlugins(DevOopsGitReleasePlugin) .settings( - name := "just-fp" + name := prefixedProjectName("") , description := "Just FP Lib" + ) + .dependsOn(core) + +lazy val core = (project in file("core")) + .enablePlugins(DevOopsGitReleasePlugin) + .settings( + name := prefixedProjectName("core") + , description := "Just FP Lib - Core" , unmanagedSourceDirectories in Compile ++= { - val sharedSourceDir = (baseDirectory in ThisBuild).value / "src/main" + val sharedSourceDir = baseDirectory.value / "src/main" if (scalaVersion.value.startsWith("2.13") || scalaVersion.value.startsWith("2.12")) Seq(sharedSourceDir / "scala-2.12_2.13") else diff --git a/src/main/scala-2.10_2.11/just/fp/compat/EitherCompat.scala b/core/src/main/scala-2.10_2.11/just/fp/compat/EitherCompat.scala similarity index 100% rename from src/main/scala-2.10_2.11/just/fp/compat/EitherCompat.scala rename to core/src/main/scala-2.10_2.11/just/fp/compat/EitherCompat.scala diff --git a/src/main/scala-2.12_2.13/just/fp/compat/EitherCompat.scala b/core/src/main/scala-2.12_2.13/just/fp/compat/EitherCompat.scala similarity index 100% rename from src/main/scala-2.12_2.13/just/fp/compat/EitherCompat.scala rename to core/src/main/scala-2.12_2.13/just/fp/compat/EitherCompat.scala diff --git a/src/main/scala/just/fp/Applicative.scala b/core/src/main/scala/just/fp/Applicative.scala similarity index 100% rename from src/main/scala/just/fp/Applicative.scala rename to core/src/main/scala/just/fp/Applicative.scala diff --git a/src/main/scala/just/fp/EitherT.scala b/core/src/main/scala/just/fp/EitherT.scala similarity index 100% rename from src/main/scala/just/fp/EitherT.scala rename to core/src/main/scala/just/fp/EitherT.scala diff --git a/src/main/scala/just/fp/Equal.scala b/core/src/main/scala/just/fp/Equal.scala similarity index 100% rename from src/main/scala/just/fp/Equal.scala rename to core/src/main/scala/just/fp/Equal.scala diff --git a/src/main/scala/just/fp/Functor.scala b/core/src/main/scala/just/fp/Functor.scala similarity index 100% rename from src/main/scala/just/fp/Functor.scala rename to core/src/main/scala/just/fp/Functor.scala diff --git a/src/main/scala/just/fp/Monad.scala b/core/src/main/scala/just/fp/Monad.scala similarity index 100% rename from src/main/scala/just/fp/Monad.scala rename to core/src/main/scala/just/fp/Monad.scala diff --git a/src/main/scala/just/fp/Monoid.scala b/core/src/main/scala/just/fp/Monoid.scala similarity index 100% rename from src/main/scala/just/fp/Monoid.scala rename to core/src/main/scala/just/fp/Monoid.scala diff --git a/src/main/scala/just/fp/OptionT.scala b/core/src/main/scala/just/fp/OptionT.scala similarity index 100% rename from src/main/scala/just/fp/OptionT.scala rename to core/src/main/scala/just/fp/OptionT.scala diff --git a/src/main/scala/just/fp/SemiGroup.scala b/core/src/main/scala/just/fp/SemiGroup.scala similarity index 100% rename from src/main/scala/just/fp/SemiGroup.scala rename to core/src/main/scala/just/fp/SemiGroup.scala diff --git a/src/main/scala/just/fp/WriterT.scala b/core/src/main/scala/just/fp/WriterT.scala similarity index 100% rename from src/main/scala/just/fp/WriterT.scala rename to core/src/main/scala/just/fp/WriterT.scala diff --git a/src/main/scala/just/fp/instances/BigDecimalInstances.scala b/core/src/main/scala/just/fp/instances/BigDecimalInstances.scala similarity index 100% rename from src/main/scala/just/fp/instances/BigDecimalInstances.scala rename to core/src/main/scala/just/fp/instances/BigDecimalInstances.scala diff --git a/src/main/scala/just/fp/instances/BigIntInstances.scala b/core/src/main/scala/just/fp/instances/BigIntInstances.scala similarity index 100% rename from src/main/scala/just/fp/instances/BigIntInstances.scala rename to core/src/main/scala/just/fp/instances/BigIntInstances.scala diff --git a/src/main/scala/just/fp/instances/BooleanInstances.scala b/core/src/main/scala/just/fp/instances/BooleanInstances.scala similarity index 100% rename from src/main/scala/just/fp/instances/BooleanInstances.scala rename to core/src/main/scala/just/fp/instances/BooleanInstances.scala diff --git a/src/main/scala/just/fp/instances/ByteInstances.scala b/core/src/main/scala/just/fp/instances/ByteInstances.scala similarity index 100% rename from src/main/scala/just/fp/instances/ByteInstances.scala rename to core/src/main/scala/just/fp/instances/ByteInstances.scala diff --git a/src/main/scala/just/fp/instances/CharInstances.scala b/core/src/main/scala/just/fp/instances/CharInstances.scala similarity index 100% rename from src/main/scala/just/fp/instances/CharInstances.scala rename to core/src/main/scala/just/fp/instances/CharInstances.scala diff --git a/src/main/scala/just/fp/instances/DoubleInstances.scala b/core/src/main/scala/just/fp/instances/DoubleInstances.scala similarity index 100% rename from src/main/scala/just/fp/instances/DoubleInstances.scala rename to core/src/main/scala/just/fp/instances/DoubleInstances.scala diff --git a/src/main/scala/just/fp/instances/FloatInstances.scala b/core/src/main/scala/just/fp/instances/FloatInstances.scala similarity index 100% rename from src/main/scala/just/fp/instances/FloatInstances.scala rename to core/src/main/scala/just/fp/instances/FloatInstances.scala diff --git a/src/main/scala/just/fp/instances/IntInstances.scala b/core/src/main/scala/just/fp/instances/IntInstances.scala similarity index 100% rename from src/main/scala/just/fp/instances/IntInstances.scala rename to core/src/main/scala/just/fp/instances/IntInstances.scala diff --git a/src/main/scala/just/fp/instances/LongInstances.scala b/core/src/main/scala/just/fp/instances/LongInstances.scala similarity index 100% rename from src/main/scala/just/fp/instances/LongInstances.scala rename to core/src/main/scala/just/fp/instances/LongInstances.scala diff --git a/src/main/scala/just/fp/instances/ShortInstances.scala b/core/src/main/scala/just/fp/instances/ShortInstances.scala similarity index 100% rename from src/main/scala/just/fp/instances/ShortInstances.scala rename to core/src/main/scala/just/fp/instances/ShortInstances.scala diff --git a/src/main/scala/just/fp/instances/StringInstances.scala b/core/src/main/scala/just/fp/instances/StringInstances.scala similarity index 100% rename from src/main/scala/just/fp/instances/StringInstances.scala rename to core/src/main/scala/just/fp/instances/StringInstances.scala diff --git a/src/main/scala/just/fp/package.scala b/core/src/main/scala/just/fp/package.scala similarity index 100% rename from src/main/scala/just/fp/package.scala rename to core/src/main/scala/just/fp/package.scala diff --git a/src/main/scala/just/fp/syntax/EitherSyntax.scala b/core/src/main/scala/just/fp/syntax/EitherSyntax.scala similarity index 100% rename from src/main/scala/just/fp/syntax/EitherSyntax.scala rename to core/src/main/scala/just/fp/syntax/EitherSyntax.scala diff --git a/src/main/scala/just/fp/syntax/EqualSyntax.scala b/core/src/main/scala/just/fp/syntax/EqualSyntax.scala similarity index 100% rename from src/main/scala/just/fp/syntax/EqualSyntax.scala rename to core/src/main/scala/just/fp/syntax/EqualSyntax.scala diff --git a/src/main/scala/just/fp/syntax/OptionSyntax.scala b/core/src/main/scala/just/fp/syntax/OptionSyntax.scala similarity index 100% rename from src/main/scala/just/fp/syntax/OptionSyntax.scala rename to core/src/main/scala/just/fp/syntax/OptionSyntax.scala diff --git a/src/main/scala/just/fp/syntax/SemiGroupSyntax.scala b/core/src/main/scala/just/fp/syntax/SemiGroupSyntax.scala similarity index 100% rename from src/main/scala/just/fp/syntax/SemiGroupSyntax.scala rename to core/src/main/scala/just/fp/syntax/SemiGroupSyntax.scala diff --git a/src/main/scala/just/fp/syntax/WriterSyntax.scala b/core/src/main/scala/just/fp/syntax/WriterSyntax.scala similarity index 100% rename from src/main/scala/just/fp/syntax/WriterSyntax.scala rename to core/src/main/scala/just/fp/syntax/WriterSyntax.scala diff --git a/src/main/scala/just/fp/syntax/package.scala b/core/src/main/scala/just/fp/syntax/package.scala similarity index 100% rename from src/main/scala/just/fp/syntax/package.scala rename to core/src/main/scala/just/fp/syntax/package.scala diff --git a/src/test/scala/just/fp/ApplicativeSpec.scala b/core/src/test/scala/just/fp/ApplicativeSpec.scala similarity index 100% rename from src/test/scala/just/fp/ApplicativeSpec.scala rename to core/src/test/scala/just/fp/ApplicativeSpec.scala diff --git a/src/test/scala/just/fp/EitherTSpec.scala b/core/src/test/scala/just/fp/EitherTSpec.scala similarity index 100% rename from src/test/scala/just/fp/EitherTSpec.scala rename to core/src/test/scala/just/fp/EitherTSpec.scala diff --git a/src/test/scala/just/fp/FunctorSpec.scala b/core/src/test/scala/just/fp/FunctorSpec.scala similarity index 100% rename from src/test/scala/just/fp/FunctorSpec.scala rename to core/src/test/scala/just/fp/FunctorSpec.scala diff --git a/src/test/scala/just/fp/Gens.scala b/core/src/test/scala/just/fp/Gens.scala similarity index 100% rename from src/test/scala/just/fp/Gens.scala rename to core/src/test/scala/just/fp/Gens.scala diff --git a/src/test/scala/just/fp/MonadSpec.scala b/core/src/test/scala/just/fp/MonadSpec.scala similarity index 100% rename from src/test/scala/just/fp/MonadSpec.scala rename to core/src/test/scala/just/fp/MonadSpec.scala diff --git a/src/test/scala/just/fp/MonoidSpec.scala b/core/src/test/scala/just/fp/MonoidSpec.scala similarity index 100% rename from src/test/scala/just/fp/MonoidSpec.scala rename to core/src/test/scala/just/fp/MonoidSpec.scala diff --git a/src/test/scala/just/fp/OptionTSpec.scala b/core/src/test/scala/just/fp/OptionTSpec.scala similarity index 100% rename from src/test/scala/just/fp/OptionTSpec.scala rename to core/src/test/scala/just/fp/OptionTSpec.scala diff --git a/src/test/scala/just/fp/Specs.scala b/core/src/test/scala/just/fp/Specs.scala similarity index 100% rename from src/test/scala/just/fp/Specs.scala rename to core/src/test/scala/just/fp/Specs.scala diff --git a/src/test/scala/just/fp/WriterTSpec.scala b/core/src/test/scala/just/fp/WriterTSpec.scala similarity index 100% rename from src/test/scala/just/fp/WriterTSpec.scala rename to core/src/test/scala/just/fp/WriterTSpec.scala diff --git a/src/test/scala/just/fp/syntax/EitherOpsSpec.scala b/core/src/test/scala/just/fp/syntax/EitherOpsSpec.scala similarity index 100% rename from src/test/scala/just/fp/syntax/EitherOpsSpec.scala rename to core/src/test/scala/just/fp/syntax/EitherOpsSpec.scala diff --git a/src/test/scala/just/fp/syntax/EqualSyntaxSpec.scala b/core/src/test/scala/just/fp/syntax/EqualSyntaxSpec.scala similarity index 100% rename from src/test/scala/just/fp/syntax/EqualSyntaxSpec.scala rename to core/src/test/scala/just/fp/syntax/EqualSyntaxSpec.scala diff --git a/src/test/scala/just/fp/syntax/OptionSyntaxSpec.scala b/core/src/test/scala/just/fp/syntax/OptionSyntaxSpec.scala similarity index 100% rename from src/test/scala/just/fp/syntax/OptionSyntaxSpec.scala rename to core/src/test/scala/just/fp/syntax/OptionSyntaxSpec.scala diff --git a/src/test/scala/just/fp/syntax/SemiGroupSyntaxSpec.scala b/core/src/test/scala/just/fp/syntax/SemiGroupSyntaxSpec.scala similarity index 100% rename from src/test/scala/just/fp/syntax/SemiGroupSyntaxSpec.scala rename to core/src/test/scala/just/fp/syntax/SemiGroupSyntaxSpec.scala diff --git a/src/test/scala/just/fp/syntax/WriterSyntaxSpec.scala b/core/src/test/scala/just/fp/syntax/WriterSyntaxSpec.scala similarity index 100% rename from src/test/scala/just/fp/syntax/WriterSyntaxSpec.scala rename to core/src/test/scala/just/fp/syntax/WriterSyntaxSpec.scala diff --git a/src/test/scala/just/fp/testing/EqualUtil.scala b/core/src/test/scala/just/fp/testing/EqualUtil.scala similarity index 100% rename from src/test/scala/just/fp/testing/EqualUtil.scala rename to core/src/test/scala/just/fp/testing/EqualUtil.scala diff --git a/src/test/scala/just/fp/testing/TestPredef.scala b/core/src/test/scala/just/fp/testing/TestPredef.scala similarity index 100% rename from src/test/scala/just/fp/testing/TestPredef.scala rename to core/src/test/scala/just/fp/testing/TestPredef.scala diff --git a/src/test/scala/just/fp/testing/TypeUtil.scala b/core/src/test/scala/just/fp/testing/TypeUtil.scala similarity index 100% rename from src/test/scala/just/fp/testing/TypeUtil.scala rename to core/src/test/scala/just/fp/testing/TypeUtil.scala