mirror of
https://github.com/Minres/RDL-Editor.git
synced 2025-07-07 16:23:26 +02:00
adds more configurability of output
This commit is contained in:
@ -59,44 +59,47 @@ class Main {
|
||||
|
||||
def run(String[] args) {
|
||||
val opt = new Options(args, 0, Integer.MAX_VALUE);
|
||||
opt.getSet().addOption("h", Multiplicity.ZERO_OR_ONE);
|
||||
opt.getSet().addOption("v", Multiplicity.ZERO_OR_ONE);
|
||||
opt.getSet().addOption("f", Multiplicity.ZERO_OR_ONE);
|
||||
opt.getSet().addOption("n", Separator.BLANK, Multiplicity.ZERO_OR_ONE);
|
||||
opt.getSet().addOption("o", Separator.BLANK, Multiplicity.ZERO_OR_ONE);
|
||||
opt.getSet().addOption("I", Separator.BLANK, Multiplicity.ZERO_OR_ONE);
|
||||
opt.getSet().addOption("fw", Multiplicity.ZERO_OR_ONE);
|
||||
opt.getSet().addOption("sc", Multiplicity.ZERO_OR_ONE);
|
||||
val optionSet = opt.getSet()
|
||||
optionSet.addOption("h", Multiplicity.ZERO_OR_ONE);
|
||||
optionSet.addOption("v", Multiplicity.ZERO_OR_ONE);
|
||||
optionSet.addOption("f", Multiplicity.ZERO_OR_ONE);
|
||||
optionSet.addOption("n", Separator.BLANK, Multiplicity.ZERO_OR_ONE);
|
||||
optionSet.addOption("o", Separator.BLANK, Multiplicity.ZERO_OR_ONE);
|
||||
optionSet.addOption("I", Separator.BLANK, Multiplicity.ZERO_OR_ONE);
|
||||
optionSet.addOption("fw", Multiplicity.ZERO_OR_ONE);
|
||||
optionSet.addOption("sc", Multiplicity.ZERO_OR_ONE);
|
||||
optionSet.addOption("sc-dir", Separator.BLANK, Multiplicity.ZERO_OR_ONE);
|
||||
optionSet.addOption("fw-dir", Separator.BLANK, Multiplicity.ZERO_OR_ONE);
|
||||
if (!opt.check(false, false)) { // Print usage hints
|
||||
System.err.println("Usage is: " + USAGE_STR);
|
||||
throw new MalformedParametersException(opt.getCheckErrors());
|
||||
}
|
||||
// Normal processing
|
||||
if (opt.getSet().isSet("h")) {
|
||||
if (optionSet.isSet("h")) {
|
||||
println("Usage: " + USAGE_STR);
|
||||
return
|
||||
}
|
||||
val verbose = if(opt.getSet().isSet("v")) true else false;
|
||||
val verbose = if(optionSet.isSet("v")) true else false;
|
||||
val setup = new StandaloneSetup()
|
||||
if (opt.getSet().isSet("I")) {
|
||||
if (optionSet.isSet("I")) {
|
||||
val projectMapping = new ProjectMapping
|
||||
projectMapping.projectName = "RDL Repository"
|
||||
projectMapping.path = new File(opt.getSet().getOption("I").getResultValue(0)).canonicalFile.absolutePath
|
||||
projectMapping.path = new File(optionSet.getOption("I").getResultValue(0)).canonicalFile.absolutePath
|
||||
setup.addProjectMapping(projectMapping)
|
||||
}
|
||||
// Configure and start the generator
|
||||
fileAccess.outputPath = 'src-gen/'
|
||||
if(opt.getSet().isSet('o')){
|
||||
fileAccess.outputPath = opt.getSet().getOption('o').getResultValue(0)
|
||||
if(optionSet.isSet('o')){
|
||||
fileAccess.outputPath = optionSet.getOption('o').getResultValue(0)
|
||||
fileAccess.outputConfigurations.get(IFileSystemAccess.DEFAULT_OUTPUT)?.setOverrideExistingResources(true)
|
||||
}
|
||||
val context = new RdlGeneratorContext => [cancelIndicator = CancelIndicator.NullImpl]
|
||||
context.forceOverwrite= opt.getSet().isSet('f')
|
||||
if(opt.getSet().isSet('n'))
|
||||
context.namespace=opt.getSet().getOption('n').getResultValue(0)
|
||||
context.generateFw=opt.getSet().isSet('fw')
|
||||
context.generateSc=opt.getSet().isSet('sc')
|
||||
opt.getSet().getData().forEach [ String fileName |
|
||||
context.forceOverwrite= optionSet.isSet('f')
|
||||
if(optionSet.isSet('n'))
|
||||
context.namespace=optionSet.getOption('n').getResultValue(0)
|
||||
context.generateFw=optionSet.isSet('fw')
|
||||
context.generateSc=optionSet.isSet('sc')
|
||||
optionSet.getData().forEach [ String fileName |
|
||||
if(verbose) println("Processing " + fileName);
|
||||
// Load the resource
|
||||
val resourceSet = resourceSetProvider.get as XtextResourceSet
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.minres.rdl.generator;
|
||||
|
||||
/**
|
||||
* see also https://www.infoworld.com/article/2074849/processing-command-line-arguments-in-java--case-closed.html
|
||||
* The central class for option processing. Sets are identified by their name, but there is also
|
||||
* an anonymous default set, which is very convenient if an application requieres only one set.
|
||||
*/
|
||||
|
@ -24,12 +24,12 @@ class RDLGenerator extends AbstractGenerator {
|
||||
if((p1=='fw' && genFW) || (p1!='fw' && genSC)) {
|
||||
val header = gen.generateHeader(namespace)
|
||||
val prefix = if(p1=="fw") 'fw-' else 'sc-'
|
||||
val inclFileName = p1+'/'+it.effectiveName+'.h'
|
||||
val inclFileName = (if(p1=="gen") p1 else '.') + '/'+it.effectiveName+'.h'
|
||||
val inclCfg = fsa.outputConfig(prefix+'incl-out')
|
||||
if((force || !fsa.isFile(inclFileName, inclCfg) || gen.overwrite) && header!==null && header.length>0)
|
||||
fsa.generateFile(inclFileName, inclCfg, header)
|
||||
val source = gen.generateSource(namespace)
|
||||
val srcFileName = p1+'/'+it.effectiveName+'.cpp'
|
||||
val srcFileName = (if(p1=="gen") p1 else '.') + '/'+it.effectiveName+'.cpp'
|
||||
val srcCfg = fsa.outputConfig(prefix+'src-out')
|
||||
if((force || !fsa.isFile(srcFileName, srcCfg) || gen.overwrite) && source!==null && source.length>0)
|
||||
fsa.generateFile(srcFileName, srcCfg, source)
|
||||
|
Reference in New Issue
Block a user