You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2016/09/27 19:11:11 UTC

[1/2] git commit: [flex-falcon] [refs/heads/develop] - add -html-template option so FalconJX will fill in a template instead of generating an index.html file and add a -html-output-filename option so the output file doesn't have to be called index.html

Repository: flex-falcon
Updated Branches:
  refs/heads/develop 7405eca0b -> e880f34d5


add -html-template option so FalconJX will fill in a template instead of generating an index.html file and add a -html-output-filename option so the output file doesn't have to be called index.html


Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/3afe7741
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/3afe7741
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/3afe7741

Branch: refs/heads/develop
Commit: 3afe7741f559ac214de4ef0beb14ca456cfe9010
Parents: 796b5e8
Author: Alex Harui <ah...@apache.org>
Authored: Tue Sep 27 12:06:51 2016 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Tue Sep 27 12:06:51 2016 -0700

----------------------------------------------------------------------
 .../mxml/flexjs/MXMLFlexJSPublisher.java        | 77 +++++++++++++++++++-
 .../driver/js/goog/JSGoogConfiguration.java     | 46 ++++++++++++
 .../internal/projects/FlexJSProject.java        | 24 ++++++
 3 files changed, 144 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/3afe7741/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
index 64b3c86..e8287b3 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
@@ -18,6 +18,7 @@
  */
 package org.apache.flex.compiler.internal.codegen.mxml.flexjs;
 
+import java.io.BufferedInputStream;
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileInputStream;
@@ -53,6 +54,10 @@ import org.apache.flex.compiler.internal.driver.js.flexjs.JSCSSCompilationSessio
 import org.apache.flex.compiler.internal.driver.js.goog.JSGoogConfiguration;
 import org.apache.flex.compiler.internal.graph.GoogDepsWriter;
 import org.apache.flex.compiler.internal.projects.FlexJSProject;
+import org.apache.flex.compiler.internal.targets.ITargetAttributes;
+import org.apache.flex.compiler.targets.ISWFTarget;
+import org.apache.flex.compiler.targets.ITargetReport;
+import org.apache.flex.compiler.targets.ITargetSettings;
 import org.apache.flex.compiler.utils.JSClosureCompilerWrapper;
 import org.apache.flex.swc.ISWC;
 import org.apache.flex.swc.ISWCFileEntry;
@@ -419,10 +424,21 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements IJSPublisher
 
 	        // File srcDeps = new File(depsSrcFilePath);
 
+    	File template = ((JSGoogConfiguration)configuration).getHtmlTemplate();
         if (!((JSGoogConfiguration)configuration).getSkipTranspile())
-	        writeHTML("intermediate", projectName, intermediateDirPath, depsFileData.toString(), gdw.additionalHTML);
+        {
+        	if (template != null)
+    	        writeTemplate(template, "intermediate", projectName, intermediateDirPath, depsFileData.toString(), gdw.additionalHTML);
+        	else
+        		writeHTML("intermediate", projectName, intermediateDirPath, depsFileData.toString(), gdw.additionalHTML);
+        }
         if (!configuration.debug())
-        	writeHTML("release", projectName, releaseDirPath, null, gdw.additionalHTML);
+        {
+        	if (template != null)
+    	        writeTemplate(template, "release", projectName, intermediateDirPath, depsFileData.toString(), gdw.additionalHTML);
+        	else
+        		writeHTML("release", projectName, releaseDirPath, null, gdw.additionalHTML);
+        }
         if (project.needCSS || ((JSGoogConfiguration)configuration).getSkipTranspile())
         {
             if (!((JSGoogConfiguration)configuration).getSkipTranspile())
@@ -564,6 +580,61 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements IJSPublisher
         return code;
     }
 
