summaryrefslogtreecommitdiff
path: root/integration/test/resources/play-json/reformat.sc
diff options
context:
space:
mode:
Diffstat (limited to 'integration/test/resources/play-json/reformat.sc')
-rw-r--r--integration/test/resources/play-json/reformat.sc71
1 files changed, 71 insertions, 0 deletions
diff --git a/integration/test/resources/play-json/reformat.sc b/integration/test/resources/play-json/reformat.sc
new file mode 100644
index 00000000..c44b2f97
--- /dev/null
+++ b/integration/test/resources/play-json/reformat.sc
@@ -0,0 +1,71 @@
+import $ivy.`org.scalariform::scalariform:0.2.5`
+
+import mill._, scalalib._
+import ammonite.ops._
+import scalariform.formatter._
+import scalariform.formatter.preferences._
+import scalariform.parser.ScalaParserException
+
+trait Scalariform extends ScalaModule {
+ val playJsonPreferences = FormattingPreferences()
+ .setPreference(SpacesAroundMultiImports, true)
+ .setPreference(SpaceInsideParentheses, false)
+ .setPreference(DanglingCloseParenthesis, Preserve)
+ .setPreference(PreserveSpaceBeforeArguments, true)
+ .setPreference(DoubleIndentConstructorArguments, false)
+
+ def compile = T {
+ reformat()
+ super.compile()
+ }
+
+ def reformat = T {
+ val files = filesToFormat(sources())
+ T.ctx.log.info(s"Formatting ${files.size} Scala sources")
+ files.map { path =>
+ try {
+ val formatted = ScalaFormatter.format(
+ read(path),
+ playJsonPreferences,
+ scalaVersion = scalaVersion()
+ )
+ write.over(path, formatted)
+ } catch {
+ case ex: ScalaParserException =>
+ T.ctx.log.error(s"Failed to format file: ${path}. Error: ${ex.getMessage}")
+ }
+ path
+ }
+ }
+
+ def checkCodeFormat() = T.command {
+ filesToFormat(sources()).foreach { path =>
+ try {
+ val input = read(path)
+ val formatted = ScalaFormatter.format(
+ input,
+ playJsonPreferences,
+ scalaVersion = scalaVersion()
+ )
+ if (input != formatted) sys.error(
+ s"""
+ |ERROR: Scalariform check failed at file: ${path}
+ |To fix, format your sources using `mill __.reformat` before submitting a pull request.
+ |Additionally, please squash your commits (eg, use git commit --amend) if you're going to update this pull request.
+ """.stripMargin
+ )
+ } catch {
+ case ex: ScalaParserException =>
+ T.ctx.log.error(s"Failed to format file: ${path}. Error: ${ex.getMessage}")
+ }
+ }
+ }
+
+ private def filesToFormat(sources: Seq[PathRef]) = {
+ for {
+ pathRef <- sources if exists(pathRef.path)
+ file <- ls.rec(pathRef.path) if file.isFile && file.ext == "scala"
+ } yield file
+ }
+
+}