Skip to content

Commit

Permalink
populate HTML template
Browse files Browse the repository at this point in the history
  • Loading branch information
joshtynjala committed Oct 31, 2018
1 parent 0981d0c commit d7700c4
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 1 deletion.
67 changes: 66 additions & 1 deletion src/ASConfigC.as
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ package
import com.as3mxml.asconfigc.CompilerOptions;
import com.as3mxml.asconfigc.CompilerOptionsParser;
import com.as3mxml.asconfigc.ConfigName;
import com.as3mxml.asconfigc.HTMLTemplateOptionsParser;
import com.as3mxml.asconfigc.JSOutputType;
import com.as3mxml.asconfigc.ProjectType;
import com.as3mxml.asconfigc.Targets;
Expand All @@ -32,11 +33,11 @@ package
import com.as3mxml.asconfigc.utils.findApplicationContentOutputPath;
import com.as3mxml.asconfigc.utils.findOutputDirectory;
import com.as3mxml.asconfigc.utils.findSourcePathAssets;
import com.as3mxml.asconfigc.utils.populateHTMLTemplateFile;
import com.as3mxml.royale.utils.ApacheFlexJSUtils;
import com.as3mxml.royale.utils.ApacheRoyaleUtils;
import com.as3mxml.utils.ActionScriptSDKUtils;
import com.as3mxml.utils.findJava;
import com.as3mxml.asconfigc.HTMLTemplateOptionsParser;

/**
* A command line utility to build a project defined with an asconfig.json
Expand Down Expand Up @@ -819,7 +820,71 @@ package

private function copyHTMLTemplateDirectory(inputDir:String, outputDir:String):void
{
mkdirp["sync"](outputDir);
if(!fs.existsSync(outputDir))
{
console.error("Failed to create output directory for HTML template: " + outputDir);
process.exit(1);
}
var files:Array = fs.readdirSync(inputDir);
var fileCount:int = files.length;
for(var i:int = 0; i < fileCount; i++)
{
var fileName:String = files[i];
var inputFilePath:String = path.resolve(inputDir, fileName);
var outputFilePath:String = path.resolve(outputDir, fileName);
if(fs.statSync(inputFilePath).isDirectory())
{
copyHTMLTemplateDirectory(inputFilePath, outputFilePath);
continue;
}
var extension:String = path.extname(fileName);
if(extension)
{
var templateExtension:String = ".template" + extension;
if(fileName.endsWith(templateExtension))
{
var fileNameWithoutExtension:String = fileName.substr(0, fileName.length - templateExtension.length);
if(fileNameWithoutExtension === "index")
{
if(this._mainFile !== null)
{
var mainFileName:String = path.basename(this._mainFile);
var mainFileExtensionIndex:int = mainFileName.indexOf(".");
if(mainFileExtensionIndex !== -1)
{
fileNameWithoutExtension = mainFileName.substr(0, mainFileExtensionIndex);
}
}
}
try
{
var content:String = fs.readFileSync(inputFilePath, "utf8") as String;
}
catch(error)
{
console.error("Failed to copy file: " + inputFilePath);
process.exit(1);
}
content = populateHTMLTemplateFile(content, this._htmlTemplateOptions);
var outputFileName:String = fileNameWithoutExtension + extension;
outputFilePath = path.resolve(outputDir, outputFileName);
fs.writeFileSync(outputFilePath, content);
continue;
}
}
try
{
var rawContent:Object = fs.readFileSync(inputFilePath);
}
catch(error)
{
console.error("Failed to copy file: " + inputFilePath);
process.exit(1);
}
fs.writeFileSync(outputFilePath, rawContent);

}
}

private function processDescriptor():void
Expand Down
22 changes: 22 additions & 0 deletions src/com/as3mxml/asconfigc/utils/populateHTMLTemplateFile.as
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.as3mxml.asconfigc.utils
{
public function populateHTMLTemplateFile(content:String, options:Object):String
{
if(options === null)
{
return content;
}
for(var key:String in options)
{
var token:String = "${" + key + "}";
var value:String = options[key];
var index:int = content.indexOf(token);
while(index !== -1)
{
content = content.substr(0, index) + value + content.substr(index + token.length);
index = content.indexOf(token);
}
}
return content;
}
}

0 comments on commit d7700c4

Please sign in to comment.