From e55535cc7c9bcd4cca5a675c445a0953a7b709ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Lucas=20Golini?= Date: Thu, 25 Apr 2024 14:25:30 -0300 Subject: [PATCH] Add dynamic vars to Run command. --- src/tools/ecode/projectbuild.cpp | 29 +++++++++++++++++------------ src/tools/ecode/projectbuild.hpp | 2 ++ 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/tools/ecode/projectbuild.cpp b/src/tools/ecode/projectbuild.cpp index df306b9b5..23c412576 100644 --- a/src/tools/ecode/projectbuild.cpp +++ b/src/tools/ecode/projectbuild.cpp @@ -313,6 +313,20 @@ ProjectBuildManager::~ProjectBuildManager() { Sys::sleep( Milliseconds( 0.1f ) ); } +void ProjectBuildManager::replaceDynamicVars( ProjectBuildCommand& cmd ) { + std::string currentOS = String::toLower( Sys::getPlatform() ); + std::string nproc = String::format( "%d", Sys::getCPUCount() ); + std::string curDoc = getCurrentDocument(); + std::string curDocName = + FileSystem::fileRemoveExtension( FileSystem::fileNameFromPath( curDoc ) ); + replaceVar( cmd, VAR_OS, currentOS ); + replaceVar( cmd, VAR_NPROC, nproc ); + replaceVar( cmd, VAR_CURRENT_DOC, curDoc ); + replaceVar( cmd, VAR_CURRENT_DOC_NAME, curDocName ); + if ( cmd.workingDir.empty() ) + cmd.workingDir = mProjectRoot; +} + ProjectBuildCommandsRes ProjectBuildManager::generateBuildCommands( const std::string& buildName, const ProjectBuildi18nFn& i18n, const std::string& buildType, @@ -333,22 +347,12 @@ ProjectBuildCommandsRes ProjectBuildManager::generateBuildCommands( const std::s return { i18n( "build_os_not_supported", "Operating System not supported for this build!" ) }; - std::string nproc = String::format( "%d", Sys::getCPUCount() ); - std::string curDoc = getCurrentDocument(); - std::string curDocName = - FileSystem::fileRemoveExtension( FileSystem::fileNameFromPath( curDoc ) ); - ProjectBuildCommandsRes res; - auto finalBuild( build.replaceVars( isClean ? build.mClean : build.mBuild ) ); + ProjectBuildCommandsRes res; for ( const auto& step : finalBuild ) { ProjectBuildCommand buildCmd( step ); - replaceVar( buildCmd, VAR_OS, currentOS ); - replaceVar( buildCmd, VAR_NPROC, nproc ); - replaceVar( buildCmd, VAR_CURRENT_DOC, curDoc ); - replaceVar( buildCmd, VAR_CURRENT_DOC_NAME, curDocName ); - if ( buildCmd.workingDir.empty() ) - buildCmd.workingDir = mProjectRoot; + replaceDynamicVars( buildCmd ); if ( !buildType.empty() ) replaceVar( buildCmd, VAR_BUILD_TYPE, buildType ); buildCmd.config = build.mConfig; @@ -728,6 +732,7 @@ void ProjectBuildManager::runConfig( StatusAppOutputController* saoc ) { return; ProjectBuildCommand finalBuild( build->replaceVars( *run ) ); + replaceDynamicVars( finalBuild ); auto cmd = finalBuild.cmd + " " + finalBuild.args; if ( finalBuild.runInTerminal ) { UITerminal* term = mApp->getTerminalManager()->createTerminalInSplitter( diff --git a/src/tools/ecode/projectbuild.hpp b/src/tools/ecode/projectbuild.hpp index 17d0c8961..a573af0b1 100644 --- a/src/tools/ecode/projectbuild.hpp +++ b/src/tools/ecode/projectbuild.hpp @@ -277,6 +277,8 @@ class ProjectBuildManager { const std::string& buildType = "", bool isClean = false ); + void replaceDynamicVars( ProjectBuildCommand& cmd ); + ProjectBuildOutputParser getOutputParser( const std::string& buildName ); const ProjectBuild::Map& getBuilds() const { return mBuilds; }