Skip to content

Commit

Permalink
Merge branch 'master' into update/lucuma-react-clipboard-0.46.0
Browse files Browse the repository at this point in the history
  • Loading branch information
hugo-vrijswijk authored Oct 31, 2023
2 parents b62520c + e024289 commit 25f164e
Show file tree
Hide file tree
Showing 12 changed files with 128 additions and 31 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -112,15 +112,15 @@ jobs:
env:
PGP_SECRET: ${{ secrets.PGP_SECRET }}
PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }}
run: echo $PGP_SECRET | base64 -di | gpg --import
run: echo $PGP_SECRET | base64 -d -i - | gpg --import

- name: Import signing key and strip passphrase
if: env.PGP_SECRET != '' && env.PGP_PASSPHRASE != ''
env:
PGP_SECRET: ${{ secrets.PGP_SECRET }}
PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }}
run: |
echo "$PGP_SECRET" | base64 -di > /tmp/signing-key.gpg
echo "$PGP_SECRET" | base64 -d -i - > /tmp/signing-key.gpg
echo "$PGP_PASSPHRASE" | gpg --pinentry-mode loopback --passphrase-fd 0 --import /tmp/signing-key.gpg
(echo "$PGP_PASSPHRASE"; echo; echo) | gpg --command-fd 0 --pinentry-mode loopback --change-passphrase $(gpg --list-secret-keys --with-colons 2> /dev/null | grep '^sec:' | cut --delimiter ':' --fields 5 | tail -n 1)
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ lib_managed/
src_managed/
project/boot/
project/plugins/project/
sbt-launch.jar

# Scala-IDE specific
.scala_dependencies
Expand Down
3 changes: 2 additions & 1 deletion .scalafmt-common.conf
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,11 @@
# this file by hand! Instead, if you wish to make changes, you should
# make a PR to sbt-lucuma.

version = "3.7.12"
version = "3.7.14"
style = default

runner.dialect = scala3
runner.optimizer.maxVisitsPerToken = 20000 # Avoids SearchStateExploded exceptions

maxColumn = 100
project.git = true
Expand Down
2 changes: 1 addition & 1 deletion .scalafmt.conf
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
version = "3.7.14"
version = "3.7.15"
include ".scalafmt-common.conf"
runner.dialect = scala3
19 changes: 10 additions & 9 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,16 @@ lazy val reactJS = "17.0.2"
lazy val catsVersion = "2.10.0"
lazy val catsRetryVersion = "3.1.0"
lazy val circeVersion = "0.14.6"
lazy val crystalVersion = "0.34.6"
lazy val crystalVersion = "0.35.0"
lazy val fs2DomVersion = "0.3.0-M1"
lazy val kittensVersion = "3.0.0"
lazy val kittensVersion = "3.1.0"
lazy val http4sVersion = "0.23.23"
lazy val http4sDomVersion = "0.2.10"
lazy val lucumaCoreVersion = "0.87.0"
lazy val lucumaPrimeStylesVersion = "0.2.9"
lazy val lucumaReactVersion = "0.46.0"
lazy val lucumaCoreVersion = "0.88.0"
lazy val lucumaPrimeStylesVersion = "0.2.10"
lazy val lucumaReactVersion = "0.47.0"
lazy val lucumaRefinedVersion = "0.1.2"
lazy val lucumaSchemasVersion = "0.61.0"
lazy val lucumaSchemasVersion = "0.63.0"
lazy val lucumaSsoVersion = "0.6.8"
lazy val monocleVersion = "3.2.0"
lazy val mouseVersion = "1.2.1"
Expand Down Expand Up @@ -123,9 +123,10 @@ lazy val tests =
.dependsOn(testkit)
.settings(
libraryDependencies ++= Seq(
"edu.gemini" %%% "lucuma-core-testkit" % lucumaCoreVersion % Test,
"org.scalameta" %%% "munit" % "0.7.29" % Test,
"org.typelevel" %%% "discipline-munit" % "1.0.9" % Test
"edu.gemini" %%% "lucuma-core-testkit" % lucumaCoreVersion % Test,
"edu.gemini" %%% "lucuma-schemas-testkit" % lucumaSchemasVersion % Test,
"org.scalameta" %%% "munit" % "0.7.29" % Test,
"org.typelevel" %%% "discipline-munit" % "1.0.9" % Test
)
)
.enablePlugins(ScalaJSPlugin, NoPublishPlugin)
Expand Down
18 changes: 9 additions & 9 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
// Copyright (c) 2016-2023 Association of Universities for Research in Astronomy, Inc. (AURA)
// For license information see LICENSE or https://opensource.org/licenses/BSD-3-Clause

package lucuma.ui.input

import eu.timepit.refined.types.numeric.NonNegInt
import lucuma.ui.input.FormatUtils._
import lucuma.ui.input.FormatUtils.*
import munit.DisciplineSuite
import org.scalacheck.Arbitrary._
import org.scalacheck.Prop._
import org.scalacheck._
import org.scalacheck.Arbitrary.*
import org.scalacheck.Prop.*
import org.scalacheck.*