+    protected void writeTemplate(File template, String type, String projectName, String dirPath, String deps, List<String> additionalHTML)
+    		throws IOException
+	{
+        String input = readCode(template);
+        ITargetAttributes ta = project.computeTargetAttributes();
+        Float width = ta.getWidth();
+        Float height = ta.getHeight();
+        String result = input.replaceAll("\\$\\{application\\}", projectName);
+        result = result.replaceAll("\\$\\{bgcolor\\}", ta.getBackgroundColor());
+        //result = result.replaceAll("\\$\\{expressInstallSwf\\}", expressInstallSwf);
+        if (height != null)
+        	result = result.replaceAll("\\$\\{height\\}", height.toString());
+        result = result.replaceAll("\\$\\{title\\}", ta.getPageTitle());
+        //result = result.replaceAll("\\$\\{version_major\\}", versionMajor);
+        //result = result.replaceAll("\\$\\{version_minor\\}", versionMinor);
+        //result = result.replaceAll("\\$\\{version_revision\\}", versionRevision);
+        if (width != null)
+        	result = result.replaceAll("\\$\\{width\\}", width.toString());
+        //result = result.replaceAll("\\$\\{useBrowserHistory\\}", useBrowserHistory);
+        
+        StringBuilder addHTML = new StringBuilder();
+		for (String s : additionalHTML)
+		    addHTML.append(s).append("\n");
+		
+		if ("intermediate".equals(type))
+		{
+			addHTML.append("\t<script type=\"text/javascript\" src=\"./library/closure/goog/base.js\"></script>\n");
+			addHTML.append("\t<script type=\"text/javascript\">\n");
+			addHTML.append(deps);
+			addHTML.append("\t\tgoog.require(\"");
+			addHTML.append(projectName);
+			addHTML.append("\");\n");
+			addHTML.append("\t</script>\n");
+		}
+		else
+		{
+			addHTML.append("\t<script type=\"text/javascript\" src=\"./");
+			addHTML.append(projectName);
+			addHTML.append(".js\"></script>\n");
+		}
+        result = result.replaceAll("\\$\\{head\\}", addHTML.toString());
+		
+        StringBuilder htmlFile = new StringBuilder();
+		htmlFile.append("\t<script type=\"text/javascript\">\n");
+		htmlFile.append("\t\tnew ");
+		htmlFile.append(projectName);
+		htmlFile.append("()");
+		htmlFile.append(".start();\n");
+		htmlFile.append("\t</script>\n");
+
+        result = result.replaceAll("\\$\\{body\\}", htmlFile.toString());
+
+		writeFile(dirPath + File.separator + ((JSGoogConfiguration) configuration).getHtmlOutputFileName(), result, false);
+	}
+
     protected void writeHTML(String type, String projectName, String dirPath, String deps, List<String> additionalHTML)
             throws IOException
     {
@@ -606,7 +677,7 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements IJSPublisher
         htmlFile.append("</body>\n");
         htmlFile.append("</html>");
 
-        writeFile(dirPath + File.separator + "index.html", htmlFile.toString(), false);
+        writeFile(dirPath + File.separator + ((JSGoogConfiguration) configuration).getHtmlOutputFileName(), htmlFile.toString(), false);
     }
 
     private void writeCSS(String projectName, String dirPath) throws IOException

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/3afe7741/compiler-jx/src/main/java/org/apache/flex/compiler/internal/driver/js/goog/JSGoogConfiguration.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/driver/js/goog/JSGoogConfiguration.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/driver/js/goog/JSGoogConfiguration.java
index 6eb1037..40bdcfc 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/driver/js/goog/JSGoogConfiguration.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/driver/js/goog/JSGoogConfiguration.java
@@ -29,6 +29,7 @@ import org.apache.flex.compiler.clients.JSConfiguration;
 import org.apache.flex.compiler.clients.MXMLJSC;
 import org.apache.flex.compiler.config.ConfigurationValue;
 import org.apache.flex.compiler.exceptions.ConfigurationException;
+import org.apache.flex.compiler.internal.config.annotations.Arguments;
 import org.apache.flex.compiler.internal.config.annotations.Config;
 import org.apache.flex.compiler.internal.config.annotations.FlexOnly;
 import org.apache.flex.compiler.internal.config.annotations.InfiniteArguments;
@@ -328,4 +329,49 @@ public class JSGoogConfiguration extends JSConfiguration
     {
     	jsOutputOptimizations.addAll(value);
     }
