Автоматическая нумерация сборки на примере haxe

Lumber room

Введение


В настоящее время, я работаю над проектом, одним из основных инструментов, в котором является язык haxe. В качестве среды разработки для haxe, в данном проекте, я использую FlashDevelop. В течение дня, проект собирается множество раз, и надо точно знать, какая сборка, сейчас, выложена в общий доступ. Для этого необходимо нумеровать сборки. Так как, ни в haxe, ни во FlashDevelop стандартного средства генерации номера сборки найдено не было, предлагаю для решения этой задачи, провернуть определённый трюк.


Трюк


Для начала создадим класс Build, содержащий следующий код:

package ;
class Build {
public static var number:Int = 1;
}


Теперь, в любом месте нашего проекта, мы можем узнать номер сборки, обратившись к полю number класса Build.
Например:
new Label(this, 10, height-20, Config.version+"."+Build.number, Colors.white, 12);

Следующим, моим шагом стала автоматизация инкрементации номера сборки. Создадим файл .build, в корне проекта, данный файл будет содержать единственную строку num=1 (либо то число, с которого надо начать счет).

num=1

А теперь, скрипт prebuild.bat, который будет делать за меня «чёрную работу». Разместим скрипт рядом с файлом .build. Этот сценарий будет создавать класс Build, содержащий номер текущей сборки, основываясь на номере, который уже содержится в файле .build. А затем, увеличивать его на единицу и перезаписывать .build.

@echo off

set filename=.build
set hxclass=.\src\build.hx
call :read_settings %filename% || exit /b 1

set /a RESULT=NUM + 1

echo Build : %RESULT%

echo num=%RESULT%>%filename%
rem код класса можно заменить на любой удобный
echo package ; class Build { public static var number:Int = %RESULT%; }>%hxclass%
echo

exit /b 0

rem
rem Функция для чтения настроек из файла.
rem Ввод:
rem %1 - Имя файла с настройками
:read_settings

set fname=%1

rem Проверка существования файла
if not exist %fname% (
echo FAIL: Файл с настройками отсутствует
exit /b 1
)

for /f "eol=# delims== tokens=1,2" %%i in (%fname%) do (
set %%i=%%j
)

exit /b 0


Осталось ответить на вопрос: «Как выполнить prebuild.bat перед общей сборкой проекта?».
Для FlashDevelop (для других IDE по аналогии) это делается так: открываем меню Project->Properties, далее закладка Build и поле Pre-build command line, в котором прописываем следующее $(ProjectDir)\prebuild.bat.

На этом, трюк выполнен. Перед каждой сборкой, класс Build будет перезаписываться с новым значением поля number, что и обеспечит требуемый результат.

P.S. Код функции read_setting взят с сайта rsdn.ru.

Статья публикуется по просьбе товарища без прописки на хабре.
Tags:bathaxebuildflashdevelop
Hubs: Lumber room
+4
671 1
Comments 2

Popular right now

Факультет Java-разработки
January 23, 2021180,000 ₽GeekBrains
UX/UI дизайнер
January 25, 2021104,900 ₽Нетология
Профессия Android-разработчик
January 25, 202130,000 ₽Loftschool
UI-дизайнер
January 25, 202159,900 ₽Нетология
SEO-специалист
January 25, 202136,000 ₽GeekBrains

Top of the last 24 hours