final class FormatUtilsSpec extends DisciplineSuite {
final class FormatUtilsSpec extends DisciplineSuite:
val Zero = BigInt(0)
test("stripZerosPastNPlaces") {
forAll(arbitrary[BigInt], Gen.choose(0, 999999), Gen.choose(0, 9), Gen.choose(0, 9)) {
Expand All @@ -19,4 +21,3 @@ final class FormatUtilsSpec extends DisciplineSuite {
assertEquals(stripZerosPastNPlaces(s"$i.$d", n), s"$i.$keep")
}
}
}
37 changes: 37 additions & 0 deletions modules/tests/src/test/scala/lucuma/ui/optics/OpticsSuite.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
// Copyright (c) 2016-2023 Association of Universities for Research in Astronomy, Inc. (AURA)
// For license information see LICENSE or https://opensource.org/licenses/BSD-3-Clause

package lucuma.ui.optics

import cats.kernel.Eq
import lucuma.core.util.arb.ArbEnumerated.given
import lucuma.schemas.model.ObservingMode.GmosSouthLongSlit
import lucuma.schemas.model.arb.ArbObservingMode.given
import monocle.law.discipline.LensTests
import munit.DisciplineSuite
import org.scalacheck.Arbitrary
import org.scalacheck.Arbitrary.*

class OpticsSuite extends DisciplineSuite:
val disjointZip2 =
disjointZip(
GmosSouthLongSlit.grating,
GmosSouthLongSlit.filter
)
val disjointZip3 =
disjointZip(
GmosSouthLongSlit.grating,
GmosSouthLongSlit.filter,
GmosSouthLongSlit.fpu
)
val disjointZip4 =
disjointZip(
GmosSouthLongSlit.grating,
GmosSouthLongSlit.filter,
GmosSouthLongSlit.fpu,
GmosSouthLongSlit.explicitRoi
)

checkAll("disjointZip2", LensTests(disjointZip2))
checkAll("disjointZip3", LensTests(disjointZip3))
checkAll("disjointZip4", LensTests(disjointZip4))
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ object SolarProgress {
p.css,
<.div(
^.cls := "mars-orbit orbit",
<.div(^.cls := "planet mars"),
<.div(^.cls := "planet mars"),
<.div(
^.cls := "earth-orbit orbit",
<.div(^.cls := "planet earth"),
Expand Down
56 changes: 56 additions & 0 deletions modules/ui/src/main/scala/lucuma/ui/optics/package.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
// Copyright (c) 2016-2023 Association of Universities for Research in Astronomy, Inc. (AURA)
// For license information see LICENSE or https://opensource.org/licenses/BSD-3-Clause

package lucuma.ui.optics

import cats.syntax.all.*
import monocle.Iso
import monocle.Lens

// Lenses must be disjoint (not overlap), or the result will be unsafe.
// See https://github.com/optics-dev/Monocle/issues/545
def disjointZip[S, A, B](l1: Lens[S, A], l2: Lens[S, B]): Lens[S, (A, B)] =
Lens((s: S) => (l1.get(s), l2.get(s)))((ab: (A, B)) =>
(s: S) => l2.replace(ab._2)(l1.replace(ab._1)(s))
)

def disjointZip[S, A, B, C](l1: Lens[S, A], l2: Lens[S, B], l3: Lens[S, C]): Lens[S, (A, B, C)] =
Lens((s: S) => (l1.get(s), l2.get(s), l3.get(s)))((abc: (A, B, C)) =>
(s: S) => l3.replace(abc._3)(l2.replace(abc._2)(l1.replace(abc._1)(s)))
)

def disjointZip[S, A, B, C, D](
l1: Lens[S, A],
l2: Lens[S, B],
l3: Lens[S, C],
l4: Lens[S, D]
): Lens[S, (A, B, C, D)] =
Lens((s: S) => (l1.get(s), l2.get(s), l3.get(s), l4.get(s)))((abc: (A, B, C, D)) =>
(s: S) => l4.replace(abc._4)(l3.replace(abc._3)(l2.replace(abc._2)(l1.replace(abc._1)(s))))
)

def disjointZip[S, A, B, C, D, E](
l1: Lens[S, A],
l2: Lens[S, B],
l3: Lens[S, C],
l4: Lens[S, D],
l5: Lens[S, E]
): Lens[S, (A, B, C, D, E)] =
Lens((s: S) => (l1.get(s), l2.get(s), l3.get(s), l4.get(s), l5.get(s)))((abc: (A, B, C, D, E)) =>
(s: S) =>
l5.replace(abc._5)(
l4.replace(abc._4)(l3.replace(abc._3)(l2.replace(abc._2)(l1.replace(abc._1)(s))))
)
)

// This only behaves as a lawful lens as long as A and B are both null or both set.
def unsafeDisjointOptionZip[S, A, B](
l1: Lens[S, Option[A]],
l2: Lens[S, Option[B]]
): Lens[S, Option[(A, B)]] =
Lens((s: S) => (l1.get(s), l2.get(s)).tupled)((ab: Option[(A, B)]) =>
(s: S) => l2.replace(ab.map(_._2))(l1.replace(ab.map(_._1))(s))
)

def optionIso[A, B](iso: Iso[A, B]): Iso[Option[A], Option[B]] =
Iso[Option[A], Option[B]](_.map(iso.get))(_.map(iso.reverseGet))
2 changes: 1 addition & 1 deletion project/build.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
sbt.version=1.9.6
sbt.version=1.9.7
2 changes: 1 addition & 1 deletion project/plugins.sbt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
addSbtPlugin("ch.epfl.scala" % "sbt-scalajs-bundler" % "0.21.1")
val sbtLucumaVersion = "0.11.8"
val sbtLucumaVersion = "0.11.9"
addSbtPlugin("edu.gemini" % "sbt-lucuma-lib" % sbtLucumaVersion)
addSbtPlugin("edu.gemini" % "sbt-lucuma-css" % sbtLucumaVersion)

0 comments on commit 25f164e

Please sign in to comment.