use of org.metaborg.util.cmd.Arguments in project spoofax by metaborg.
the class LanguageSpecBuilder method generateSourcesBuilderInput.
private GenerateSourcesBuilder.Input generateSourcesBuilderInput(LanguageSpecBuildInput input) throws FileSystemException, MetaborgException {
final ISpoofaxLanguageSpec languageSpec = input.languageSpec();
final ISpoofaxLanguageSpecConfig config = languageSpec.config();
final FileObject baseLoc = input.languageSpec().location();
final SpoofaxLangSpecCommonPaths paths = new SpoofaxLangSpecCommonPaths(baseLoc);
final FileObject buildInfoLoc = paths.plutoBuildInfoDir();
final SpoofaxContext context = new SpoofaxContext(baseLoc, buildInfoLoc);
// SDF
final Boolean sdfEnabled = config.sdfEnabled();
final String sdfModule = config.sdfName();
final FileObject sdfFileCandidate;
final SdfVersion sdfVersion = config.sdfVersion();
final Sdf2tableVersion sdf2tableVersion = config.sdf2tableVersion();
switch(sdfVersion) {
case sdf2:
final Iterable<FileObject> sdfRoots = languagePathService.sourcePaths(input.project(), SpoofaxConstants.LANG_SDF_NAME);
sdfFileCandidate = paths.findSyntaxMainFile(sdfRoots, sdfModule);
break;
case sdf3:
sdfFileCandidate = paths.syntaxSrcGenMainFile(sdfModule);
break;
default:
throw new MetaborgException("Unknown SDF version: " + sdfVersion);
}
@Nullable final File sdfFile;
if (sdfFileCandidate != null && sdfFileCandidate.exists()) {
sdfFile = resourceService.localPath(sdfFileCandidate);
} else {
sdfFile = null;
}
@Nullable final File sdfExternalDef;
final String sdfExternalDefStr = config.sdfExternalDef();
if (sdfExternalDefStr != null) {
final FileObject sdfExternalDefLoc = resourceService.resolve(sdfExternalDefStr);
if (!sdfExternalDefLoc.exists()) {
throw new MetaborgException("External SDF definition at " + sdfExternalDefLoc + " does not exist");
}
sdfExternalDef = resourceService.localFile(sdfExternalDefLoc);
} else {
sdfExternalDef = null;
}
final Iterable<FileObject> sdfIncludePaths = languagePathService.sourceAndIncludePaths(languageSpec, SpoofaxConstants.LANG_SDF_NAME);
final FileObject packSdfIncludesReplicateDir = paths.replicateDir().resolveFile("pack-sdf-includes");
packSdfIncludesReplicateDir.delete(new AllFileSelector());
final List<File> packSdfIncludePaths = Lists.newArrayList();
for (FileObject path : sdfIncludePaths) {
if (!path.exists()) {
continue;
}
packSdfIncludePaths.add(resourceService.localFile(path, packSdfIncludesReplicateDir));
}
final Arguments packSdfArgs = config.sdfArgs();
// SDF completions
final String sdfCompletionModule = config.sdfName() + "-completion-insertions";
@Nullable final File sdfCompletionFile;
FileObject sdfCompletionFileCandidate = null;
if (sdf2tableVersion == Sdf2tableVersion.c) {
sdfCompletionFileCandidate = paths.syntaxCompletionMainFile(sdfCompletionModule);
} else if (sdf2tableVersion == Sdf2tableVersion.java || sdf2tableVersion == Sdf2tableVersion.dynamic) {
sdfCompletionFileCandidate = paths.syntaxCompletionMainFileNormalized(sdfCompletionModule);
}
boolean dataDependent = config.dataDependent();
if (sdfCompletionFileCandidate != null && sdfCompletionFileCandidate.exists()) {
sdfCompletionFile = resourceService.localPath(sdfCompletionFileCandidate);
} else {
sdfCompletionFile = null;
}
// Meta-SDF
final Iterable<FileObject> sdfRoots = languagePathService.sourcePaths(input.project(), SpoofaxConstants.LANG_SDF_NAME);
final String sdfMetaModule = config.metaSdfName();
final FileObject sdfMetaFileCandidate = paths.findSyntaxMainFile(sdfRoots, sdfMetaModule);
@Nullable final File sdfMetaFile;
if (sdfMetaFileCandidate != null && sdfMetaFileCandidate.exists()) {
sdfMetaFile = resourceService.localPath(sdfMetaFileCandidate);
} else {
sdfMetaFile = null;
}
// Stratego
final String strModule = config.strategoName();
final Iterable<FileObject> strRoots = languagePathService.sourcePaths(input.project(), SpoofaxConstants.LANG_STRATEGO_NAME);
final FileObject strFileCandidate = paths.findStrMainFile(strRoots, strModule);
@Nullable final File strFile;
if (strFileCandidate != null && strFileCandidate.exists()) {
strFile = resourceService.localPath(strFileCandidate);
} else {
strFile = null;
}
final String strStratPkg = paths.strJavaTransPkg(config.identifier().id);
final String strJavaStratPkg = paths.strJavaStratPkg(config.identifier().id);
final FileObject strJavaStratFileCandidate = paths.strMainJavaStratFile(config.identifier().id);
@Nullable final File strJavaStratFile;
if (strJavaStratFileCandidate.exists()) {
strJavaStratFile = resourceService.localPath(strJavaStratFileCandidate);
} else {
strJavaStratFile = null;
}
final StrategoFormat strFormat = config.strFormat();
@Nullable final File strExternalJar;
final String strExternalJarStr = config.strExternalJar();
if (strExternalJarStr != null) {
final FileObject strExternalJarLoc = resourceService.resolve(strExternalJarStr);
if (!strExternalJarLoc.exists()) {
throw new MetaborgException("External Stratego JAR at " + strExternalJarLoc + " does not exist");
}
strExternalJar = resourceService.localFile(strExternalJarLoc);
} else {
strExternalJar = null;
}
final String strExternalJarFlags = config.strExternalJarFlags();
final Iterable<FileObject> strIncludePaths = languagePathService.sourceAndIncludePaths(languageSpec, SpoofaxConstants.LANG_STRATEGO_NAME);
final FileObject strjIncludesReplicateDir = paths.replicateDir().resolveFile("strj-includes");
strjIncludesReplicateDir.delete(new AllFileSelector());
final List<File> strjIncludeDirs = Lists.newArrayList();
final List<File> strjIncludeFiles = Lists.newArrayList();
for (FileObject path : strIncludePaths) {
if (!path.exists()) {
continue;
}
if (path.isFolder()) {
strjIncludeDirs.add(resourceService.localFile(path, strjIncludesReplicateDir));
}
if (path.isFile()) {
strjIncludeFiles.add(resourceService.localFile(path, strjIncludesReplicateDir));
}
}
final Arguments strjArgs = config.strArgs();
return new GenerateSourcesBuilder.Input(context, config.identifier().id, config.sourceDeps(), sdfEnabled, sdfModule, sdfFile, sdfVersion, sdf2tableVersion, dataDependent, sdfExternalDef, packSdfIncludePaths, packSdfArgs, sdfCompletionModule, sdfCompletionFile, sdfMetaModule, sdfMetaFile, strFile, strStratPkg, strJavaStratPkg, strJavaStratFile, strFormat, strExternalJar, strExternalJarFlags, strjIncludeDirs, strjIncludeFiles, strjArgs);
}
use of org.metaborg.util.cmd.Arguments in project spoofax by metaborg.
the class SpoofaxLanguageSpecConfig method strArgs.
@Override
public Arguments strArgs() {
@Nullable final List<String> values = config.getList(String.class, PROP_STR_ARGS);
final Arguments arguments = new Arguments();
if (values != null) {
for (String value : values) {
arguments.add(value);
}
}
return arguments;
}
use of org.metaborg.util.cmd.Arguments in project spoofax by metaborg.
the class GenerateSourcesBuilder method build.
@Override
public None build(GenerateSourcesBuilder.Input input) throws IOException {
final File srcGenSigDir = toFile(paths.syntaxSrcGenSignatureDir());
final File srcGenSyntaxDir = toFile(paths.syntaxSrcGenDir());
final File srcGenSyntaxCompletionDir = toFile(paths.syntaxCompletionSrcGenDir());
final File srcGenPpDir = toFile(paths.syntaxSrcGenPpDir());
final File targetMetaborgDir = toFile(paths.targetMetaborgDir());
// SDF
@Nullable final Origin parenthesizeOrigin;
@Nullable final Origin javaParenthesizeOrigin;
@Nullable final Origin sigOrigin;
if (input.sdfModule != null && input.sdfEnabled) {
final String sdfModule = input.sdfModule;
final File sdfFile = input.sdfFile;
// new parse table generator
if (input.sdf2tableVersion == Sdf2tableVersion.java || input.sdf2tableVersion == Sdf2tableVersion.dynamic || input.sdf2tableVersion == Sdf2tableVersion.incremental) {
// Get JSGLR parse table from the normalized SDF aterm
final boolean dynamicGeneration = (input.sdf2tableVersion == Sdf2tableVersion.dynamic || input.sdf2tableVersion == Sdf2tableVersion.incremental);
final boolean dataDependent = input.dataDependent;
final File srcNormDir = toFile(paths.syntaxNormDir());
final File tableFile = FileUtils.getFile(targetMetaborgDir, "sdf.tbl");
final File contextualGrammarFile = FileUtils.getFile(targetMetaborgDir, "ctxgrammar.aterm");
final File persistedTableFile = FileUtils.getFile(targetMetaborgDir, "table.bin");
final File sdfNormFile = FileUtils.getFile(srcNormDir, "permissive-norm.aterm");
final List<String> paths = Lists.newLinkedList();
paths.add(srcGenSyntaxDir.getAbsolutePath());
for (LanguageIdentifier langId : input.sourceDeps) {
ILanguageImpl lang = context.languageService().getImpl(langId);
for (final ILanguageComponent component : lang.components()) {
ILanguageComponentConfig config = component.config();
Collection<IExportConfig> exports = config.exports();
for (IExportConfig exportConfig : exports) {
exportConfig.accept(new IExportVisitor() {
@Override
public void visit(LangDirExport export) {
if (export.language.equals(SpoofaxConstants.LANG_ATERM_NAME)) {
try {
paths.add(toFileReplicate(component.location().resolveFile(export.directory)).getAbsolutePath());
} catch (FileSystemException e) {
System.out.println("Failed to locate path");
e.printStackTrace();
}
}
}
@Override
public void visit(LangFileExport export) {
// Ignore file exports
}
@Override
public void visit(ResourceExport export) {
// Ignore resource exports
}
});
}
}
}
final Origin sdf2TableJavaOrigin = Sdf2Table.origin(new Sdf2Table.Input(context, sdfNormFile, tableFile, persistedTableFile, contextualGrammarFile, paths, dynamicGeneration, dataDependent));
requireBuild(sdf2TableJavaOrigin);
// New parenthesizer
final File parenthesizerFile = FileUtils.getFile(srcGenPpDir, sdfModule + "-parenthesize.str");
javaParenthesizeOrigin = Sdf2Parenthesize.origin(new Sdf2Parenthesize.Input(context, persistedTableFile, parenthesizerFile, sdfModule));
parenthesizeOrigin = null;
sigOrigin = null;
} else {
// Get the SDF def file, either from existing external def, or by running pack SDF on the grammar
// specification.
@Nullable final File packSdfFile;
@Nullable final Origin packSdfOrigin;
if (input.sdfExternalDef != null) {
packSdfFile = input.sdfExternalDef;
packSdfOrigin = null;
} else if (sdfFile != null) {
require(sdfFile, FileExistsStamper.instance);
if (!sdfFile.exists()) {
throw new IOException("Main SDF file at " + sdfFile + " does not exist");
}
packSdfFile = FileUtils.getFile(srcGenSyntaxDir, sdfModule + ".def");
packSdfOrigin = PackSdf.origin(new PackSdf.Input(context, sdfModule, sdfFile, packSdfFile, input.packSdfIncludePaths, input.packSdfArgs, null));
} else {
packSdfFile = null;
packSdfOrigin = null;
}
if (packSdfFile != null) {
// file.
if (input.sdfExternalDef != null || input.sdfVersion == SdfVersion.sdf2) {
final File rtgFile = FileUtils.getFile(srcGenSigDir, sdfModule + ".rtg");
final Origin rtgOrigin = Sdf2Rtg.origin(new Sdf2Rtg.Input(context, packSdfFile, rtgFile, sdfModule, packSdfOrigin));
final File sigFile = FileUtils.getFile(srcGenSigDir, sdfModule + ".str");
final String sigModule = "signatures/" + sdfModule;
sigOrigin = Rtg2Sig.origin(new Rtg2Sig.Input(context, rtgFile, sigFile, sigModule, rtgOrigin));
} else {
sigOrigin = null;
}
// Get Stratego parenthesizer file, from the SDF def file.
final File parenthesizeFile = FileUtils.getFile(srcGenPpDir, sdfModule + "-parenthesize.str");
final String parenthesizeModule = "pp/" + sdfModule + "-parenthesize";
parenthesizeOrigin = Sdf2ParenthesizeLegacy.origin(new Sdf2ParenthesizeLegacy.Input(context, packSdfFile, parenthesizeFile, sdfModule, parenthesizeModule, packSdfOrigin));
// Get SDF permissive def file, from the SDF def file.
final File permissiveDefFile = FileUtils.getFile(srcGenSyntaxDir, sdfModule + "-permissive.def");
final Origin permissiveDefOrigin = MakePermissive.origin(new MakePermissive.Input(context, packSdfFile, permissiveDefFile, sdfModule, packSdfOrigin));
// Get JSGLR parse table, from the SDF permissive def file.
final File tableFile = FileUtils.getFile(targetMetaborgDir, "sdf.tbl");
final Origin sdf2TableOrigin = Sdf2TableLegacy.origin(new Sdf2TableLegacy.Input(context, permissiveDefFile, tableFile, sdfModule, permissiveDefOrigin));
requireBuild(sdf2TableOrigin);
javaParenthesizeOrigin = null;
} else {
javaParenthesizeOrigin = null;
parenthesizeOrigin = null;
sigOrigin = null;
}
}
} else {
javaParenthesizeOrigin = null;
parenthesizeOrigin = null;
sigOrigin = null;
}
// SDF completions
final Origin sdfCompletionOrigin;
if (input.sdfCompletionFile != null && input.sdfEnabled) {
final String sdfCompletionsModule = input.sdfCompletionModule;
final File sdfCompletionsFile = input.sdfCompletionFile;
if (input.sdf2tableVersion == Sdf2tableVersion.java || input.sdf2tableVersion == Sdf2tableVersion.dynamic || input.sdf2tableVersion == Sdf2tableVersion.incremental) {
// Get JSGLR parse table, from the normalized SDF aterm
final boolean dynamicGeneration = (input.sdf2tableVersion == Sdf2tableVersion.dynamic || input.sdf2tableVersion == Sdf2tableVersion.incremental);
final boolean dataDependent = input.dataDependent;
final List<String> paths = Lists.newLinkedList();
paths.add(srcGenSyntaxDir.getAbsolutePath());
for (LanguageIdentifier langId : input.sourceDeps) {
ILanguageImpl lang = context.languageService().getImpl(langId);
for (final ILanguageComponent component : lang.components()) {
ILanguageComponentConfig config = component.config();
Collection<IExportConfig> exports = config.exports();
for (IExportConfig exportConfig : exports) {
exportConfig.accept(new IExportVisitor() {
@Override
public void visit(LangDirExport export) {
if (export.language.equals(SpoofaxConstants.LANG_ATERM_NAME)) {
try {
paths.add(toFileReplicate(component.location().resolveFile(export.directory)).getAbsolutePath());
} catch (FileSystemException e) {
System.out.println("Failed to locate path");
e.printStackTrace();
}
}
}
@Override
public void visit(LangFileExport export) {
// Ignore file exports
}
@Override
public void visit(ResourceExport export) {
// Ignore resource exports
}
});
}
}
}
final File tableFile = FileUtils.getFile(targetMetaborgDir, "sdf-completions.tbl");
sdfCompletionOrigin = Sdf2Table.origin(new Sdf2Table.Input(context, sdfCompletionsFile, tableFile, null, null, paths, dynamicGeneration, dataDependent));
requireBuild(sdfCompletionOrigin);
} else {
// Get the SDF def file, either from existing external def, or by running pack SDF on the grammar
// specification.
@Nullable final File packSdfCompletionsFile;
@Nullable final Origin packSdfCompletionsOrigin;
if (sdfCompletionsFile != null) {
require(sdfCompletionsFile, FileExistsStamper.instance);
if (!sdfCompletionsFile.exists()) {
throw new IOException("Main SDF completions file at " + sdfCompletionsFile + " does not exist");
}
packSdfCompletionsFile = FileUtils.getFile(srcGenSyntaxCompletionDir, sdfCompletionsModule + ".def");
packSdfCompletionsOrigin = PackSdf.origin(new PackSdf.Input(context, sdfCompletionsModule, sdfCompletionsFile, packSdfCompletionsFile, input.packSdfIncludePaths, input.packSdfArgs, null));
} else {
packSdfCompletionsFile = null;
packSdfCompletionsOrigin = null;
}
if (packSdfCompletionsFile != null) {
// Get SDF permissive def file, from the SDF def file.
final File permissiveCompletionsDefFile = FileUtils.getFile(srcGenSyntaxCompletionDir, sdfCompletionsModule + "-permissive.def");
final Origin permissiveCompletionsDefOrigin = MakePermissive.origin(new MakePermissive.Input(context, packSdfCompletionsFile, permissiveCompletionsDefFile, sdfCompletionsModule, packSdfCompletionsOrigin));
// Get JSGLR parse table, from the SDF permissive def file.
final File completionsTableFile = FileUtils.getFile(targetMetaborgDir, "sdf-completions.tbl");
sdfCompletionOrigin = Sdf2TableLegacy.origin(new Sdf2TableLegacy.Input(context, permissiveCompletionsDefFile, completionsTableFile, "completion/" + sdfCompletionsModule, permissiveCompletionsDefOrigin));
requireBuild(sdfCompletionOrigin);
} else {
sdfCompletionOrigin = null;
}
}
} else {
sdfCompletionOrigin = null;
}
// SDF meta-module for creating a Stratego concrete syntax extension parse table
final File sdfMetaFile = input.sdfMetaFile;
final Origin sdfMetaOrigin;
if (sdfMetaFile != null) {
require(sdfMetaFile, FileExistsStamper.instance);
if (!sdfMetaFile.exists()) {
throw new IOException("Main meta-SDF file at " + sdfMetaFile + " does not exist");
}
final String sdfMetaModule = input.sdfMetaModule;
final BuildRequest<PrepareNativeBundle.Input, OutputTransient<PrepareNativeBundle.Output>, PrepareNativeBundle, SpoofaxBuilderFactory<PrepareNativeBundle.Input, OutputTransient<PrepareNativeBundle.Output>, PrepareNativeBundle>> nativeBundleRequest = PrepareNativeBundle.request(new PrepareNativeBundle.Input(context));
final File strategoMixFile = requireBuild(nativeBundleRequest).val().strategoMixFile;
final Origin strategoMixOrigin = Origin.from(nativeBundleRequest);
final Arguments packSdfMetaArgs = new Arguments(input.packSdfArgs);
packSdfMetaArgs.addFile("-Idef", strategoMixFile);
final File packSdfFile = FileUtils.getFile(srcGenSyntaxDir, sdfMetaModule + ".def");
final Origin packSdfOrigin = PackSdf.origin(new PackSdf.Input(context, sdfMetaModule, sdfMetaFile, packSdfFile, input.packSdfIncludePaths, packSdfMetaArgs, strategoMixOrigin));
final File permissiveDefFile = FileUtils.getFile(srcGenSyntaxDir, sdfMetaModule + "-permissive.def");
final Origin permissiveDefOrigin = MakePermissive.origin(new MakePermissive.Input(context, packSdfFile, permissiveDefFile, sdfMetaModule, packSdfOrigin));
final File transDir = toFile(paths.transDir());
final File tableFile = FileUtils.getFile(transDir, sdfMetaModule + ".tbl");
sdfMetaOrigin = Sdf2TableLegacy.origin(new Sdf2TableLegacy.Input(context, permissiveDefFile, tableFile, sdfMetaModule, permissiveDefOrigin));
requireBuild(sdfMetaOrigin);
} else {
sdfMetaOrigin = null;
}
// Stratego
final File strFile = input.strFile;
if (strFile != null) {
require(strFile, FileExistsStamper.instance);
if (!strFile.exists()) {
throw new IOException("Main Stratego file at " + strFile + " does not exist");
}
boolean buildStrJavaStrat = input.strJavaStratPackage != null && input.strJavaStratFile != null;
if (buildStrJavaStrat) {
require(input.strJavaStratFile, FileExistsStamper.instance);
if (!input.strJavaStratFile.exists()) {
throw new IOException("Main Stratego Java strategies file at " + input.strJavaStratFile + " does not exist");
}
}
final Arguments extraArgs = new Arguments();
extraArgs.addAll(input.strjArgs);
final File outputFile;
final File depPath;
if (input.strFormat == StrategoFormat.ctree) {
outputFile = FileUtils.getFile(targetMetaborgDir, "stratego.ctree");
depPath = outputFile;
extraArgs.add("-F");
} else {
depPath = toFile(paths.strSrcGenJavaTransDir(input.languageId));
outputFile = FileUtils.getFile(depPath, "Main.java");
extraArgs.add("-la", "java-front");
if (buildStrJavaStrat) {
extraArgs.add("-la", input.strJavaStratPackage);
}
}
if (input.strExternalJarFlags != null) {
extraArgs.addLine(input.strExternalJarFlags);
}
// @formatter:off
final Origin origin;
if (input.sdf2tableVersion == Sdf2tableVersion.java || input.sdf2tableVersion == Sdf2tableVersion.dynamic) {
origin = Origin.Builder().add(sigOrigin).add(sdfCompletionOrigin).add(sdfMetaOrigin).add(javaParenthesizeOrigin).get();
} else {
origin = Origin.Builder().add(parenthesizeOrigin).add(sigOrigin).add(sdfCompletionOrigin).add(sdfMetaOrigin).get();
}
// @formatter:on
final File cacheDir = toFile(paths.strCacheDir());
final Strj.Input strjInput = new Strj.Input(context, strFile, outputFile, depPath, input.strJavaPackage, true, true, input.strjIncludeDirs, input.strjIncludeFiles, Lists.newArrayList(), cacheDir, extraArgs, origin);
final Origin strjOrigin = Strj.origin(strjInput);
requireBuild(strjOrigin);
// Typesmart
final File typesmartExportedFile = toFile(paths.strTypesmartExportedFile());
final Typesmart.Input typesmartInput = new Typesmart.Input(context, input.strFile, input.strjIncludeDirs, typesmartExportedFile, origin);
final Origin typesmartOrigin = Typesmart.origin(typesmartInput);
requireBuild(typesmartOrigin);
}
return None.val;
}
use of org.metaborg.util.cmd.Arguments in project spoofax by metaborg.
the class PackSdf method build.
@Override
public OutputPersisted<File> build(Input input) throws IOException {
require(input.inputFile);
if (input.origin != null) {
requireBuild(input.origin);
}
final Arguments args = new Arguments();
args.addAll(input.extraArgs);
for (File path : input.includePaths) {
require(path, FileExistsStamper.instance);
if (!path.exists()) {
continue;
}
if (FilenameUtils.isExtension(path.getName(), "def")) {
args.addFile("-Idef", path);
} else {
/*
* HACK: for full incremental soundness, a require on the directory is needed here, since new files can
* be added to the path, which influence pack-sdf. However, since the Spoofax build generates new files
* into some of these directories, that would cause the requirement to always be inconsistent, always
* triggering a rebuild. This is why we omit the requirement.
*
* seba: This could be solved using a customary stamper that only tracks files matching some naming
* convention.
*/
args.addFile("-I", path);
}
}
// @formatter:off
final Arguments arguments = new Arguments().addFile("-i", input.inputFile).addFile("-o", input.outputFile).addAll(args);
final ExecutionResult result = new StrategoExecutor().withToolsContext().withStrategy(main_pack_sdf_0_0.instance).withTracker(newResourceTracker(Pattern.quote(" including ") + ".*")).withName("pack-sdf").executeCLI(arguments);
// @formatter:on
provide(input.outputFile);
for (File required : extractRequiredPaths(result.errLog)) {
require(required);
}
setState(State.finished(result.success));
return OutputPersisted.of(input.outputFile);
}
use of org.metaborg.util.cmd.Arguments in project spoofax by metaborg.
the class Sdf2Rtg method build.
@Override
public OutputPersisted<File> build(Input input) throws IOException {
requireBuild(input.origin);
if (SpoofaxContext.BETTER_STAMPERS) {
require(input.inputFile, new Sdf2RtgStamper(input.context));
} else {
require(input.inputFile);
}
// @formatter:off
final Arguments arguments = new Arguments().addFile("-i", input.inputFile).add("-m", input.module).addFile("-o", input.outputFile).add("--ignore-missing-cons");
final ExecutionResult result = new StrategoExecutor().withToolsContext().withStrategy(main_sdf2rtg_0_0.instance).withTracker(newResourceTracker(Pattern.quote("Invoking native tool") + ".*")).withName("sdf2rtg").executeCLI(arguments);
// @formatter:on
provide(input.outputFile);
setState(State.finished(result.success));
return OutputPersisted.of(input.outputFile);
}
Aggregations