Skip to content

Commit d7700c4

Browse files
committed
populate HTML template
1 parent 0981d0c commit d7700c4

File tree

2 files changed

+88
-1
lines changed

2 files changed

+88
-1
lines changed

src/ASConfigC.as

+66-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ package
2222
import com.as3mxml.asconfigc.CompilerOptions;
2323
import com.as3mxml.asconfigc.CompilerOptionsParser;
2424
import com.as3mxml.asconfigc.ConfigName;
25+
import com.as3mxml.asconfigc.HTMLTemplateOptionsParser;
2526
import com.as3mxml.asconfigc.JSOutputType;
2627
import com.as3mxml.asconfigc.ProjectType;
2728
import com.as3mxml.asconfigc.Targets;
@@ -32,11 +33,11 @@ package
3233
import com.as3mxml.asconfigc.utils.findApplicationContentOutputPath;
3334
import com.as3mxml.asconfigc.utils.findOutputDirectory;
3435
import com.as3mxml.asconfigc.utils.findSourcePathAssets;
36+
import com.as3mxml.asconfigc.utils.populateHTMLTemplateFile;
3537
import com.as3mxml.royale.utils.ApacheFlexJSUtils;
3638
import com.as3mxml.royale.utils.ApacheRoyaleUtils;
3739
import com.as3mxml.utils.ActionScriptSDKUtils;
3840
import com.as3mxml.utils.findJava;
39-
import com.as3mxml.asconfigc.HTMLTemplateOptionsParser;
4041

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

820821
private function copyHTMLTemplateDirectory(inputDir:String, outputDir:String):void
821822
{
823+
mkdirp["sync"](outputDir);
824+
if(!fs.existsSync(outputDir))
825+
{
826+
console.error("Failed to create output directory for HTML template: " + outputDir);
827+
process.exit(1);
828+
}
829+
var files:Array = fs.readdirSync(inputDir);
830+
var fileCount:int = files.length;
831+
for(var i:int = 0; i < fileCount; i++)
832+
{
833+
var fileName:String = files[i];
834+
var inputFilePath:String = path.resolve(inputDir, fileName);
835+
var outputFilePath:String = path.resolve(outputDir, fileName);
836+
if(fs.statSync(inputFilePath).isDirectory())
837+
{
838+
copyHTMLTemplateDirectory(inputFilePath, outputFilePath);
839+
continue;
840+
}
841+
var extension:String = path.extname(fileName);
842+
if(extension)
843+
{
844+
var templateExtension:String = ".template" + extension;
845+
if(fileName.endsWith(templateExtension))
846+
{
847+
var fileNameWithoutExtension:String = fileName.substr(0, fileName.length - templateExtension.length);
848+
if(fileNameWithoutExtension === "index")
849+
{
850+
if(this._mainFile !== null)
851+
{
852+
var mainFileName:String = path.basename(this._mainFile);
853+
var mainFileExtensionIndex:int = mainFileName.indexOf(".");
854+
if(mainFileExtensionIndex !== -1)
855+
{
856+
fileNameWithoutExtension = mainFileName.substr(0, mainFileExtensionIndex);
857+
}
858+
}
859+
}
860+
try
861+
{
862+
var content:String = fs.readFileSync(inputFilePath, "utf8") as String;
863+
}
864+
catch(error)
865+
{
866+
console.error("Failed to copy file: " + inputFilePath);
867+
process.exit(1);
868+
}
869+
content = populateHTMLTemplateFile(content, this._htmlTemplateOptions);
870+
var outputFileName:String = fileNameWithoutExtension + extension;
871+
outputFilePath = path.resolve(outputDir, outputFileName);
872+
fs.writeFileSync(outputFilePath, content);
873+
continue;
874+
}
875+
}
876+
try
877+
{
878+
var rawContent:Object = fs.readFileSync(inputFilePath);
879+
}
880+
catch(error)
881+
{
882+
console.error("Failed to copy file: " + inputFilePath);
883+
process.exit(1);
884+
}
885+
fs.writeFileSync(outputFilePath, rawContent);
822886

887+
}
823888
}
824889

825890
private function processDescriptor():void
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.as3mxml.asconfigc.utils
2+
{
3+
public function populateHTMLTemplateFile(content:String, options:Object):String
4+
{
5+
if(options === null)
6+
{
7+
return content;
8+
}
9+
for(var key:String in options)
10+
{
11+
var token:String = "${" + key + "}";
12+
var value:String = options[key];
13+
var index:int = content.indexOf(token);
14+
while(index !== -1)
15+
{
16+
content = content.substr(0, index) + value + content.substr(index + token.length);
17+
index = content.indexOf(token);
18+
}
19+
}
20+
return content;
21+
}
22+
}

0 commit comments

Comments
 (0)