Ниже описанный подход применён в контексте ActionScript-проекта находящемуся под контролем SVN. "Не ActionScript-ом единым жив программист", это подход может пригодится в других проектах с другими CSV-системами.
Проблема:
При достаточно частых обновлениях приложения в сети, хочется визуально видеть какая версия флешки перед тобой, т.е. получить подобную картинку:
Решение:
P.S.: Очень полезно про автоматизацию с испольщованием ant-а см. на http://anykeytocreate.blogspot.com/2011/08/1-ant-flash-faq.html
Проблема:
При достаточно частых обновлениях приложения в сети, хочется визуально видеть какая версия флешки перед тобой, т.е. получить подобную картинку:
Решение:
- Определить место, где будет сохранятся номер ревизии, например отдельный класс с настройками приложения или одно из полей уже существующего класса
Пример класса для первого варианта:
public class AppOption { public static const REVISION:String = "@revision@"; }
- Описать ant-овский task в build.xml
<target name="buildClient"> <!-- копируем оригинал файла где будет производится замена строки --> <copy file="${src}/AppOption.as" tofile="${projectDir}/AppOption.as" overwrite="true" verbose="false" /> <!-- впечатываем номер ревизии по-вкусу, в данном случае последней закомиченой--> <property name="revision" value="COMMITTED"/> <exec executable="svn" outputproperty="svnlog.out"> <arg line="log -r ${revision} -q"/> </exec> <taskdef resource="net/sf/antcontrib/antcontrib.properties"/> <propertyregex property="revision.number" input="${svnlog.out}" select="\2"> <regexp pattern="(r)([0-9]*)"/> </propertyregex> <replace file="${src}/AppOption.as" token="@revision@" value="${revision.number}"/> <!-- компилируем клиента --> <!-- перемещаем оригинал файла на родину --> <move file="${projectDir}/AppOption.as" tofile="${src}/AppOption.as" overwrite="true" verbose="false"/> </target>
- И наконец использовать номер ревизии
public class Main extends Sprite { private var _contextMenu:ContextMenu; public Main() { addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); } private function onAddedToStage(e:Event):void { removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); _contextMenu = new ContextMenu(); var menuItem:ContextMenuItem = new ContextMenuItem("Version " + AppOption.REVISION); _contextMenu.customItems.push(menuItem); contextMenu = _contextMenu; } }
P.S.: Очень полезно про автоматизацию с испольщованием ant-а см. на http://anykeytocreate.blogspot.com/2011/08/1-ant-flash-faq.html
Комментариев нет:
Отправить комментарий