package xsbti; import java.io.File; public interface Launcher { public static final int InterfaceVersion = 1; public ScalaProvider getScala(String version); public ScalaProvider getScala(String version, String reason); public ScalaProvider getScala(String version, String reason, String scalaOrg); /** * returns an `AppProvider` which is able to resolve an application * and instantiate its `xsbti.Main` in a new classloader. * See [AppProvider] for more details. * @param id The artifact coordinates of the application. * @param version The version to resolve */ public AppProvider app(ApplicationID id, String version); /** * This returns the "top" classloader for a launched application. This classlaoder * lives somewhere *above* that used for the application. This classloader * is used for doing any sort of JNA/native library loads so that downstream * loaders can share native libraries rather than run into "load-once" restrictions. */ public ClassLoader topLoader(); /** * Return the global lock for interacting with the file system. * * A mechanism to do file-based locking correctly on the JVM. See * the [[GlobalLock]] class for more details. */ public GlobalLock globalLock(); /** Value of the `sbt.boot.dir` property, or the default * boot configuration defined in `boot.directory`. */ public File bootDirectory(); /** Configured launcher repositories. These repositories * are the same ones used to load the launcher. */ public xsbti.Repository[] ivyRepositories(); /** These are the repositories configured by this launcher * which should be used by the application when resolving * further artifacts. */ public xsbti.Repository[] appRepositories(); /** The user has configured the launcher with the only repositories * it wants to use for this applciation. */ public boolean isOverrideRepositories(); /** * The value of `ivy.ivy-home` of the boot properties file. * This defaults to the `sbt.ivy.home` property, or `~/.ivy2`. * Use this setting in an application when using Ivy to resolve * more artifacts. * * @returns a file, or null if not set. */ public File ivyHome(); /** An array of the checksums that should be checked when retreiving artifacts. * Configured via the the `ivy.checksums` section of the boot configuration. * Defaults to sha1, md5 or the value of the `sbt.checksums` property. */ public String[] checksums(); }