New generalized launcher

This commit is contained in:
Mark Harrah
2009-09-26 02:18:04 -04:00
parent 76e81409df
commit 56e96c3f49
29 changed files with 851 additions and 500 deletions
@@ -0,0 +1,10 @@
package xsbti;
import java.io.File;
public interface AppConfiguration
{
public String[] arguments();
public File baseDirectory();
public AppProvider provider();
}
@@ -0,0 +1,6 @@
package xsbti;
public interface AppMain
{
public MainResult run(AppConfiguration configuration);
}
@@ -0,0 +1,15 @@
package xsbti;
import java.io.File;
public interface AppProvider
{
public ScalaProvider scalaProvider();
public ApplicationID id();
public Class<? extends AppMain> mainClass();
public AppMain newMain();
public File[] component(String componentID);
public void defineComponent(String componentID, File[] components);
}
@@ -0,0 +1,12 @@
package xsbti;
public interface ApplicationID
{
public String groupID();
public String name();
public String version();
public String mainClass();
public String[] mainComponents();
public boolean crossVersioned();
}
@@ -1,22 +1,7 @@
package xsbti;
import java.io.File;
public interface Launcher extends ScalaProvider, SbtProvider
public interface Launcher
{
public static final int InterfaceVersion = 1;
public void boot(String[] args);
public MainResult checkAndLoad(String[] args);
public MainResult load(String[] args);
public MainResult load(String[] args, String useSbtVersion, String mainClassName, String definitionScalaVersion);
public ClassLoader update(String scalaVersion, String sbtVersion);
public MainResult run(ClassLoader sbtLoader, String mainClassName, SbtConfiguration configuration);
public File BaseDirectory();
public File ProjectDirectory();
public File BootDirectory();
public File PropertiesFile();
public Launcher launcher(File base, String mainClassName);
public ScalaProvider getScala(String version);
}
@@ -1,5 +1,11 @@
package xsbti;
import java.io.File;
public interface Reboot extends MainResult
{
public String[] arguments();
public File baseDirectory();
public String scalaVersion();
public ApplicationID app();
}
@@ -1,10 +0,0 @@
package xsbti;
public interface SbtConfiguration
{
public String[] arguments();
public String scalaVersion();
public String sbtVersion();
public java.io.File baseDirectory();
public Launcher launcher();
}
@@ -1,6 +0,0 @@
package xsbti;
public interface SbtMain
{
public MainResult run(SbtConfiguration configuration);
}
@@ -1,12 +0,0 @@
package xsbti;
import java.io.File;
public interface SbtProvider
{
public ClassLoader createSbtLoader(String sbtVersion, String scalaVersion);
public ClassLoader createSbtLoader(String sbtVersion, String scalaVersion, ClassLoader parentLoader);
public File getSbtHome(String sbtVersion, String scalaVersion);
public File componentLocation(String sbtVersion, String id, String scalaVersion);
}
@@ -4,6 +4,10 @@ import java.io.File;
public interface ScalaProvider
{
public ClassLoader getScalaLoader(String scalaVersion);
public File getScalaHome(String scalaVersion);
public Launcher launcher();
public String version();
public ClassLoader loader();
public File[] jars();
public AppProvider app(ApplicationID id);
}