Skip to content

Commit d98a8bb

Browse files
committed
Add scalafix configuration
1 parent 23af097 commit d98a8bb

15 files changed

+74
-35
lines changed

.github/workflows/ci.yml

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ jobs:
122122
if: github.event_name == 'push'
123123

124124
upload-launchers:
125-
needs: [format, jvm-tests, native-tests, native-static-tests, native-mostly-static-tests]
125+
needs: [format, scalafix, jvm-tests, native-tests, native-static-tests, native-mostly-static-tests]
126126
runs-on: ubuntu-24.04
127127
if: github.event_name == 'push'
128128
steps:
@@ -178,8 +178,23 @@ jobs:
178178
- uses: VirtusLab/scala-cli-setup@v1
179179
- run: scala-cli fmt . --check
180180

181+
scalafix:
182+
timeout-minutes: 30
183+
runs-on: ubuntu-24.04
184+
steps:
185+
- uses: actions/checkout@v2
186+
with:
187+
fetch-depth: 0
188+
submodules: true
189+
- uses: coursier/cache-action@v6
190+
- uses: coursier/setup-action@v1
191+
with:
192+
jvm: temurin:17
193+
- name: Run scalafix
194+
run: ./mill -i __.fix --check
195+
181196
publish:
182-
needs: [format, jvm-tests, native-tests, native-static-tests, native-mostly-static-tests]
197+
needs: [format, scalafix, jvm-tests, native-tests, native-static-tests, native-mostly-static-tests]
183198
if: github.event_name == 'push'
184199
runs-on: ubuntu-24.04
185200
steps:

.scalafix.conf

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
rules = [
2+
DisableSyntax,
3+
RemoveUnused,
4+
OrganizeImports,
5+
NoValInForComprehension,
6+
# ProcedureSyntax
7+
]
8+
DisableSyntax.noFinalize = true
9+
DisableSyntax.noIsInstanceOf = true
10+
DisableSyntax.noReturns = true
11+
12+
// `rules` on compilation
13+
triggered.rules = [
14+
DisableSyntax
15+
]
16+
17+
OrganizeImports {
18+
coalesceToWildcardImportThreshold = 6
19+
expandRelative = true
20+
groups = ["*", "re:javax?\\.", "scala."]
21+
groupedImports = AggressiveMerge
22+
targetDialect = Scala3
23+
}

build.mill.scala

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import $packages._
44

55
import $ivy.`io.github.alexarchambault.mill::mill-native-image::0.1.31-1`
66
import $ivy.`io.github.alexarchambault.mill::mill-native-image-upload:0.1.31-1`
7+
import $ivy.`com.goyeau::mill-scalafix::0.5.1`
78
import build.project.publish,
89
build.project.publish.{finalPublishVersion, publishSonatype => publishSonatype0}
910
import io.github.alexarchambault.millnativeimage.NativeImage
@@ -13,6 +14,7 @@ import scalalib._
1314

1415
import java.io.File
1516
import scala.annotation.unused
17+
import com.goyeau.mill.scalafix.ScalafixModule
1618