+
+    // 'html-template' option
+    //
+
+    private String htmlTemplateFileName = null;
+
+    public File getHtmlTemplate()
+    {
+        return htmlTemplateFileName != null ? new File(htmlTemplateFileName) : null;
+    }
+
+    /**
+     * Specify an HTML template with tokens to replace with application-specific values.
+     * If not specified a standard template is generated.
+     */
+    @Config(advanced = true)
+    @Mapping("html-template")
+    @Arguments("filename")
+    public void setHtmlTemplate(ConfigurationValue cv, String filename)
+    {
+        this.htmlTemplateFileName = getOutputPath(cv, filename);
+    }
+
+    // 'html-output-filename' option
+    //
+
+    private String htmlOutputFileName = "index.html";
+
+    public String getHtmlOutputFileName()
+    {
+        return htmlOutputFileName;
+    }
+
+    /**
+     * Specify the name of the HTML file that goes in the output folder.  Default is index.html.
+     */
+    @Config(advanced = true)
+    @Mapping("html-output-filename")
+    @Arguments("filename")
+    public void setHtmlOutputFileName(ConfigurationValue cv, String filename)
+    {
+        this.htmlOutputFileName = filename;
+    }
+
+
 }

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/3afe7741/compiler-jx/src/main/java/org/apache/flex/compiler/internal/projects/FlexJSProject.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/projects/FlexJSProject.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/projects/FlexJSProject.java
index 3f4ef14..b63ceb0 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/projects/FlexJSProject.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/projects/FlexJSProject.java
@@ -36,11 +36,16 @@ import org.apache.flex.compiler.internal.definitions.InterfaceDefinition;
 import org.apache.flex.compiler.internal.driver.js.flexjs.JSCSSCompilationSession;
 import org.apache.flex.compiler.internal.driver.js.goog.JSGoogConfiguration;
 import org.apache.flex.compiler.internal.scopes.ASProjectScope.DefinitionPromise;
+import org.apache.flex.compiler.internal.targets.ITargetAttributes;
 import org.apache.flex.compiler.internal.targets.LinkageChecker;
+import org.apache.flex.compiler.internal.tree.as.FileNode;
+import org.apache.flex.compiler.internal.tree.mxml.MXMLDocumentNode;
+import org.apache.flex.compiler.internal.tree.mxml.MXMLFileNode;
 import org.apache.flex.compiler.internal.units.SWCCompilationUnit;
 import org.apache.flex.compiler.internal.workspaces.Workspace;
 import org.apache.flex.compiler.targets.ITargetSettings;
 import org.apache.flex.compiler.tree.as.IASNode;
+import org.apache.flex.compiler.tree.as.IDefinitionNode;
 import org.apache.flex.compiler.units.ICompilationUnit;
 
 /**
@@ -330,4 +335,23 @@ public class FlexJSProject extends FlexProject
         return MXMLFlexJSEmitterTokens.ID_PREFIX.getToken();
     }
 
+    public ITargetAttributes computeTargetAttributes()
+    {
+    	List<String> names;
+		try {
+			names = mainCU.getQualifiedNames();
+	    	IDefinition def = this.resolveQNameToDefinition(names.get(0));
+	    	IDefinitionNode node = def.getNode();
+	    	if (node instanceof MXMLDocumentNode)
+	    	{
+	    		MXMLDocumentNode mxmlDoc = (MXMLDocumentNode)node;
+	    		MXMLFileNode mxmlFile = (MXMLFileNode)mxmlDoc.getParent();
+	    		return mxmlFile.getTargetAttributes(this);
+	    	}
+		} catch (InterruptedException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+    	return null;
+    }
 }


[2/2] git commit: [flex-falcon] [refs/heads/develop] - Merge branch 'templates' into develop

Posted by ah...@apache.org.
Merge branch 'templates' into develop


Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/e880f34d
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/e880f34d
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/e880f34d

Branch: refs/heads/develop
Commit: e880f34d5bb1b57cfa2e529d034fd77b06eb5d73
Parents: 7405eca 3afe774
Author: Alex Harui <ah...@apache.org>
Authored: Tue Sep 27 12:07:38 2016 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Tue Sep 27 12:07:38 2016 -0700

----------------------------------------------------------------------
 .../mxml/flexjs/MXMLFlexJSPublisher.java        | 77 +++++++++++++++++++-
 .../driver/js/goog/JSGoogConfiguration.java     | 46 ++++++++++++
 .../internal/projects/FlexJSProject.java        | 24 ++++++
 3 files changed, 144 insertions(+), 3 deletions(-)
----------------------------------------------------------------------