Как получить путь к "haxe.exe" из macro / eval? - PullRequest
0 голосов
/ 19 января 2019

Я бы хотел порождать дочерний процесс из скрипта haxe eval (или макроса). Этот дочерний процесс также является экземпляром haxe, компилирующим код, загруженный / сгенерированный родительским процессом. Очевидно, я могу просто использовать

Sys.command('haxe -cpp $buildDir -main CoreMain $coreDefines');

но я бы хотел использовать точный путь к haxe.exe (haxe на * nix), если это возможно. До сих пор я не нашел API для получения этого пути из eval или макроса. Я что-то упустил или такого API нет?

1 Ответ

0 голосов
/ 30 января 2019

Я не знаю ни о каких параметрах API для доступа к пути к двоичному файлу haxe, но предполагалось, что это будет HAXEPATH environment variable, к которому вы могли бы обратиться с помощью Sys.getEnv()?

В противном случае вы можете запустить процесс, найти путь и записать его в файл:

function getHaxeBinPath () : String {
    var path = switch ( Sys.systemName () ) {
        case "Windows":
            // Windows Script.
        case "Linux":
            Sys.command ( "echo $( which haxe ) >> exePath.txt" );
            Sys.io.File.getContent ( "exePath.txt" );
        case "BSD":
            // BSD Script.
        case "Mac":
            // Macintosh Script.
        default:
            throw "Unknown Operating System!";
    }

    if ( sys.FileSystem.exists ( "exePath.txt" ) {
        sys.FileSystem.deleteFile ( "exePath.txt" );
    }

    return path;
}

, но тогда вам потребуется скрипт для каждой операционной системы и учетной записи дляверсии вещей.Если вы решите пойти с этим, я думаю, что в Windows есть команда WHERE , которую вы могли бы использовать, но я не очень много знаю об этом.

Это не похоже на этоВы бы работали на * nix (из-за необходимости входа / выхода для обновления переменных среды), но вы могли бы иметь возможность установить переменную среды в процессе и затем получить ее с помощью Sys.getEnv()?Та же проблема с изготовлением кастомной вещи для каждой ОС.

...