// Copyright (C) Filippo Cucchetto // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #include "nimblerunconfiguration.h" #include "nimbuildsystem.h" #include "nimconstants.h" #include "nimtr.h" #include #include #include #include #include #include using namespace ProjectExplorer; namespace Nim { // NimbleRunConfiguration class NimbleRunConfiguration : public RunConfiguration { public: NimbleRunConfiguration(Target *target, Utils::Id id) : RunConfiguration(target, id) { auto envAspect = addAspect(target); addAspect(target, ExecutableAspect::RunDevice); addAspect(macroExpander()); addAspect(macroExpander(), envAspect); addAspect(); setUpdater([this] { BuildTargetInfo bti = buildTargetInfo(); setDisplayName(bti.displayName); setDefaultDisplayName(bti.displayName); aspect()->setExecutable(bti.targetFilePath); aspect()->setDefaultWorkingDirectory(bti.workingDirectory); }); connect(target, &Target::buildSystemUpdated, this, &RunConfiguration::update); update(); } }; NimbleRunConfigurationFactory::NimbleRunConfigurationFactory() : RunConfigurationFactory() { registerRunConfiguration("Nim.NimbleRunConfiguration"); addSupportedProjectType(Constants::C_NIMBLEPROJECT_ID); addSupportedTargetDeviceType(ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE); } // NimbleTestConfiguration class NimbleTestConfiguration : public RunConfiguration { public: NimbleTestConfiguration(ProjectExplorer::Target *target, Utils::Id id) : RunConfiguration(target, id) { addAspect(target, ExecutableAspect::BuildDevice) ->setExecutable(Nim::nimblePathFromKit(target->kit())); addAspect(macroExpander())->setArguments("test"); addAspect(macroExpander(), nullptr) ->setDefaultWorkingDirectory(project()->projectDirectory()); addAspect(); setDisplayName(Tr::tr("Nimble Test")); setDefaultDisplayName(Tr::tr("Nimble Test")); } }; NimbleTestConfigurationFactory::NimbleTestConfigurationFactory() : FixedRunConfigurationFactory(QString()) { registerRunConfiguration("Nim.NimbleTestConfiguration"); addSupportedProjectType(Constants::C_NIMBLEPROJECT_ID); } } // Nim