summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--org.genivi.commonapi.core.cli/plugin.xml9
-rw-r--r--org.genivi.commonapi.core.cli/src/org/genivi/commonapi/core/cli/CommandLineHandler.java5
-rw-r--r--org.genivi.commonapi.core.cli/src/org/genivi/commonapi/core/cli/CommandlineToolMain.java13
-rw-r--r--org.genivi.commonapi.core/src/org/genivi/commonapi/core/generator/FTypeGenerator.xtend2
-rw-r--r--org.genivi.commonapi.core/src/org/genivi/commonapi/core/preferences/FPreferences.java23
-rw-r--r--org.genivi.commonapi.core/src/org/genivi/commonapi/core/preferences/PreferenceConstants.java1
6 files changed, 51 insertions, 2 deletions
diff --git a/org.genivi.commonapi.core.cli/plugin.xml b/org.genivi.commonapi.core.cli/plugin.xml
index a117de6..72211b1 100644
--- a/org.genivi.commonapi.core.cli/plugin.xml
+++ b/org.genivi.commonapi.core.cli/plugin.xml
@@ -58,6 +58,15 @@
shortName="d">
</option>
<option
+ argCount="0"
+ description="Use subdir per interface"
+ hasOptionalArg="false"
+ id="org.genivi.commonapi.core.cli.option.dir.subdirs"
+ longName="dest-subdirs"
+ required="false"
+ shortName="dsub">
+ </option>
+ <option
argCount="1"
description="The directory for the common code"
hasOptionalArg="false"
diff --git a/org.genivi.commonapi.core.cli/src/org/genivi/commonapi/core/cli/CommandLineHandler.java b/org.genivi.commonapi.core.cli/src/org/genivi/commonapi/core/cli/CommandLineHandler.java
index fbc1fe2..de23ca3 100644
--- a/org.genivi.commonapi.core.cli/src/org/genivi/commonapi/core/cli/CommandLineHandler.java
+++ b/org.genivi.commonapi.core.cli/src/org/genivi/commonapi/core/cli/CommandLineHandler.java
@@ -97,6 +97,11 @@ public class CommandLineHandler extends AbstractCommandLineHandler implements
cliTool.setDefaultDirectory(parsedArguments.getOptionValue("d"));
}
+ // destination: -dsub --dest-subdirs use destination/<filename>/ subdirs
+ // as dest directory
+ if(parsedArguments.hasOption("dsub")) {
+ cliTool.setDestinationSubdirs();
+ }
// destination: -dc --dest-common overwrite target directory for common part
if(parsedArguments.hasOption("dc")) {
cliTool.setCommonDirectory(parsedArguments.getOptionValue("dc"));
diff --git a/org.genivi.commonapi.core.cli/src/org/genivi/commonapi/core/cli/CommandlineToolMain.java b/org.genivi.commonapi.core.cli/src/org/genivi/commonapi/core/cli/CommandlineToolMain.java
index c7be6ab..bc85c20 100644
--- a/org.genivi.commonapi.core.cli/src/org/genivi/commonapi/core/cli/CommandlineToolMain.java
+++ b/org.genivi.commonapi.core.cli/src/org/genivi/commonapi/core/cli/CommandlineToolMain.java
@@ -145,6 +145,14 @@ public class CommandlineToolMain extends CommandlineTool {
} else if (isCodeGeneration) {
ConsoleLogger.printLog("Generating code for " + file);
try {
+ if (FPreferences.getInstance().getPreference(
+ PreferenceConstants.P_OUTPUT_SUBDIRS, "false").equals("true")) {
+ String subdir = (new File(file)).getName();
+ subdir = subdir.replace(".fidl", "");
+ subdir = subdir.replace(".fdepl", "");
+ fsa.setOutputConfigurations(FPreferences.getInstance()
+ .getOutputpathConfiguration(subdir));
+ }
francaGenerator.doGenerate(resource, fsa);
} catch (Exception e) {
System.err.println("Failed to generate code for " + file
@@ -237,6 +245,11 @@ public class CommandlineToolMain extends CommandlineTool {
pref.setPreference(PreferenceConstants.P_OUTPUT_SKELETON, optionValue);
}
+ public void setDestinationSubdirs() {
+ ConsoleLogger.printLog("Using destination subdirs");
+ pref.setPreference(PreferenceConstants.P_OUTPUT_SUBDIRS, "true");
+ }
+
public void setCommonDirectory(String optionValue) {
ConsoleLogger.printLog("Common output directory: " + optionValue);
pref.setPreference(PreferenceConstants.P_OUTPUT_COMMON, optionValue);
diff --git a/org.genivi.commonapi.core/src/org/genivi/commonapi/core/generator/FTypeGenerator.xtend b/org.genivi.commonapi.core/src/org/genivi/commonapi/core/generator/FTypeGenerator.xtend
index bde7608..5ff4a89 100644
--- a/org.genivi.commonapi.core/src/org/genivi/commonapi/core/generator/FTypeGenerator.xtend
+++ b/org.genivi.commonapi.core/src/org/genivi/commonapi/core/generator/FTypeGenerator.xtend
@@ -381,7 +381,7 @@ class FTypeGenerator {
def String getInitialValue(FEnumerationType _enumeration) {
if (_enumeration.base != null)
return _enumeration.base.getInitialValue()
- return "Literal::" + _enumeration.enumerators.head.elementName
+ return "Literal::" + enumPrefix + _enumeration.enumerators.head.elementName
}
def String generateLiterals(FEnumerationType _enumeration) {
diff --git a/org.genivi.commonapi.core/src/org/genivi/commonapi/core/preferences/FPreferences.java b/org.genivi.commonapi.core/src/org/genivi/commonapi/core/preferences/FPreferences.java
index 8c27667..4e5850f 100644
--- a/org.genivi.commonapi.core/src/org/genivi/commonapi/core/preferences/FPreferences.java
+++ b/org.genivi.commonapi.core/src/org/genivi/commonapi/core/preferences/FPreferences.java
@@ -11,6 +11,7 @@ package org.genivi.commonapi.core.preferences;
import java.util.HashMap;
import java.util.Map;
+import java.io.File;
import org.eclipse.xtext.generator.IFileSystemAccess;
import org.eclipse.xtext.generator.OutputConfiguration;
@@ -59,6 +60,9 @@ public class FPreferences {
if (!preferences.containsKey(PreferenceConstants.P_OUTPUT_DEFAULT)) {
preferences.put(PreferenceConstants.P_OUTPUT_DEFAULT, PreferenceConstants.DEFAULT_OUTPUT);
}
+ if (!preferences.containsKey(PreferenceConstants.P_OUTPUT_SUBDIRS)) {
+ preferences.put(PreferenceConstants.P_OUTPUT_SUBDIRS, "false");
+ }
if (!preferences.containsKey(PreferenceConstants.P_OUTPUT_SKELETON)) {
preferences.put(PreferenceConstants.P_OUTPUT_SKELETON, PreferenceConstants.DEFAULT_OUTPUT);
}
@@ -122,13 +126,30 @@ public class FPreferences {
* @return the map of output configurations
*/
public HashMap<String, OutputConfiguration> getOutputpathConfiguration() {
+ return getOutputpathConfiguration(null);
+ }
+
+ /**
+ * Set the output path configurations (based on stored preference values) for file system access used in the generator.
+ * @subdir the subdir to use, can be null
+ * @return the map of output configurations
+ */
+ public HashMap<String, OutputConfiguration> getOutputpathConfiguration(String subdir) {
String defaultDir = getPreference(PreferenceConstants.P_OUTPUT_DEFAULT, PreferenceConstants.DEFAULT_OUTPUT);
String outputCommonDir = getPreference(PreferenceConstants.P_OUTPUT_COMMON, defaultDir);
String outputProxyDir = getPreference(PreferenceConstants.P_OUTPUT_PROXIES, defaultDir);
String outputStubDir = getPreference(PreferenceConstants.P_OUTPUT_STUBS, defaultDir);
String outputSkelDir = getPreference(PreferenceConstants.P_OUTPUT_SKELETON, defaultDir);
-
+
+ if (null != subdir && getPreference(PreferenceConstants.P_OUTPUT_SUBDIRS, "false").equals("true")) {
+ defaultDir = new File(defaultDir, subdir).getPath();
+ outputCommonDir = new File(outputCommonDir, subdir).getPath();
+ outputProxyDir = new File(outputProxyDir, subdir).getPath();
+ outputStubDir = new File(outputStubDir, subdir).getPath();
+ outputSkelDir = new File(outputSkelDir, subdir).getPath();
+ }
+
// the map of output directory configurations
HashMap<String, OutputConfiguration> outputs = new HashMap<String, OutputConfiguration> ();
diff --git a/org.genivi.commonapi.core/src/org/genivi/commonapi/core/preferences/PreferenceConstants.java b/org.genivi.commonapi.core/src/org/genivi/commonapi/core/preferences/PreferenceConstants.java
index 9f522da..4a6e4ae 100644
--- a/org.genivi.commonapi.core/src/org/genivi/commonapi/core/preferences/PreferenceConstants.java
+++ b/org.genivi.commonapi.core/src/org/genivi/commonapi/core/preferences/PreferenceConstants.java
@@ -23,6 +23,7 @@ public interface PreferenceConstants
public static final String P_OUTPUT_COMMON = "outputDirCommon";
public static final String P_OUTPUT_SKELETON = "outputDirSkeleton";
public static final String P_OUTPUT_DEFAULT = "outputDirDefault";
+ public static final String P_OUTPUT_SUBDIRS = "outputSubdirs";
public static final String P_GENERATE_COMMON = "generatecommon";
public static final String P_GENERATE_PROXY = "generateproxy";
public static final String P_GENERATE_STUB = "generatestub";