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 2013/12/11 21:58:03 UTC
[3/6] git commit: [flex-utilities] [refs/heads/develop] - add Replace,
LoadProperties and PropertyFile tasks, and Equals condition
add Replace, LoadProperties and PropertyFile tasks, and Equals condition
Project: http://git-wip-us.apache.org/repos/asf/flex-utilities/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-utilities/commit/505b253d
Tree: http://git-wip-us.apache.org/repos/asf/flex-utilities/tree/505b253d
Diff: http://git-wip-us.apache.org/repos/asf/flex-utilities/diff/505b253d
Branch: refs/heads/develop
Commit: 505b253d88217fba475ed6590820f2a1832fd833
Parents: 321ebd7
Author: Alex Harui <ah...@apache.org>
Authored: Wed Dec 11 12:02:41 2013 -0800
Committer: Alex Harui <ah...@apache.org>
Committed: Wed Dec 11 12:02:41 2013 -0800
----------------------------------------------------------------------
ant_on_air/src/AntClasses.as | 4 +
.../src/org/apache/flex/ant/tags/Entry.as | 51 ++++++++++
.../src/org/apache/flex/ant/tags/Equals.as | 76 ++++++++++++++
.../org/apache/flex/ant/tags/LoadProperties.as | 100 +++++++++++++++++++
.../org/apache/flex/ant/tags/PropertyFile.as | 90 +++++++++++++++++
.../src/org/apache/flex/ant/tags/Replace.as | 78 +++++++++++++++
ant_on_air/tests/test.xml | 33 ++++++
7 files changed, 432 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/505b253d/ant_on_air/src/AntClasses.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/AntClasses.as b/ant_on_air/src/AntClasses.as
index ddb6a65..cd4a0f2 100644
--- a/ant_on_air/src/AntClasses.as
+++ b/ant_on_air/src/AntClasses.as
@@ -30,16 +30,20 @@ package
import org.apache.flex.ant.tags.Copy; Copy;
import org.apache.flex.ant.tags.Delete; Delete;
import org.apache.flex.ant.tags.Echo; Echo;
+ import org.apache.flex.ant.tags.Equals; Equals;
import org.apache.flex.ant.tags.Fail; Fail;
import org.apache.flex.ant.tags.FileSet; FileSet;
import org.apache.flex.ant.tags.FileSetExclude; FileSetExclude;
import org.apache.flex.ant.tags.FileSetInclude; FileSetInclude;
import org.apache.flex.ant.tags.Get; Get;
import org.apache.flex.ant.tags.IsSet; IsSet;
+ import org.apache.flex.ant.tags.LoadProperties; LoadProperties;
import org.apache.flex.ant.tags.Mkdir; Mkdir;
import org.apache.flex.ant.tags.Not; Not;
import org.apache.flex.ant.tags.OS; OS;
import org.apache.flex.ant.tags.Property; Property;
+ import org.apache.flex.ant.tags.PropertyFile; PropertyFile;
+ import org.apache.flex.ant.tags.Replace; Replace;
import org.apache.flex.ant.tags.Untar; Untar;
import org.apache.flex.ant.tags.Unzip; Unzip;
}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/505b253d/ant_on_air/src/org/apache/flex/ant/tags/Entry.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/Entry.as b/ant_on_air/src/org/apache/flex/ant/tags/Entry.as
new file mode 100644
index 0000000..6435df6
--- /dev/null
+++ b/ant_on_air/src/org/apache/flex/ant/tags/Entry.as
@@ -0,0 +1,51 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.ant.tags
+{
+ import mx.core.IFlexModuleFactory;
+
+ import org.apache.flex.ant.Ant;
+ import org.apache.flex.ant.tags.supportClasses.TagHandler;
+
+ [Mixin]
+ public class Entry extends TagHandler
+ {
+ public static function init(mf:IFlexModuleFactory):void
+ {
+ Ant.antTagProcessors["entry"] = Entry;
+ }
+
+ public function Entry()
+ {
+ super();
+ }
+
+ public var key:String;
+ public var value:String;
+
+ override protected function processAttribute(name:String, value:String):void
+ {
+ if (name == "key")
+ key = value;
+ else if (name == value)
+ this.value = value;
+ }
+
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/505b253d/ant_on_air/src/org/apache/flex/ant/tags/Equals.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/Equals.as b/ant_on_air/src/org/apache/flex/ant/tags/Equals.as
new file mode 100644
index 0000000..66af57b
--- /dev/null
+++ b/ant_on_air/src/org/apache/flex/ant/tags/Equals.as
@@ -0,0 +1,76 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.ant.tags
+{
+ import mx.core.IFlexModuleFactory;
+ import mx.utils.StringUtil;
+
+ import org.apache.flex.ant.Ant;
+ import org.apache.flex.ant.tags.supportClasses.IValueTagHandler;
+ import org.apache.flex.ant.tags.supportClasses.TagHandler;
+
+ [Mixin]
+ public class Equals extends TagHandler implements IValueTagHandler
+ {
+ public static function init(mf:IFlexModuleFactory):void
+ {
+ Ant.antTagProcessors["equals"] = Equals;
+ }
+
+ public function Equals()
+ {
+ super();
+ }
+
+ private var arg1:String;
+ private var arg2:String;
+ private var casesensitive:Boolean;
+ private var trim:Boolean;
+
+ public function get value():Object
+ {
+ var val1:String = arg1;
+ var val2:String = arg2;
+ if (casesensitive)
+ {
+ val1 = val1.toLowerCase();
+ val2 = val2.toLowerCase();
+ }
+ if (trim)
+ {
+ val1 = StringUtil.trim(val1 as String);
+ val2 = StringUtil.trim(val2 as String);
+ }
+ return val1 == val2;
+ }
+
+ override protected function processAttribute(name:String, value:String):void
+ {
+ if (name == "arg1")
+ arg1 = value;
+ else if (name == "arg2")
+ arg2 = value;
+ else if (name == "casesensitive")
+ casesensitive = value == "true";
+ else if (name == "trim")
+ casesensitive = value == "true";
+ }
+
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/505b253d/ant_on_air/src/org/apache/flex/ant/tags/LoadProperties.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/LoadProperties.as b/ant_on_air/src/org/apache/flex/ant/tags/LoadProperties.as
new file mode 100644
index 0000000..54ffb5f
--- /dev/null
+++ b/ant_on_air/src/org/apache/flex/ant/tags/LoadProperties.as
@@ -0,0 +1,100 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.ant.tags
+{
+ import flash.desktop.NativeProcess;
+ import flash.desktop.NativeProcessStartupInfo;
+ import flash.events.Event;
+ import flash.events.NativeProcessExitEvent;
+ import flash.events.ProgressEvent;
+ import flash.filesystem.File;
+ import flash.filesystem.FileMode;
+ import flash.filesystem.FileStream;
+ import flash.system.Capabilities;
+ import flash.utils.IDataInput;
+
+ import mx.core.IFlexModuleFactory;
+ import mx.utils.StringUtil;
+
+ import org.apache.flex.ant.Ant;
+ import org.apache.flex.ant.tags.supportClasses.TaskHandler;
+ import org.apache.flex.xml.XMLTagProcessor;
+
+ [Mixin]
+ public class LoadProperties extends TaskHandler
+ {
+ public static function init(mf:IFlexModuleFactory):void
+ {
+ Ant.antTagProcessors["loadproperties"] = LoadProperties;
+ }
+
+ public function LoadProperties()
+ {
+ }
+
+ override public function init(xml:XML, context:Object, xmlProcessor:XMLTagProcessor):void
+ {
+ super.init(xml, context, xmlProcessor);
+ }
+
+ override public function execute(callbackMode:Boolean):Boolean
+ {
+ var f:File = new File(fileName);
+ var fs:FileStream = new FileStream();
+ fs.open(f, FileMode.READ);
+ var data:String = fs.readUTFBytes(fs.bytesAvailable);
+ var propLines:Array = data.split("\n");
+ for each (var line:String in propLines)
+ {
+ var parts:Array = line.split("=");
+ if (parts.length >= 2)
+ {
+ var key:String = StringUtil.trim(parts[0]);
+ var val:String;
+ if (parts.length == 2)
+ val = parts[1];
+ else
+ {
+ parts.shift();
+ val = parts.join("=");
+ }
+ if (!context.hasOwnProperty(key))
+ context[key] = val;
+ }
+
+ }
+ fs.close();
+ return true;
+ }
+
+ private var fileName:String;
+
+ override protected function processAttribute(name:String, value:String):void
+ {
+ if (name == "srcFile")
+ {
+ fileName = value;
+ }
+ else
+ super.processAttribute(name, value);
+ }
+
+
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/505b253d/ant_on_air/src/org/apache/flex/ant/tags/PropertyFile.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/PropertyFile.as b/ant_on_air/src/org/apache/flex/ant/tags/PropertyFile.as
new file mode 100644
index 0000000..25c1627
--- /dev/null
+++ b/ant_on_air/src/org/apache/flex/ant/tags/PropertyFile.as
@@ -0,0 +1,90 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.ant.tags
+{
+ import flash.desktop.NativeProcess;
+ import flash.desktop.NativeProcessStartupInfo;
+ import flash.events.Event;
+ import flash.events.NativeProcessExitEvent;
+ import flash.events.ProgressEvent;
+ import flash.filesystem.File;
+ import flash.filesystem.FileMode;
+ import flash.filesystem.FileStream;
+ import flash.system.Capabilities;
+ import flash.utils.IDataInput;
+
+ import mx.core.IFlexModuleFactory;
+ import mx.utils.StringUtil;
+
+ import org.apache.flex.ant.Ant;
+ import org.apache.flex.ant.tags.supportClasses.TaskHandler;
+ import org.apache.flex.xml.XMLTagProcessor;
+
+ [Mixin]
+ public class PropertyFile extends TaskHandler
+ {
+ public static function init(mf:IFlexModuleFactory):void
+ {
+ Ant.antTagProcessors["propertyfile"] = PropertyFile;
+ }
+
+ public function PropertyFile()
+ {
+ }
+
+ override public function init(xml:XML, context:Object, xmlProcessor:XMLTagProcessor):void
+ {
+ super.init(xml, context, xmlProcessor);
+ }
+
+ override public function execute(callbackMode:Boolean):Boolean
+ {
+ super.execute(callbackMode);
+ var f:File = new File(fileName);
+ var fs:FileStream = new FileStream();
+ fs.open(f, FileMode.WRITE);
+ var n:int = numChildren;
+ for (var i:int = 0; i < n; i++)
+ {
+ var entry:Entry = getChildAt(i) as Entry;
+ if (entry)
+ {
+ var s:String = entry.key + "=" + entry.value + "\n";
+ fs.writeUTFBytes(s);
+ }
+ }
+ fs.close();
+ return true;
+ }
+
+ private var fileName:String;
+
+ override protected function processAttribute(name:String, value:String):void
+ {
+ if (name == "file")
+ {
+ fileName = value;
+ }
+ else
+ super.processAttribute(name, value);
+ }
+
+
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/505b253d/ant_on_air/src/org/apache/flex/ant/tags/Replace.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/Replace.as b/ant_on_air/src/org/apache/flex/ant/tags/Replace.as
new file mode 100644
index 0000000..0a1fe04
--- /dev/null
+++ b/ant_on_air/src/org/apache/flex/ant/tags/Replace.as
@@ -0,0 +1,78 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.ant.tags
+{
+ import flash.events.Event;
+ import flash.filesystem.File;
+ import flash.filesystem.FileMode;
+ import flash.filesystem.FileStream;
+
+ import mx.core.IFlexModuleFactory;
+
+ import org.apache.flex.ant.Ant;
+ import org.apache.flex.ant.tags.supportClasses.TaskHandler;
+ import org.apache.flex.xml.ITagHandler;
+
+ [Mixin]
+ public class Replace extends TaskHandler
+ {
+ public static function init(mf:IFlexModuleFactory):void
+ {
+ Ant.antTagProcessors["replace"] = Replace;
+ }
+
+ public function Replace()
+ {
+ super();
+ }
+
+ private var file:String;
+ private var token:String;
+ private var value:String;
+
+ override protected function processAttribute(name:String, value:String):void
+ {
+ if (name == "file")
+ file = value;
+ else if (name == "token")
+ token = value;
+ else if (name == "value")
+ this.value = value;
+ else
+ super.processAttribute(name, value);
+ }
+
+ override public function execute(callbackMode:Boolean):Boolean
+ {
+ super.execute(callbackMode);
+
+ var f:File = File.applicationDirectory.resolvePath(file);
+ var fs:FileStream = new FileStream();
+ fs.open(f, FileMode.READ);
+ var s:String = fs.readUTFBytes(fs.bytesAvailable);
+ fs.close();
+ var regex:RegExp = new RegExp(token, "g");
+ s = s.replace(regex, value);
+ fs.open(f, FileMode.WRITE);
+ fs.writeUTFBytes(s);
+ fs.close();
+ return true;
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/505b253d/ant_on_air/tests/test.xml
----------------------------------------------------------------------
diff --git a/ant_on_air/tests/test.xml b/ant_on_air/tests/test.xml
index 73ab2de..82a8089 100644
--- a/ant_on_air/tests/test.xml
+++ b/ant_on_air/tests/test.xml
@@ -110,6 +110,11 @@
<checksum file="${basedir}/temp/apache-rat-0.10-src.zip" todir="${basedir}/temp"
verifyproperty="rat.md5" />
<echo>rat checksum match = ${rat.md5}</echo>
+ <fail message="checksum did not match">
+ <condition>
+ <equals arg1="${rat.md5}" arg2="false" />
+ </condition>
+ </fail>
<mkdir dir="${basedir}/temp/unzip" />
<unzip src="${basedir}/temp/apache-rat-0.10-src.zip" dest="${basedir}/temp/unzip" />
<fail message="unzip did not result in expected files">
@@ -137,6 +142,34 @@
</not>
</condition>
</fail>
+ <propertyfile file="${basedir}/temp/custom.properties" >
+ <entry key="somekey" value="somevalue" />
+ <entry key="somekey1" value="somevalue1" />
+ </propertyfile>
+ <fail message="propertyfile did not result in expected file">
+ <condition>
+ <not>
+ <available file="${basedir}/temp/custom.properties" />
+ </not>
+ </condition>
+ </fail>
+ <replace file="${basedir}/temp/custom.properties" token="somekey" value="replacedkey" />
+ <loadproperties srcFile="${basedir}/temp/custom.properties" />
+ <fail message="replace did not work: found somekey">
+ <condition>
+ <isset property="somekey" />
+ </condition>
+ </fail>
+ <fail message="replace did not work: did not find replacedkey">
+ <condition>
+ <equals arg1="${replacedkey}" arg2="somevalue" />
+ </condition>
+ </fail>
+ <fail message="replace did not work: did not find replacedkey1">
+ <condition>
+ <equals arg1="${replacedkey1}" arg2="somevalue1" />
+ </condition>
+ </fail>
<delete dir="${basedir}/temp" />
<available file="${basedir}/temp/org/apache/flex/ant/tags/Project.as" property="project.doesnt.exist.after.delete" value="didn't get deleted" />
<fail message="temp/copied.xml was not deleted">