Merge branch 'master' of git@github.com:harrah/xsbt

This commit is contained in:
Mark Harrah 2010-03-26 08:23:01 -04:00
commit 119a09afc2
7 changed files with 39 additions and 17 deletions

View File

@ -1,4 +1,4 @@
Copyright (c) 2008, 2009, 2010 Mark Harrah Copyright (c) 2008, 2009, 2010 Mark Harrah, Jason Zaugg
All rights reserved. All rights reserved.
Redistribution and use in source and binary forms, with or without Redistribution and use in source and binary forms, with or without

4
NOTICE
View File

@ -1,5 +1,5 @@
Simple Build Tool (xsbt) Simple Build Tool (xsbt components other than sbt/)
Copyright 2008, 2009, 2010 Mark Harrah Copyright 2008, 2009, 2010 Mark Harrah, Jason Zaugg
Licensed under BSD-style license (see LICENSE) Licensed under BSD-style license (see LICENSE)
Portions based on code from the Scala compiler. Portions of the Scala Portions based on code from the Scala compiler. Portions of the Scala

View File

@ -1,3 +1,3 @@
Simple Build Tool: Compile Component Simple Build Tool: Compile Component
Copyright 2009, 2010 Mark Harrah Copyright 2009, 2010 Mark Harrah, Jason Zaugg
Licensed under BSD-style license (see LICENSE) Licensed under BSD-style license (see LICENSE)

View File

@ -0,0 +1,23 @@
/* sbt -- Simple Build Tool
* Copyright 2010 Jason Zaugg
*/
package xsbt
import scala.tools.nsc.{CompilerCommand, Settings}
object Command
{
/**
* Construct a CompilerCommand using reflection, to be compatible with Scalac before and after
* <a href="https://lampsvn.epfl.ch/trac/scala/changeset/21274">r21274</a>
*/
def apply(arguments: List[String], settings: Settings): CompilerCommand = {
def constr(params: Class[_]*) = classOf[CompilerCommand].getConstructor(params: _*)
try {
constr(classOf[List[_]], classOf[Settings]).newInstance(arguments, settings)
} catch {
case e: NoSuchMethodException =>
constr(classOf[List[_]], classOf[Settings], classOf[Function1[_, _]], classOf[Boolean]).newInstance(arguments, settings, error _, false.asInstanceOf[AnyRef])
}
}
}

View File

@ -11,13 +11,14 @@ class CompilerInterface
{ {
def run(args: Array[String], callback: AnalysisCallback, maximumErrors: Int, log: Logger) def run(args: Array[String], callback: AnalysisCallback, maximumErrors: Int, log: Logger)
{ {
import scala.tools.nsc.{CompilerCommand, Global, Settings} import scala.tools.nsc.{Global, Settings}
debug(log, "Interfacing (CompilerInterface) with Scala compiler " + scala.tools.nsc.Properties.versionString) debug(log, "Interfacing (CompilerInterface) with Scala compiler " + scala.tools.nsc.Properties.versionString)
val reporter = new LoggerReporter(maximumErrors, log) val reporter = new LoggerReporter(maximumErrors, log)
val settings = new Settings(reporter.error) val settings = new Settings(reporter.error)
val command = new CompilerCommand(args.toList, settings, error, false)
val command = Command(args.toList, settings)
val phasesSet = new scala.collection.mutable.HashSet[Any] // 2.7 compatibility val phasesSet = new scala.collection.mutable.HashSet[Any] // 2.7 compatibility
object compiler extends Global(command.settings, reporter) object compiler extends Global(command.settings, reporter)

View File

@ -12,10 +12,10 @@ class ScaladocInterface
} }
private class Runner(args: Array[String], maximumErrors: Int, log: Logger) private class Runner(args: Array[String], maximumErrors: Int, log: Logger)
{ {
import scala.tools.nsc.{doc, CompilerCommand, Global} import scala.tools.nsc.{doc, Global}
val reporter = new LoggerReporter(maximumErrors, log) val reporter = new LoggerReporter(maximumErrors, log)
val docSettings: doc.Settings = new doc.Settings(reporter.error) val docSettings: doc.Settings = new doc.Settings(reporter.error)
val command = new CompilerCommand(args.toList, docSettings, error, false) val command = Command(args.toList, docSettings)
import forScope._ import forScope._
def run() def run()

View File

@ -3,17 +3,15 @@
* Arguments are passed to javac using an argument file (@). This should fix errors on Windows caused by long command lines. * Arguments are passed to javac using an argument file (@). This should fix errors on Windows caused by long command lines.
* Fixed `console-project` for custom subprojects * Fixed `console-project` for custom subprojects
* Works with Scala 2.8 trunk again. * Works with Scala 2.8 trunk again.
* API Documentation is up again. * [API Documentation](http://simple-build-tool.googlecode.com/svn/artifacts/latest/api/index.html) is up again.
* Fixed logging level behavior on subprojects. * Fixed logging level behavior on subprojects.
### Improvements ### Improvements
* Added `sbt.impl.Arguments` for parsing a command like a normal action (for [http://code.google.com/p/simple-build-tool/wiki/Processors Processors]) * Added `sbt.impl.Arguments` for parsing a command like a normal action (for [Processors](http://code.google.com/p/simple-build-tool/wiki/Processors))
* `Processor` split into `Processor`/`BasicProcessor`. `Processor` provides a high level of integration with command processing. `BasicProcessor` operates on a `Project` but does not affect command processing. See the API documentation for the signature change. * `Processor` split into `Processor`/`BasicProcessor`. `Processor` provides a high level of integration with command processing. `BasicProcessor` operates on a `Project` but does not affect command processing. See the [API documentation](http://simple-build-tool.googlecode.com/svn/artifacts/latest/api/sbt/processor$package.html) for the signature change.
* Can now use Launcher externally, including launching sbt outside of the official jar. This means a `Project` can now be created from tests. * Can now use Launcher externally, including launching sbt outside of the official jar. This means a `Project` can now be created from tests.
* Added `webappUnmanaged: PathFinder` method to `DefaultWebProject`. `Path`s selected by this `PathFinder` will not be pruned by `prepare-webapp` and will not be packaged by package. For example, to exclude the GAE datastore directory:
{{{
override def webappUnmanaged =
(temporaryWarPath / "WEB-INF" / "appengine-generated" ***)
}}}
* Added some String generation methods to `PathFinder`: `toString` for debugging and `absString` and `relativeString` for joining the absolute (relative) paths by the platform separator. * Added some String generation methods to `PathFinder`: `toString` for debugging and `absString` and `relativeString` for joining the absolute (relative) paths by the platform separator.
* All sbt code is now at http://github.com/harrah/xsbt in one project. Instructions for building from source have been updated. * All sbt code is now in a [single github repository](http://github.com/harrah/xsbt). Instructions for building from source have been updated.
* Added `webappUnmanaged: PathFinder` method to `DefaultWebProject`. `Path`s selected by this `PathFinder` will not be pruned by `prepare-webapp` and will not be packaged by package. For example, to exclude the GAE datastore directory:
override def webappUnmanaged = (temporaryWarPath / "WEB-INF" / "appengine-generated" ***)