summaryrefslogtreecommitdiff
path: root/scalaplugin
Commit message (Collapse)AuthorAgeFilesLines
* Fix idea project generation again...Li Haoyi2017-11-231-1/+1
|
* unwrap Segments when generating Intellij project filesLi Haoyi2017-11-231-2/+3
|
* Targets living in cross modules can now be properly discovered, run and cached.Li Haoyi2017-11-221-2/+2
| | | | | | | | Try out the following commands on our Mill `build.sc` file to exercise this functionality - `scalaplugin/target/mill run Core.cross[jarA].jar` - `scalaplugin/target/mill run Core.cross[jarB].jar` - `scalaplugin/target/mill run Core.cross[jarC].jar`
* First hack pass at cross-build discovery and command-running now works.Li Haoyi2017-11-181-1/+1
| | | | | | Can be tested out on our `build.sc` via `scalaplugin/target/mill run Core.cross[a].printIt` Needs tons of cleanup...
* Inject logging callback into Evaluator, so we can silence the logging in our ↵Li Haoyi2017-11-181-1/+1
| | | | unit tests
* Tweak implicits to make `build.sc` pass againLi Haoyi2017-11-181-6/+14
|
* Refactor `Evaluator` implementation to reduce the number of "unsafe" map lookupsLi Haoyi2017-11-181-1/+2
|
* Implement `T.persistent{}` targets, which have their dest directory persist ↵Li Haoyi2017-11-181-55/+97
| | | | between runs so the task implementation can use it as a cache
* CleanupLi Haoyi2017-11-181-3/+3
|
* Extract out shared `Hierarchy.traverse` function for walking `Hierarchy` treeLi Haoyi2017-11-182-12/+8
|
* Tweak example acyclic cross-build to show off cross-dependenciesLi Haoyi2017-11-161-14/+17
|
* Vendor `com.lihaoyi:acyclic` codebase as a cross-building example, first ↵Li Haoyi2017-11-1662-7/+1032
| | | | non-working experiments in cross building working...
* Allow opting in to faster/sloppier `PathRef` signatures using mtime + ↵Li Haoyi2017-11-151-1/+1
| | | | | | filesize instead of md5ing the file body. Used for third-party dependencies (which are large jars but shouldn't change often) this speeds up the no-op `mill run ScalaPlugin.compile` by about a quarter
* Strip out `play-json` dependency in favor of `upickle`, which we are forced ↵Li Haoyi2017-11-151-22/+2
| | | | to use anyway due to Ammonite. Saves us from classloading play-json and Jackson, shaving off a few hundred ms from the cold no-op runtime
* First pass at cleaning up `build.sc` file syntaxLi Haoyi2017-11-151-0/+7
|
* Avoid compiling code just to get access to compiled code output pathsLi Haoyi2017-11-151-5/+10
|
* Mark the scala library jar as `type=Scala` to make intellij believe it is a ↵Li Haoyi2017-11-151-3/+3
| | | | scala sdk
* WIP cleanup of gnarly GenIdea codeLi Haoyi2017-11-151-87/+118
|
* First pass at an `assembly` task now works, rudimentary but enough to be ↵Li Haoyi2017-11-141-1/+14
| | | | used metacircularly
* First pass at IntelliJ project generation for a Mill build. Run using `sbt ↵Li Haoyi2017-11-142-30/+184
| | | | scalaplugin/assembly && amm build.sc idea`
* Rename `Subproject` to `Module`Li Haoyi2017-11-121-4/+4
|
* remove dead functionLi Haoyi2017-11-121-24/+0
|
* Clean up `mill.Main`Li Haoyi2017-11-121-13/+17
|
* Rename out `Task.path` to `Task.source`, use it more aggressively to get ↵Li Haoyi2017-11-121-3/+3
| | | | `amm -w` watch-n-rebuild functionality working on `build.sc`
* Make sure Mill classpath doesn't leak into test classloaders, except for ↵Li Haoyi2017-11-121-1/+10
| | | | specific white-listed classes (e.g. `sbt-test-interface`)
* cleanup `build.sc` importsLi Haoyi2017-11-113-46/+55
|
* remove metacircular tests, since build.sc now serves that purposeLi Haoyi2017-11-111-62/+0
|
* `T{}` blocks can now be implicitLi Haoyi2017-11-111-3/+3
|
* - Smoothed out syntax for defining ivy dependenciesLi Haoyi2017-11-112-31/+49
| | | | - Made `build.sc` file directly runnable using Ammonite, without any wrapper
* First set of unit tests running through MillLi Haoyi2017-11-112-16/+14
|
* - Give `Target`s nicer `toString`s using `sourcecode.Enclosing`. Still not ↵Li Haoyi2017-11-111-12/+9
| | | | | | | | | | as good as the `Labeling` they get during evaluation, but better than nothing - Split out `TargetImpl` from `Target`, so we can make our dummy `TestUtils.Test` class implement `Target`s for discoverability etc. - Make `Discovered` only discover `Target`s, not `Task`s - Make `groupAroundNamedTargets` properly sort the groups topologically, and by flexible enough to combine groups which have cycles between them.
* Swap over to new `projectDeps` mechanism for defining dependencies between ↵Li Haoyi2017-11-113-12/+117
| | | | various `scalaplugin.Subproject`s
* First sketch at SBT test integration worksLi Haoyi2017-11-111-1/+31
|
* rename forge -> millLi Haoyi2017-11-102-10/+10
|
* Add basic tests for un-cached evaluation of `Task`sLi Haoyi2017-11-101-2/+2
|
* Kill `Router.main` annotation and make routing dependent on the `Command` ↵Li Haoyi2017-11-101-2/+1
| | | | return type
* Migrate over to the new `Task`/`Target`/`Command` splitLi Haoyi2017-11-091-7/+6
|
* Make `Applicative` macros able to inject a configurable `Ctx` object, used ↵Li Haoyi2017-11-091-16/+5
| | | | in `Target` to inject the `dest` folder for the `T{...}` block to use
* make scalaplugin.Subproject use the builtin destination folderLi Haoyi2017-11-091-7/+17
|
* Swap `compileScala` over to `T{...}` macroLi Haoyi2017-11-081-67/+64
|
* First full metacircular compile-build-execute workflow now works using the ↵Li Haoyi2017-11-071-0/+10
| | | | | | | | `build.sc` file in the root of the repo. Run using ``` sbt scalaplugin/compile "core/run build.sc ScalaPlugin.console" ```
* Recursive main-method resolution now works, as part of the normal discovery ↵Li Haoyi2017-11-051-3/+3
| | | | | | | | | | | | | | | | | | | | | | recursion ```scala @ import forge.util.JsonFormatters._ import forge.util.JsonFormatters._ @ forge.discover.Discovered[forge.scalaplugin.MetacircularTests.type] @ forge.discover.Discovered[forge.scalaplugin.MetacircularTests.type].mains res2: Seq[...] = List( NestedEntry(List("ScalaPlugin"), ..., EntryPoint("run", ...)), NestedEntry(List("Core"), ..., EntryPoint("run", ...) ) @ forge.discover.Discovered[forge.scalaplugin.MetacircularTests.Core.type].mains res3: Seq[...] = List( NestedEntry(List(), ..., EntryPoint("run", ...)) ) ```
* Forked `ammonite.main.Router` into `forge.discover.Router`, to let us ↵Li Haoyi2017-11-051-4/+5
| | | | | | generate routes purely based on a type `T`, as part of the target discovery process. We defer the need for a concrete value of type `T` later until we need to evaluate the route. Eventually this should go upstream into ammonite itself, but forking is easier for now
* Break out reusable JVM specific stuff into its own fileLi Haoyi2017-11-052-2/+9
|
* Split out `ApplicativeMacros` from `Target`Li Haoyi2017-11-051-2/+2
|
* Re-organize `forge/` folder according to ordering of build phases: target ↵Li Haoyi2017-11-052-2/+4
| | | | definition, target discovery, and target evaluation
* Turn on `lihaoyi:acyclic` plugin, enforce it, and break up whatever import ↵Li Haoyi2017-11-051-1/+0
| | | | cycles exist
* Shorted `ScalaDep.Scala(...)`/`ScalaDep.PointScala(...)` into ↵Li Haoyi2017-11-042-9/+10
| | | | `ScalaDep(...)` and `ScalaDep.Point(...)`
* Collapse `LocalDef` into `T{...}` macro, make it more flexible so it only ↵Li Haoyi2017-11-041-1/+1
| | | | | | caches `def`s (and complains about `val`s) if it's defined top-level in a class/trait/object, for easy overriding. If it's in some helper function somewhere, overriding doesn't matter, and it's up to the user to figure out how to construct a target graph without redundancy
* Migrate `MetacircularTests` over to new cached-def mechanismLi Haoyi2017-11-042-29/+30
|