initial module builder API prototype
This commit is contained in:
@@ -0,0 +1,47 @@
|
|||||||
|
namespace kotlin.modules
|
||||||
|
|
||||||
|
import java.util.*
|
||||||
|
import jet.modules.*
|
||||||
|
|
||||||
|
class ModuleSetBuilder() {
|
||||||
|
val modules: ArrayList<ModuleBuilder> = ArrayList<ModuleBuilder>()
|
||||||
|
|
||||||
|
fun module(name: String, callback: fun ModuleBuilder.()) {
|
||||||
|
val builder = ModuleBuilder(name)
|
||||||
|
builder.callback()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class SourcesBuilder(val parent: ModuleBuilder) {
|
||||||
|
fun files(pattern: String) {
|
||||||
|
parent.addSourceFiles(pattern)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ClasspathBuilder(val parent: ModuleBuilder) {
|
||||||
|
fun entry(name: String) {
|
||||||
|
parent.addClasspathEntry(name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ModuleBuilder(val name: String): IModuleBuilder {
|
||||||
|
val sourceFiles: ArrayList<String?> = ArrayList<String?>()
|
||||||
|
val classpathRoots: ArrayList<String?> = ArrayList<String?>()
|
||||||
|
|
||||||
|
val source: SourcesBuilder
|
||||||
|
get() = SourcesBuilder(this)
|
||||||
|
|
||||||
|
val classpath: ClasspathBuilder
|
||||||
|
get() = ClasspathBuilder(this)
|
||||||
|
|
||||||
|
fun addSourceFiles(pattern: String) {
|
||||||
|
sourceFiles.add(pattern)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun addClasspathEntry(name: String) {
|
||||||
|
classpathRoots.add(name)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getSourceFiles(): List<String?>? = sourceFiles
|
||||||
|
override fun getClasspathRoots(): List<String?>? = classpathRoots
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package jet.modules;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author yole
|
||||||
|
*/
|
||||||
|
public interface IModuleBuilder {
|
||||||
|
List<String> getSourceFiles();
|
||||||
|
List<String> getClasspathRoots();
|
||||||
|
}
|
||||||
@@ -4,6 +4,7 @@
|
|||||||
<exclude-output />
|
<exclude-output />
|
||||||
<content url="file://$MODULE_DIR$">
|
<content url="file://$MODULE_DIR$">
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/ktSrc" isTestSource="false" />
|
||||||
</content>
|
</content>
|
||||||
<orderEntry type="inheritedJdk" />
|
<orderEntry type="inheritedJdk" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
|||||||
Reference in New Issue
Block a user