Skip to content

Commit

Permalink
Merge from lihaoyi/mill (#2)
Browse files Browse the repository at this point in the history
* bump Ammonite version

* update-readme

* Add Gitlab to VersionControl (com-lihaoyi#489)

* Added info about skipped mill server in `-i` cmdline option

See com-lihaoyi#497

* bump ammonite version

* fix tests

* Added note about experimental Evaluator commands

See com-lihaoyi#502

* First pass at splitting out worker-api from mill core. (com-lihaoyi#504)

This reduces the {scala,scalajs,scalanative}-worker dependency from the entirety of Mill to a much narrower `mill.api` module. This reduces the amount of classpath pollution within these workers, should mean they're much faster to download the first time, and reduces the amount of random junk they would pull in if they were to be used outside of the Mill project.

The interactions between the various *Modules and their *WorkerImpls has been narrowed down to the `*.api` modules, which only depend on other `*.api` modules.

A lot of things have been moved around; user code is unlikely to break, but it's possible some will if it references classes that have been moved around. Forwarders have been left for the few internal classes that Mill uses in it's own `build.sc`, to support bootstrapping. Third-party code which breaks should be a straightforward to fix just by updating imports

The `*.api` modules have minimal dependencies (mostly uPickle and os-lib) and minimal code. There is still a bunch of implementation code in there: some of it defining data-types that are commonly sent across the module/worker interface (`Agg`, `PathRef`, ...), and some of it just general helper functions that are needed both in modules and workers. The latter code isn't strictly API definitions, but for now is small enough it's not worth splitting into it's own module

* collapse boilerplate folder structure within src/ folders (com-lihaoyi#505)

* collapse boilerplate folder structure within src/ folders

* .

* Bump Mill Scala version to 2.12.8 (com-lihaoyi#507)

* Added doc to version target

* Fixed plugin usage docs for mill-osgi

* Discover - break overridesRoutes into fixed size chunks (com-lihaoyi#509)

* Discover - break overridesRoutes into fixed size chunks

* Discover - simplify lambda creation

* add LargeProjectTests

* LargeProjectTests: remove Ydelambdafy

* fix GenIdea to create required folders (com-lihaoyi#510)

* Generalize Zinc Worker (com-lihaoyi#514)

* Generalize Zinc worker

- Compiler bridges can now be either pre-compiled or on-demand-compiled
- Scala library/compiler jar discovery is now configurable
- Zinc compiler cache is now configurable, rather than being hardcoded at n=1

* .

* update constructor args

* remove duplicate util/AggWrapper.scala file

* fix

* fix

* fix

* cleanup

* bump zinc 1.2.1 -> 1.2.5

* bump Ammonite version

* Avoid unnecessary dependency downloading by providing fetches per cache policy (com-lihaoyi#494)

* Avoid unnecessary dependency downloading by providing fetches per cache policy; add ticker logging when they are downloading

* Fix GenIdeaTests by making the Log context Option[]al

* Add some comments

* Rebase and resolve

* Fixed typo and added class link

* Added some docs to result type

* Detailed the difference between Failure and Exception

* Updated changelog

* Introduced new failFast parameter to Evaluator with default `true`

Added Aborted result type.

* Added cmdline option -k/--keep-going

See com-lihaoyi#477

* Also added failFast test cases

* Added changelog entry

* adding support for customizable constructor annotations, codec and "inclusive dot" (com-lihaoyi#481)

* Allow usage of ZincWorkerImpl without hashing files (com-lihaoyi#525)

* Allow usage of ZincWorkerImpl without hashing files

This is to better support non-Mill build tools like Bazel or Make who might do their own file hashing/mtiming for change-detection

* Update ZincWorkerImpl.scala

* Update ZincWorkerImpl.scala

* Update ZincWorkerImpl.scala

* Update ZincWorkerImpl.scala

* More improvements to ZincWorkerImpl (com-lihaoyi#526)

* More improvements to ZincWorkerImpl

- Cache classloaders separately from `ScalaInstance`s
- Pre-compute `analysisMap` to speed up lookups
- Allow compile-to-jar using sbt/zinc 1.3.0-m1

* Update build.sc

* Update ZincWorkerModule.scala

* Update ZincWorkerImpl.scala

* Fixed GenIdea library path to use file:// if it is not a jar file (otherwise dest/classes and resources dirs are not properly recognized).

* Fixed com-lihaoyi#511.

* 0.3.6

* PublishModule: add --gpgKeyName flag (com-lihaoyi#530)

* PublishModule: adds gpgKeyName flag

* 1 - Intro to Mill.md: usage sample of publish updates for gpgKeyName

* Update readme.md

* Update readme.md

* Added compiler-classpath properties to generated IntelliJ xml files (com-lihaoyi#531)

* Also export compileIvyDeps as provided scope

Fixes com-lihaoyi#535

* Updated Changelog

* Fixed typo

* Fixed typo

* Corrected Java example: sources -> allSources

Fixes com-lihaoyi#538

Thanks to Jim Kleckner

* Only hold weak references to classloaders in internal cache

That way, we do not prevent class loader unloading / garbage collection.
Also, we reduce the chance to use an outdated class loader.

* Properly strip scaladoc end tags

Fixes com-lihaoyi#451

* Create a Play! module to compile the router

* Load/convert instances from classloader

* Keep twirllib module

* Add playlib (we do not want to replace twirllib)

* rebase on master

* Reworks the toplevel playlib module

This is the first commit of a redesign of the play lib module. The new
design was massively inspired from the `scalajslib` module.

It adds a specialized worker for each version of play, both workers
implement a common api from an `api`. The main module delegates to a
`loader` which dynamically looks up the bridge instance through
reflection then triggers the generation.

- adds a `RouteCompilerWorkerApi` trait which establishes the bridge to
the actual `RouteCompilerWorker`.
- drops the existing `RouterGeneratorWorker` (it is specialized by
versions of play and extracted to its own submodule).
- updates the `RouterModule` with improved settings and documentation.

* Adds the api submodule

This is the second commit of a redesign of the play lib module.

This module contains only the common `api` which is implemented by the
actual workers. It also defines a specific ADT to configure the type of
routes generator to be used for the project. The ADT feels cleaner than
a simple string but may be too restrictive.

* Adds the specialized workers

This module adds workers specialized for play 2.6.0. and 2.7.0, these
modules actually depend on playframework artifacts. They are dynamically
loaded from the `RoutesCompilerWorkerApi`.

* Updates the test of the play lib module

The tests have been updated to check the returned error if the route
file cannot be parsed properly.

* Adjusts the main build file to match the new playlib module design

* Documentation section for the Play! module

* switch to T.sources for the routesFiles setting

* update scaladoc to leverage list markers

* better aligns RouterModule with mill's naming conventions

* Added mill-jbake plugin

* Also add main-api to build library paths

* Added log statement to BuildInfo generator

* Moved BuildInfo into package mill.contrib.buildinfo

This fixes com-lihaoyi#548

See also com-lihaoyi#547

* Added proper imports to contrib module code snippets

Fixes com-lihaoyi#547

* Version bump to more recent JBake version

* Documented some mill.api classes

* Splitted IO.scala to avoid cyclic references

* Added mill-integrationtest plugin

* Search tests annotations also on inherited public methods

Fixes com-lihaoyi#553

* Add FreeBSD installation instructions (com-lihaoyi#559)

* Fixed incorrect comment

* Added fixme

* Added support for typelevel scala libraries

Fixes com-lihaoyi#534

* Reviewed exitCode handling

Propagate server stop because of version change as exit code.

* Introduced JavaModule.docOptions to add extra (Java)Doc procesing options

E.g. disabling picky JavaDoc linter with `-Xdoclint:none`.

The method is called `docOptions` instead of `javadocOptions` so that other modules like `ScalaModule` can reuse it.

* Renamed JavaModule.docOptions to javadocOptions

* Adds individual modules to configure mill to playframework's defaults

This adds :
- version configuration
- dependencies
- directory layout
- runtime server

* Tightens visibility of the internal workers

* Integrate Router module and add a trait to configure it for play

* Cleanup useless play version mappings

* Add trait to configure twirl integration for playframework

* Play modules : api only, full play and mono module project.

* Adds tests for the PlayModule and SingleModule

* Adds test for PlayApi single module

* Documents play module usage

* fixes route compiler worker selector key

The version was correctly derived into a worker key but the key was
left unused and the full version was used instead which didn't work for
non .0 versions

* Provides additionnal dependency keys for easier configuration

* Reworks version specific keys and extraction

Route compilation workers are specific to play minor version but still
added a patch level version in the key.
The playMinorVersion used to compute the version part of the key had to
add a useless trailing `.0`, this is now fixed.

* add static assets including WebJars

Signed-off-by: Jean Helou <jhe@codamens.fr>

* Extracts static asset and webjar handling to a specific trait

* Relaxes the visibility on the Twil trait.

This makes it easier for users to customize their build.

* Update ZincWorkerImpl.scala

* Fixed some formatting issues in markdown files

* Add section to documentation about ivy classifiers

* Added changes to the MillClientMain to make it only use workers running
the JVM the client was launched with.

* Properly respect JAVA_HOME env var
  • Loading branch information
ucbjrl authored Mar 19, 2019
1 parent 58dda62 commit 49351ae
Show file tree
Hide file tree
Showing 254 changed files with 4,494 additions and 1,296 deletions.
4 changes: 2 additions & 2 deletions .appveyor.yml
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,15 @@ build_script:
cmd /C C:\mill\out\release\dest\mill.bat -i all main.test scalajslib.test)
- if [%COMPILER%]==[msys2] (
SET "PATH=%JAVA_HOME%\bin;C:\%MSYS2_DIR%\%MSYSTEM%\bin;C:\%MSYS2_DIR%\usr\bin;%PATH%" &&
C:\%MSYS2_DIR%\usr\bin\bash -lc 'os.makeDir.all -p /usr/local/bin' &&
C:\%MSYS2_DIR%\usr\bin\bash -lc 'mkdir -p /usr/local/bin' &&
C:\%MSYS2_DIR%\usr\bin\bash -lc "curl -Lo /usr/local/bin/mill %MILL_URL%" &&
C:\%MSYS2_DIR%\usr\bin\bash -lc 'chmod +x /usr/local/bin/mill' &&
C:\%MSYS2_DIR%\usr\bin\bash -lc "cd /c/mill && mill -i dev.assembly" &&
RD /S /Q %USERPROFILE%\.mill &&
C:\%MSYS2_DIR%\usr\bin\bash -lc "cd /c/mill && out/dev/assembly/dest/mill.bat -i all main.test scalajslib.test")
- if [%COMPILER%]==[cygwin] (
SET "PATH=%JAVA_HOME%\bin;C:\%CYGWIN_DIR%\bin;C:\%CYGWIN_DIR%\usr\bin;%PATH%" &&
C:\%CYGWIN_DIR%\bin\bash -lc 'os.makeDir.all -p /usr/local/bin' &&
C:\%CYGWIN_DIR%\bin\bash -lc 'mkdir -p /usr/local/bin' &&
C:\%CYGWIN_DIR%\bin\bash -lc "curl -Lo /usr/local/bin/mill %MILL_URL%" &&
C:\%CYGWIN_DIR%\bin\bash -lc 'sed -i '"'"'0,/-cp "\$0"/{s/-cp "\$0"/-cp `cygpath -w "\$0"`/}; 0,/-cp "\$0"/{s/-cp "\$0"/-cp `cygpath -w "\$0"`/}'"'"' /usr/local/bin/mill' &&
C:\%CYGWIN_DIR%\bin\bash -lc 'chmod +x /usr/local/bin/mill' &&
Expand Down
110 changes: 83 additions & 27 deletions build.sc
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import mill._
import mill.scalalib._
import publish._
import mill.modules.Jvm.createAssembly
import upickle.Js
trait MillPublishModule extends PublishModule{

def artifactName = "mill-" + super.artifactName()
Expand All @@ -27,15 +26,16 @@ trait MillPublishModule extends PublishModule{

def javacOptions = Seq("-source", "1.8", "-target", "1.8")
}

trait MillModule extends MillPublishModule with ScalaModule{ outer =>
def scalaVersion = T{ "2.12.6" }
trait MillApiModule extends MillPublishModule with ScalaModule{
def scalaVersion = T{ "2.12.8" }
def compileIvyDeps = Agg(ivy"com.lihaoyi::acyclic:0.1.7")
def scalacOptions = Seq("-P:acyclic:force")
def scalacPluginIvyDeps = Agg(ivy"com.lihaoyi::acyclic:0.1.7")
def repositories = super.repositories ++ Seq(
MavenRepository("https://oss.sonatype.org/content/repositories/releases")
)
}
trait MillModule extends MillApiModule{ outer =>
def scalacPluginClasspath =
super.scalacPluginClasspath() ++ Seq(main.moduledefs.jar())

Expand Down Expand Up @@ -78,17 +78,22 @@ object main extends MillModule {
Seq(PathRef(shared.generateCoreTestSources(T.ctx().dest)))
}
}

object api extends MillApiModule{
def ivyDeps = Agg(
ivy"com.lihaoyi::os-lib:0.2.6",
ivy"com.lihaoyi::upickle:0.7.1",
)
}
object core extends MillModule {
def moduleDeps = Seq(moduledefs)
def moduleDeps = Seq(moduledefs, api)

def compileIvyDeps = Agg(
ivy"org.scala-lang:scala-reflect:${scalaVersion()}"
)

def ivyDeps = Agg(
// Keep synchronized with ammonite in Versions.scala
ivy"com.lihaoyi:::ammonite:1.4.2",
ivy"com.lihaoyi:::ammonite:1.6.0",
// Necessary so we can share the JNA classes throughout the build process
ivy"net.java.dev.jna:jna:4.5.0",
ivy"net.java.dev.jna:jna-platform:4.5.0"
Expand All @@ -100,7 +105,7 @@ object main extends MillModule {
}

object moduledefs extends MillPublishModule with ScalaModule{
def scalaVersion = T{ "2.12.6" }
def scalaVersion = T{ "2.12.8" }
def ivyDeps = Agg(
ivy"org.scala-lang:scala-compiler:${scalaVersion()}",
ivy"com.lihaoyi::sourcecode:0.1.4",
Expand Down Expand Up @@ -135,7 +140,7 @@ object main extends MillModule {


object scalalib extends MillModule {
def moduleDeps = Seq(main)
def moduleDeps = Seq(main, scalalib.api)

def ivyDeps = Agg(
ivy"org.scala-sbt:test-interface:1.0"
Expand Down Expand Up @@ -173,23 +178,27 @@ object scalalib extends MillModule {
)
}
}
object worker extends MillModule{
def moduleDeps = Seq(main, scalalib)
object api extends MillApiModule{
def moduleDeps = Seq(main.api)
}
object worker extends MillApiModule{

def moduleDeps = Seq(scalalib.api)

def ivyDeps = Agg(
// Keep synchronized with zinc in Versions.scala
ivy"org.scala-sbt::zinc:1.2.1"
ivy"org.scala-sbt::zinc:1.3.0-M1"
)
def testArgs = Seq(
def testArgs = T{Seq(
"-DMILL_SCALA_WORKER=" + runClasspath().map(_.path).mkString(",")
)
)}
}
}


object scalajslib extends MillModule {

def moduleDeps = Seq(scalalib)
def moduleDeps = Seq(scalalib, scalajslib.api)

def testArgs = T{
val mapping = Map(
Expand All @@ -202,9 +211,12 @@ object scalajslib extends MillModule {
(for((k, v) <- mapping.toSeq) yield s"-D$k=$v")
}

object api extends MillApiModule{
def moduleDeps = Seq(main.core)
}
object worker extends Cross[WorkerModule]("0.6", "1.0")
class WorkerModule(scalajsBinary: String) extends MillModule{
def moduleDeps = Seq(scalajslib)
class WorkerModule(scalajsBinary: String) extends MillApiModule{
def moduleDeps = Seq(scalajslib.api)
def ivyDeps = scalajsBinary match {
case "0.6" =>
Agg(
Expand Down Expand Up @@ -233,6 +245,41 @@ object contrib extends MillModule {

object twirllib extends MillModule {
def moduleDeps = Seq(scalalib)
}

object playlib extends MillModule {
def moduleDeps = Seq(scalalib, twirllib, playlib.api)

def testArgs = T {
val mapping = Map(
"MILL_CONTRIB_PLAYLIB_ROUTECOMPILER_WORKER_2_6" -> worker("2.6").compile().classes.path,
"MILL_CONTRIB_PLAYLIB_ROUTECOMPILER_WORKER_2_7" -> worker("2.7").compile().classes.path
)

scalalib.worker.testArgs() ++
scalalib.backgroundwrapper.testArgs() ++
(for ((k, v) <- mapping.toSeq) yield s"-D$k=$v")
}

object api extends MillApiModule {
def moduleDeps = Seq(scalalib)
}
object worker extends Cross[WorkerModule]( "2.6", "2.7")

class WorkerModule(scalajsBinary: String) extends MillApiModule {
def moduleDeps = Seq(playlib.api)

def ivyDeps = scalajsBinary match {
case "2.6"=>
Agg(
ivy"com.typesafe.play::routes-compiler::2.6.0"
)
case "2.7" =>
Agg(
ivy"com.typesafe.play::routes-compiler::2.7.0"
)
}
}

}

Expand All @@ -258,7 +305,7 @@ object contrib extends MillModule {


object scalanativelib extends MillModule {
def moduleDeps = Seq(scalalib)
def moduleDeps = Seq(scalalib, scalanativelib.api)

def scalacOptions = Seq[String]() // disable -P:acyclic:force

Expand All @@ -274,11 +321,13 @@ object scalanativelib extends MillModule {
scalalib.backgroundwrapper.testArgs() ++
(for((k, v) <- mapping.toSeq) yield s"-D$k=$v")
}

object api extends MillApiModule{
def moduleDeps = Seq(main.core)
}
object worker extends Cross[WorkerModule]("0.3")
class WorkerModule(scalaNativeBinary: String) extends MillModule {
class WorkerModule(scalaNativeBinary: String) extends MillApiModule {
def scalaNativeVersion = T{ "0.3.8" }
def moduleDeps = Seq(scalanativelib)
def moduleDeps = Seq(scalanativelib.api)
def ivyDeps = scalaNativeBinary match {
case "0.3" =>
Agg(
Expand Down Expand Up @@ -338,9 +387,14 @@ def launcherScript(shellJvmArgs: Seq[String],
shellCommands = {
val jvmArgsStr = shellJvmArgs.mkString(" ")
def java(mainClass: String) =
s"""exec java $jvmArgsStr $$JAVA_OPTS -cp "${shellClassPath.mkString(":")}" $mainClass "$$@""""

s"""case "$$1" in
s"""exec $$JAVACMD $jvmArgsStr $$JAVA_OPTS -cp "${shellClassPath.mkString(":")}" $mainClass "$$@""""

s"""if [ -z "$$JAVA_HOME" ] ; then
| JAVACMD="java"
|else
| JAVACMD="$$JAVA_HOME/bin/java"
|fi
|case "$$1" in
| -i | --interactive )
| ${java("mill.MillMain")}
| ;;
Expand All @@ -352,9 +406,11 @@ def launcherScript(shellJvmArgs: Seq[String],
cmdCommands = {
val jvmArgsStr = cmdJvmArgs.mkString(" ")
def java(mainClass: String) =
s"""java $jvmArgsStr %JAVA_OPTS% -cp "${cmdClassPath.mkString(";")}" $mainClass %*"""
s""""%JAVACMD%" $jvmArgsStr %JAVA_OPTS% -cp "${cmdClassPath.mkString(";")}" $mainClass %*"""

s"""if "%1" == "-i" set _I_=true
s"""set "JAVACMD=java.exe"
|if not "%JAVA_HOME%"=="" set "JAVACMD=%JAVA_HOME%\\bin\\java.exe"
|if "%1" == "-i" set _I_=true
|if "%1" == "--interactive" set _I_=true
|if defined _I_ (
| ${java("mill.MillMain")}
Expand Down Expand Up @@ -521,7 +577,7 @@ def uploadToGithub(authKey: String) = T.command{
scalaj.http.Http("https://api.github.com/repos/lihaoyi/mill/releases")
.postData(
ujson.write(
Js.Obj(
ujson.Js.Obj(
"tag_name" -> releaseTag,
"name" -> releaseTag
)
Expand Down
6 changes: 3 additions & 3 deletions ci/shared.sc
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ def generateTarget(dir: Path) = {
val parameters = lowercases.zip(uppercases).map { case (lower, upper) => s"$lower: TT[$upper]" }.mkString(", ")
val body = uppercases.zipWithIndex.map { case (t, i) => s"args[$t]($i)" }.mkString(", ")

s"def zip[$typeArgs]($parameters) = makeT[($typeArgs)](Seq($zipArgs), (args: mill.util.Ctx) => ($body))"
s"def zip[$typeArgs]($parameters) = makeT[($typeArgs)](Seq($zipArgs), (args: mill.api.Ctx) => ($body))"
}

write(
Expand All @@ -50,7 +50,7 @@ def generateTarget(dir: Path) = {
|import scala.language.higherKinds
|trait TargetGenerated {
| type TT[+X]
| def makeT[X](inputs: Seq[TT[_]], evaluate: mill.util.Ctx => mill.eval.Result[X]): TT[X]
| def makeT[X](inputs: Seq[TT[_]], evaluate: mill.api.Ctx => mill.api.Result[X]): TT[X]
| ${(3 to 22).map(generate).mkString("\n")}
|}""".stripMargin
)
Expand All @@ -74,7 +74,7 @@ def generateEval(dir: Path) = {
s"""package mill.main
|import mill.eval.Evaluator
|import mill.define.Task
|import mill.util.Strict.Agg
|import mill.api.Strict.Agg
|class EvalGenerated(evaluator: Evaluator) {
| type TT[+X] = Task[X]
| ${(1 to 22).map(generate).mkString("\n")}
Expand Down
2 changes: 1 addition & 1 deletion ci/test-mill-0.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ set -eux
git clean -xdf

# Run tests
mill -i all {main,scalalib,scalajslib,contrib.twirllib,main.client,contrib.scalapblib}.test
mill -i all {main,scalalib,scalajslib,contrib.twirllib,contrib.playlib,main.client,contrib.scalapblib}.test
2 changes: 1 addition & 1 deletion ci/test-mill-bootstrap.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,4 @@ git clean -xdf
rm -rf ~/.mill

# Use second build to run tests using Mill
~/mill-2 -i all {main,scalalib,scalajslib,contrib.twirllib,contrib.scalapblib}.test
~/mill-2 -i all {main,scalalib,scalajslib,contrib.twirllib,contrib.playlib,contrib.scalapblib}.test
47 changes: 47 additions & 0 deletions contrib/buildinfo/src/BuildInfo.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package mill.contrib.buildinfo

import mill.T
import mill.define.Target
import mill.api.{Ctx, Logger, PathRef}
import mill.scalalib.ScalaModule

trait BuildInfo extends ScalaModule {

def buildInfoPackageName: Option[String] = None

def buildInfoObjectName: String = "BuildInfo"

def buildInfoMembers: T[Map[String, String]] = T {
Map.empty[String, String]
}

private def generateBuildInfo(members: Map[String, Any])(implicit dest: Ctx.Dest, log: Ctx.Log): Seq[PathRef] =
if (!members.isEmpty) {
val outputFile = dest.dest / "BuildInfo.scala"
val internalMembers =
members
.map {
case (name, value) => s""" def ${name} = "${value}""""
}
.mkString("\n")
log.log.debug(s"Generating object [${buildInfoPackageName.map(_ + ".").getOrElse("")}${buildInfoObjectName}] with [${members.size}] members to [${outputFile}]")
os.write(
outputFile,
s"""|${buildInfoPackageName.map(p => s"package ${p}").getOrElse("")}
|object ${buildInfoObjectName} {
|$internalMembers
|}""".stripMargin
)
Seq(PathRef(outputFile))
} else {
log.log.debug("No build info member defined, skipping code generation")
Seq.empty[PathRef]
}

def buildInfo = T {
generateBuildInfo(buildInfoMembers())
}

override def generatedSources: Target[Seq[PathRef]] = T { super.generatedSources() ++ buildInfo() }

}
4 changes: 4 additions & 0 deletions contrib/buildinfo/src/deprecated.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package mill.contrib

@deprecated("Moved to package mill.contrib.buildinfo", "0.3.7")
trait BuildInfo extends mill.contrib.buildinfo.BuildInfo
44 changes: 0 additions & 44 deletions contrib/buildinfo/src/mill/contrib/BuildInfo.scala

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package mill.contrib
package mill.contrib.buildinfo

import java.util.jar.JarFile
import mill._
import mill.define.Target
import mill.eval.Result._
import mill.api.Result._
import mill.eval.{Evaluator, Result}
import mill.modules.Assembly
import mill.scalalib.publish.VersionControl
Expand Down
Loading

0 comments on commit 49351ae

Please sign in to comment.