More WIP implementing more functionalities in DAP. This commit will probably fail on some OSes.

This commit is contained in:
Martín Lucas Golini
2025-01-11 16:24:27 -03:00
parent 5dc0bd24cc
commit 2f6f825a63
22 changed files with 758 additions and 120 deletions

View File

@@ -734,10 +734,14 @@ void ProjectBuildManager::setConfig( const ProjectBuildConfiguration& config ) {
}
}
ProjectBuild* ProjectBuildManager::getCurrentBuild() {
return getBuild( mConfig.buildName );
}
void ProjectBuildManager::buildCurrentConfig( StatusBuildOutputController* sboc,
std::function<void( int exitStatus )> doneFn ) {
if ( sboc && !isBuilding() && !getBuilds().empty() ) {
const ProjectBuild* build = getBuild( mConfig.buildName );
const ProjectBuild* build = getCurrentBuild();
if ( build ) {
mApp->saveAll();
sboc->runBuild( build->getName(), mConfig.buildType,
@@ -748,7 +752,7 @@ void ProjectBuildManager::buildCurrentConfig( StatusBuildOutputController* sboc,
void ProjectBuildManager::cleanCurrentConfig( StatusBuildOutputController* sboc ) {
if ( sboc && !isBuilding() && !getBuilds().empty() ) {
const ProjectBuild* build = getBuild( mConfig.buildName );
const ProjectBuild* build = getCurrentBuild();
if ( build )
sboc->runBuild( build->getName(), mConfig.buildType,
getOutputParser( build->getName() ), true );
@@ -773,7 +777,7 @@ bool ProjectBuildManager::hasBuildConfig() const {
bool ProjectBuildManager::hasRunConfig() {
if ( hasBuildConfig() ) {
auto build = getBuild( mConfig.buildName );
auto build = getCurrentBuild();
return build != nullptr && build->hasRun();
}
return false;
@@ -781,7 +785,7 @@ bool ProjectBuildManager::hasRunConfig() {
bool ProjectBuildManager::hasBuildConfigWithBuildSteps() {
if ( hasBuildConfig() ) {
auto build = getBuild( mConfig.buildName );
auto build = getCurrentBuild();
return build != nullptr && build->hasBuild();
}
return {};
@@ -789,7 +793,7 @@ bool ProjectBuildManager::hasBuildConfigWithBuildSteps() {
std::optional<ProjectBuildStep> ProjectBuildManager::getCurrentRunConfig() {
if ( hasBuildConfig() ) {
auto build = getBuild( mConfig.buildName );
auto build = getCurrentBuild();
if ( build != nullptr && build->hasRun() ) {
for ( const auto& crun : build->mRun ) {
if ( crun->name == mConfig.runName || mConfig.runName.empty() ) {
@@ -804,7 +808,7 @@ std::optional<ProjectBuildStep> ProjectBuildManager::getCurrentRunConfig() {
void ProjectBuildManager::runConfig( StatusAppOutputController* saoc ) {
if ( !isRunningApp() && !getBuilds().empty() ) {
BoolScopedOp op( mRunning, true );
const ProjectBuild* build = getBuild( mConfig.buildName );
const ProjectBuild* build = getCurrentBuild();
if ( nullptr == build || !build->hasRun() )
return;
@@ -834,7 +838,8 @@ void ProjectBuildManager::runConfig( StatusAppOutputController* saoc ) {
auto cmd = finalBuild.cmd + " " + finalBuild.args;
if ( finalBuild.runInTerminal ) {
UITerminal* term = mApp->getTerminalManager()->createTerminalInSplitter(
finalBuild.workingDir, false );
finalBuild.workingDir, "", {}, false );
Log::info( "Running \"%s\" in terminal", cmd );
if ( term == nullptr || term->getTerm() == nullptr ) {
mApp->getTerminalManager()->openInExternalTerminal( cmd, finalBuild.workingDir );