[Editor] Create working compiler scaffolding
This commit is contained in:
@@ -0,0 +1,5 @@
|
|||||||
|
package com.bartlomiejpluta.base.editor.code.compiler
|
||||||
|
|
||||||
|
interface CompilingService {
|
||||||
|
fun compile()
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package com.bartlomiejpluta.base.editor.code.compiler
|
||||||
|
|
||||||
|
import com.bartlomiejpluta.base.editor.code.model.FileSystemNode
|
||||||
|
import com.bartlomiejpluta.base.editor.project.context.ProjectContext
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired
|
||||||
|
import org.springframework.stereotype.Component
|
||||||
|
|
||||||
|
@Component
|
||||||
|
class DefaultCompilingService : CompilingService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private lateinit var compiler: ScriptCompiler
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private lateinit var projectContext: ProjectContext
|
||||||
|
|
||||||
|
override fun compile() {
|
||||||
|
projectContext.project?.codeDirectory
|
||||||
|
?.let { FileSystemNode(it) }
|
||||||
|
?.let { compiler.compile(it) }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package com.bartlomiejpluta.base.editor.code.compiler
|
||||||
|
|
||||||
|
import com.bartlomiejpluta.base.editor.code.model.FileSystemNode
|
||||||
|
import org.codehaus.janino.CompilerFactory
|
||||||
|
import org.springframework.stereotype.Component
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
@Component
|
||||||
|
class JavaCompiler : ScriptCompiler {
|
||||||
|
private val compilerFactory = CompilerFactory()
|
||||||
|
|
||||||
|
override fun compile(sourceDirectory: FileSystemNode) {
|
||||||
|
val files = sourceDirectory.allChildren.map(FileSystemNode::file).filter(File::isFile)
|
||||||
|
val compiler = compilerFactory.newCompiler()
|
||||||
|
|
||||||
|
compiler.compile(files.toTypedArray())
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.bartlomiejpluta.base.editor.code.compiler
|
||||||
|
|
||||||
|
import com.bartlomiejpluta.base.editor.code.model.FileSystemNode
|
||||||
|
|
||||||
|
interface ScriptCompiler {
|
||||||
|
fun compile(sourceDirectory: FileSystemNode)
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.bartlomiejpluta.base.editor.main.view
|
package com.bartlomiejpluta.base.editor.main.view
|
||||||
|
|
||||||
|
import com.bartlomiejpluta.base.editor.code.compiler.CompilingService
|
||||||
import com.bartlomiejpluta.base.editor.main.controller.MainController
|
import com.bartlomiejpluta.base.editor.main.controller.MainController
|
||||||
import com.bartlomiejpluta.base.editor.project.context.ProjectContext
|
import com.bartlomiejpluta.base.editor.project.context.ProjectContext
|
||||||
import tornadofx.*
|
import tornadofx.*
|
||||||
@@ -7,6 +8,7 @@ import tornadofx.*
|
|||||||
class MainMenuView : View() {
|
class MainMenuView : View() {
|
||||||
private val mainController: MainController by di()
|
private val mainController: MainController by di()
|
||||||
private val projectContext: ProjectContext by di()
|
private val projectContext: ProjectContext by di()
|
||||||
|
private val compilingService: CompilingService by di()
|
||||||
|
|
||||||
override val root = menubar {
|
override val root = menubar {
|
||||||
menu("File") {
|
menu("File") {
|
||||||
@@ -49,5 +51,15 @@ class MainMenuView : View() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
menu("Build") {
|
||||||
|
enableWhen(projectContext.projectProperty.isNotNull)
|
||||||
|
|
||||||
|
item("Compile") {
|
||||||
|
action {
|
||||||
|
compilingService.compile()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user