1719
object Deps {
1820
object Versions {
@@ -59,8 +61,16 @@ trait ScalaCliSigningPublish extends PublishModule {
5961
def publishVersion: Target[String] = finalPublishVersion()
6062
}
6163

64+
trait ScalaCliSigningModule extends ScalaModule with ScalafixModule {
65+
override def scalacOptions: Target[Seq[String]] =
66+
super.scalacOptions.map(_ ++ Seq("-Wunused:all"))
67+
override def scalaVersion: Target[String] = Scala.scala3
68+
}
69+
6270
object shared extends Shared
63-
trait Shared extends ScalaModule with ScalaCliSigningPublish {
71+
trait Shared extends ScalaCliSigningModule with ScalaCliSigningPublish {
72+
override def scalacOptions: Target[Seq[String]] =
73+
super.scalacOptions.map(_ ++ Seq("-Wunused:all"))
6474
override def scalaVersion: Target[String] = Scala.scala3
6575
def ivyDeps: Target[Agg[Dep]] = super.ivyDeps() ++ Seq(
6676
Deps.jsoniterCore,
@@ -100,9 +110,7 @@ trait CliNativeImage extends NativeImage {
100110
}
101111

102112
object cli extends Cli
103-
trait Cli extends ScalaModule with ScalaCliSigningPublish {
104-
self =>
105-
override def scalaVersion: Target[String] = Scala.scala3
113+
trait Cli extends ScalaCliSigningModule with ScalaCliSigningPublish { self =>
106114
def ivyDeps: Target[Agg[Dep]] = super.ivyDeps() ++ Seq(
107115
Deps.bouncycastle,
108116
Deps.bouncycastleUtils,
@@ -123,10 +131,9 @@ trait Cli extends ScalaModule with ScalaCliSigningPublish {
123131
}
124132
}
125133
}
126-
object `native-cli` extends ScalaModule with ScalaCliSigningPublish { self =>
127-
def scalaVersion: Target[String] = Task(Scala.scala3)
128-
def ivyDeps: Target[Agg[Dep]] = super.ivyDeps() ++ Seq(Deps.svm)
129-
def moduleDeps: Seq[Cli] = Seq(cli)
134+
object `native-cli` extends ScalaCliSigningModule with ScalaCliSigningPublish { self =>
135+
def ivyDeps: Target[Agg[Dep]] = super.ivyDeps() ++ Seq(Deps.svm)
136+
def moduleDeps: Seq[Cli] = Seq(cli)
130137

131138
def mainClass: Target[Option[String]] = cli.mainClass()
132139

@@ -231,7 +238,7 @@ trait CliTests extends ScalaModule {
231238
}
232239
}
233240

234-
object `jvm-integration` extends JvmIntegration
241+
object `jvm-integration` extends JvmIntegration with ScalafixModule
235242
trait JvmIntegration extends ScalaModule with CliTests { self =>
236243
override def scalaVersion: Target[String] = Scala.scala3
237244
def testLauncher: Target[PathRef] = cli.launcher()

cli/src/scala/cli/signing/ScalaCliSigning.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package scala.cli.signing
22

3-
import caseapp._
3+
import caseapp.*
44
import caseapp.core.app.CommandsEntryPoint
55
import org.bouncycastle.jce.provider.BouncyCastleProvider
66

cli/src/scala/cli/signing/commands/PgpCreate.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@ import caseapp.core.RemainingArgs
44
import caseapp.core.app.Command
55
import org.bouncycastle.bcpg.ArmoredOutputStream
66

7-
import java.io.{BufferedOutputStream, ByteArrayOutputStream, File}
8-
import java.util.{Base64, HexFormat}
7+
import java.io.{ByteArrayOutputStream, File}
98

109
import scala.cli.signing.util.PgpHelper
1110

cli/src/scala/cli/signing/commands/PgpCreateOptions.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package scala.cli.signing.commands
22

3-
import caseapp._
3+
import caseapp.*
44

55
import scala.cli.signing.shared.PasswordOption
6-
import scala.cli.signing.util.ArgParsers._
6+
import scala.cli.signing.util.ArgParsers.*
77

88
@HelpMessage("Create PGP key pair")
99
final case class PgpCreateOptions(

cli/src/scala/cli/signing/commands/PgpKeyId.scala

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,12 @@ package scala.cli.signing.commands
22

33
import caseapp.core.RemainingArgs
44
import caseapp.core.app.Command
5-
import org.bouncycastle.bcpg.PublicKeyAlgorithmTags
65
import org.bouncycastle.openpgp.operator.jcajce.JcaKeyFingerprintCalculator
76
import org.bouncycastle.openpgp.{PGPPublicKeyRingCollection, PGPUtil}
87

98
import java.io.ByteArrayInputStream
10-
import java.nio.charset.StandardCharsets
119

12-
import scala.jdk.CollectionConverters._
10+
import scala.jdk.CollectionConverters.*
1311

1412
object PgpKeyId extends Command[PgpKeyIdOptions] {
1513

@@ -18,7 +16,6 @@ object PgpKeyId extends Command[PgpKeyIdOptions] {
1816
)
1917

2018
// from https://stackoverflow.com/questions/9655181/how-to-convert-a-byte-array-to-a-hex-string-in-java/9855338#9855338
21-
private val hexChars = "0123456789abcdef".toCharArray
2219
private def bytesToHex(bytes: Array[Byte]): String = {
2320
val hexChars = Array.ofDim[Char](bytes.length * 2)
2421
for (j <- bytes.indices) {

cli/src/scala/cli/signing/commands/PgpKeyIdOptions.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package scala.cli.signing.commands
22

3-
import caseapp._
3+
import caseapp.*
44

55
// format: off
66
final case class PgpKeyIdOptions(

cli/src/scala/cli/signing/commands/PgpSignOptions.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package scala.cli.signing.commands
22

3-
import caseapp._
3+
import caseapp.*
44

55
import scala.cli.signing.shared.PasswordOption
6-
import scala.cli.signing.util.ArgParsers._
6+
import scala.cli.signing.util.ArgParsers.*
77

88
// format: off
99
@HelpMessage("Sign files with PGP")

cli/src/scala/cli/signing/commands/PgpVerify.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package scala.cli.signing.commands
22

3-
import caseapp._
3+
import caseapp.*
44
import caseapp.core.app.Command
55
import org.bouncycastle.openpgp.operator.jcajce.JcaKeyFingerprintCalculator
66
import org.bouncycastle.openpgp.{PGPPublicKeyRingCollection, PGPUtil}

cli/src/scala/cli/signing/commands/PgpVerifyOptions.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package scala.cli.signing.commands
22

3-
import caseapp._
3+
import caseapp.*
44

55
@HelpMessage("Verify PGP signatures")
66
final case class PgpVerifyOptions(

cli/src/scala/cli/signing/util/ArgParsers.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package scala.cli.signing.util
22

3-
import caseapp.core.argparser.ArgParser
4-
import caseapp.core.argparser.SimpleArgParser
3+
import caseapp.core.argparser.{ArgParser, SimpleArgParser}
54

65
import scala.cli.signing.shared.PasswordOption
76

cli/src/scala/cli/signing/util/BouncycastleSigner.scala

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import org.bouncycastle.bcpg.{
1010
HashAlgorithmTags,
1111
SymmetricKeyAlgorithmTags
1212
}
13-
import org.bouncycastle.openpgp.{Util => _, _}
13+
import org.bouncycastle.openpgp.*
1414
import org.bouncycastle.openpgp.jcajce.JcaPGPObjectFactory
1515
import org.bouncycastle.openpgp.operator.KeyFingerPrintCalculator
1616
import org.bouncycastle.openpgp.operator.jcajce.{
@@ -19,11 +19,12 @@ import org.bouncycastle.openpgp.operator.jcajce.{
1919
JcaPGPContentVerifierBuilderProvider,
2020
JcePBESecretKeyDecryptorBuilder
2121
}
22-
import org.codehaus.plexus.util.cli.CommandLineUtils.StringStreamConsumer
2322

2423
import java.io.{ByteArrayInputStream, ByteArrayOutputStream, InputStream, PrintWriter, StringWriter}
24+
2525
import scala.cli.signing.shared.Secret
26-
import scala.jdk.CollectionConverters._
26+
import scala.cli.signing.util.Util.maybeDecodeBase64
27+
import scala.jdk.CollectionConverters.*
2728
import scala.util.Try
2829

2930
final case class BouncycastleSigner(
@@ -211,7 +212,7 @@ object BouncycastleSigner {
211212
secretKey: Secret[Array[Byte]],
212213
passwordOpt: Option[Secret[String]]
213214
): BouncycastleSigner = {
214-
val is = new ByteArrayInputStream(Util.maybeDecodeBase64(secretKey.value))
215+
val is = new ByteArrayInputStream(maybeDecodeBase64(secretKey.value))
215216
val secretKey0 = readSecretKey(is)
216217
BouncycastleSigner(secretKey0, passwordOpt)
217218
}

cli/src/scala/cli/signing/util/Util.scala

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
package scala.cli.signing.util
2-
3-
import java.nio.charset.StandardCharsets
42
import java.util.Base64
53

64
object Util {

shared/src/scala/cli/signing/shared/PasswordOption.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package scala.cli.signing.shared
22

3-
import com.github.plokhotnyuk.jsoniter_scala.core._
4-
import com.github.plokhotnyuk.jsoniter_scala.macros._
3+
import com.github.plokhotnyuk.jsoniter_scala.core.*
4+
import com.github.plokhotnyuk.jsoniter_scala.macros.*
55

66
import java.nio.charset.StandardCharsets
77

0 commit comments

Comments
 (0)