Skip to content

Instantly share code, notes, and snippets.

@kralo
Created June 24, 2015 20:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kralo/6b4b53787cab2cd3c372 to your computer and use it in GitHub Desktop.
Save kralo/6b4b53787cab2cd3c372 to your computer and use it in GitHub Desktop.
Example mwe2 Workflow for a code generator working on your own dsl

Xtend / Xtext own dsl and code generator

This is not the workflow for generating the language artifacts!

for everyone else who had managed to make a workflow to generate the language Artifacts but then always had to resort to the "runtime eclipse" for saving a slightly modified file in your dsl language only to let a generator run..

module de.example.crudDsl.generator
import org.eclipse.emf.mwe.utils.*
import de.example.crudDsl.generator.CrudToAppGeneratorSetup
import de.example.crudDsl.generator.CrudToAppGeneratorSupport
var targetDir = "src-gen"
var projectName = "Yourapp"
var baseProjectPath = "../../${projectName}"
var filePath = "../de.example.pizzaInDsl/" // where your model.dsl* files are
Workflow {
bean = StandaloneSetup {}
// //Problem with reading file encoding https://bugs.eclipse.org/bugs/show_bug.cgi?id=409069
// component = DirectoryCleaner {
// directory = targetDir
// exclude = ".git"
// }
component = DirectoryCleaner {
directory = "${baseProjectPath}-EJB/${targetDir}"
exclude = ".git"
exclude = ".gitkeep"
}
component = DirectoryCleaner {
directory = "${baseProjectPath}-Persistence/${targetDir}"
exclude = ".git"
exclude = ".gitkeep"
}
component = DirectoryCleaner {
directory = "${baseProjectPath}-Web/${targetDir}"
exclude = ".git"
exclude = ".gitkeep"
}
component = CrudToAppGeneratorSupport {}
//register uml reader
component = org.eclipse.xtext.mwe.Reader {
path = filePath
register = CrudDslStandaloneSetup {}
loadResource = {
slot = "model"
}
}
//register generator
component = org.eclipse.xtext.generator.GeneratorComponent {
register = CrudToAppGeneratorSetup {}
slot = "model"
outlet = {
path = targetDir
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment