summaryrefslogtreecommitdiff
path: root/scalaplugin
Commit message (Collapse)AuthorAgeFilesLines
* 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
|
* Implement `ScalaDep` ADT to encapsulate handling on scala cross-version suffixesLi Haoyi2017-11-042-19/+62
|
* `T.apply{}` -> `T{}`Li Haoyi2017-11-041-1/+1
|
* Remove unnecessary deps in `MetacircularTests`Li Haoyi2017-11-041-11/+0
|
* More tweaks to `scalaplugin.Subproject`Li Haoyi2017-11-041-7/+11
|
* Split up forge into `scalaplugin` an `core` subprojects, to allow us to use ↵Li Haoyi2017-11-032-0/+211
the `T#apply` macro in the implementation of `scalaplugin.Subproject` Also needed to implement inter-`Subproject` dependencies so the `MetacircularTests` can continue to support the new layout