mirror of https://github.com/Minres/RDL-Editor.git
59 lines
1.7 KiB
Plaintext
59 lines
1.7 KiB
Plaintext
/*
|
|
* generated by Xtext 2.14.0
|
|
*/
|
|
package com.minres.rdl.generator
|
|
|
|
import com.google.inject.Inject
|
|
import com.google.inject.Provider
|
|
import com.minres.rdl.RDLStandaloneSetup
|
|
import org.eclipse.emf.common.util.URI
|
|
import org.eclipse.emf.ecore.resource.ResourceSet
|
|
import org.eclipse.xtext.generator.GeneratorContext
|
|
import org.eclipse.xtext.generator.GeneratorDelegate
|
|
import org.eclipse.xtext.generator.JavaIoFileSystemAccess
|
|
import org.eclipse.xtext.util.CancelIndicator
|
|
import org.eclipse.xtext.validation.CheckMode
|
|
import org.eclipse.xtext.validation.IResourceValidator
|
|
|
|
class Main {
|
|
|
|
def static main(String[] args) {
|
|
if (args.empty) {
|
|
System::err.println('Aborting: no path to EMF resource provided!')
|
|
return
|
|
}
|
|
val injector = new RDLStandaloneSetup().createInjectorAndDoEMFRegistration
|
|
val main = injector.getInstance(Main)
|
|
main.runGenerator(args.get(0))
|
|
}
|
|
|
|
@Inject Provider<ResourceSet> resourceSetProvider
|
|
|
|
@Inject IResourceValidator validator
|
|
|
|
@Inject GeneratorDelegate generator
|
|
|
|
@Inject JavaIoFileSystemAccess fileAccess
|
|
|
|
def protected runGenerator(String string) {
|
|
// Load the resource
|
|
val set = resourceSetProvider.get
|
|
val resource = set.getResource(URI.createFileURI(string), true)
|
|
|
|
// Validate the resource
|
|
val issues = validator.validate(resource, CheckMode.ALL, CancelIndicator.NullImpl)
|
|
if (!issues.empty) {
|
|
issues.forEach[System.err.println(it)]
|
|
return
|
|
}
|
|
|
|
// Configure and start the generator
|
|
fileAccess.outputPath = 'src-gen/'
|
|
val context = new GeneratorContext => [
|
|
cancelIndicator = CancelIndicator.NullImpl
|
|
]
|
|
generator.generate(resource, fileAccess, context)
|
|
System.out.println('Code generation finished.')
|
|
}
|
|
}
|