diff options
author | Olivier Mélois <baccata64@gmail.com> | 2019-07-08 10:33:31 +0200 |
---|---|---|
committer | Tobias Roeser <le.petit.fou@web.de> | 2019-07-08 10:33:31 +0200 |
commit | fe8667d58aef03e8b97c1361495ab5d851deee60 (patch) | |
tree | a652df66b0d873f0635b2f6a55122195e9412a3a /main | |
parent | 83aa7de17bf175ce64869f70c54de3882e047a1f (diff) | |
download | mill-fe8667d58aef03e8b97c1361495ab5d851deee60.tar.gz mill-fe8667d58aef03e8b97c1361495ab5d851deee60.tar.bz2 mill-fe8667d58aef03e8b97c1361495ab5d851deee60.zip |
Interpolates $MILL_VERSION in ivy imports (#649)
* Interpolates $MILL_VERSION in ivy imports
This overrides the default $ivy magic import by replacing the
`$MILL_VERSION` string with mill's version, in order to facilitate
the loading/update of contrib modules.
Ammonite had to be bumped to 1.6.9
* Removed bloop import
* AmmoniteExit import fix
* Removed repl dep check
* Removed problematic check
* Made ammonite version override-able
Diffstat (limited to 'main')
-rw-r--r-- | main/core/src/util/Compat.scala | 13 | ||||
-rw-r--r-- | main/core/src/util/Router.scala | 1 | ||||
-rw-r--r-- | main/core/src/util/Scripts.scala | 2 | ||||
-rw-r--r-- | main/src/main/MainRunner.scala | 5 | ||||
-rw-r--r-- | main/src/main/MillIvyHook.scala | 15 |
5 files changed, 33 insertions, 3 deletions
diff --git a/main/core/src/util/Compat.scala b/main/core/src/util/Compat.scala new file mode 100644 index 00000000..859f3747 --- /dev/null +++ b/main/core/src/util/Compat.scala @@ -0,0 +1,13 @@ +package mill.util + +import scala.reflect.macros.blackbox.Context + +object Compat{ + def copyAnnotatedType(c: Context) + (tpe: c.universe.AnnotatedType, + newAnnots: List[c.universe.Annotation]) = { + import c.universe.compat._ + + c.universe.AnnotatedType(newAnnots, tpe.underlying) + } +} diff --git a/main/core/src/util/Router.scala b/main/core/src/util/Router.scala index 5dd3c947..9504b937 100644 --- a/main/core/src/util/Router.scala +++ b/main/core/src/util/Router.scala @@ -1,6 +1,5 @@ package mill.util -import ammonite.main.Compat import language.experimental.macros import scala.annotation.StaticAnnotation diff --git a/main/core/src/util/Scripts.scala b/main/core/src/util/Scripts.scala index 65eb6b2b..f61d5cb5 100644 --- a/main/core/src/util/Scripts.scala +++ b/main/core/src/util/Scripts.scala @@ -3,7 +3,7 @@ package mill.util import java.nio.file.NoSuchFileException -import ammonite.runtime.Evaluator.AmmoniteExit +import ammonite.interp.api.AmmoniteExit import ammonite.util.Name.backtickWrap import ammonite.util.Util.CodeSource import ammonite.util.{Name, Res, Util} diff --git a/main/src/main/MainRunner.scala b/main/src/main/MainRunner.scala index 6705a4b3..354b6173 100644 --- a/main/src/main/MainRunner.scala +++ b/main/src/main/MainRunner.scala @@ -9,6 +9,7 @@ import mill.eval.{Evaluator, PathRef} import mill.util.PrintLogger import scala.annotation.tailrec +import ammonite.runtime.ImportHook /** @@ -120,11 +121,13 @@ class MainRunner(val config: ammonite.main.Cli.Config, } override def initMain(isRepl: Boolean) = { + val hooks = ImportHook.defaults + (Seq("ivy") -> MillIvyHook) super.initMain(isRepl).copy( scriptCodeWrapper = CustomCodeWrapper, // Ammonite does not properly forward the wd from CliConfig to Main, so // force forward it outselves - wd = config.wd + wd = config.wd, + importHooks = hooks ) } diff --git a/main/src/main/MillIvyHook.scala b/main/src/main/MillIvyHook.scala new file mode 100644 index 00000000..2b4eb6a7 --- /dev/null +++ b/main/src/main/MillIvyHook.scala @@ -0,0 +1,15 @@ +package mill.main +import ammonite.runtime.ImportHook.BaseIvy +import ammonite.runtime.ImportHook +import java.io.File + +/** + * Overrides the ivy hook to interpret $MILL_VERSION as the version of mill + * the user runs. + * + * Can be used to ensure loaded contrib modules keep up to date. + */ +object MillIvyHook extends BaseIvy(plugin = false){ + override def resolve(interp: ImportHook.InterpreterInterface, signatures: Seq[String]): Either[String,Set[File]] = + super.resolve(interp, signatures.map(_.replace("$MILL_VERSION", mill.BuildInfo.millVersion))) +} |