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

    Введение


    В настоящее время, я работаю над проектом, одним из основных инструментов, в котором является язык 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.

    Статья публикуется по просьбе товарища без прописки на хабре.

    Комментарии 2

      0
      Загляните в песочницу, и убелитесь что отличительная черта топиков, авторы которых не имеют прописку на Хабре, — куча листигнов при отсутствии хабарката.
        +8
        «Блог им. 01000110110010010010 → Автоматическая нумерация сборки на примере haxe»
        Прочитав заголовок, я подумал: «Надеюсь, автор не будет нумеровать сборки так же, как и себя )

        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

        Самое читаемое