3 #include <Strings/components/logger/logger.h>
4 #include <Strings/components/utils/io/io.h>
5 #include <Strings/components/utils/converters/converters.h>
6 #include <HEKGuerilla/components/projects/projects.h>
8 #include "../ToolCommand.hpp"
9 #include "../console.h"
11 #ifdef TOOL_LIB_EXPORTS
12 #define TOOL_LIB_API __declspec(dllexport)
14 #define TOOL_LIB_API __declspec(dllimport)
29 syntax =
"choose-project <id>";
30 description =
"selects a project by id. use list-projects to view available projects and their associated ids.";
33 int execute(std::vector<std::string> args)
37 BlamStrings::Logger::LogEvent(
"not enough arguments provided - you must specify a project id", WSV_WARNING);
41 if (!BlamStrings::Converters::IsStringInt(args.at(0)))
43 BlamStrings::Logger::LogEvent(
"invalid arguments provided - id must be an integer", WSV_WARNING);
47 int id = BlamStrings::Converters::StringToInt(args.at(0));
49 Guerilla::Projects::LoadProjects();
50 std::vector<BlamProject*> projects = Guerilla::Projects::GetLoadedProjects();
52 if (id < 0 || id >= projects.size())
54 BlamStrings::Logger::LogEvent(
"invalid arguments provided - id must be between 0 and " + std::to_string(projects.size() - 1), WSV_WARNING);
58 std::string dir = projects.at(
id)->project_root;
60 if (BlamStrings::Utils::IO::CreateNewFile(
".TOOL_PROJECT_ROOT", dir))
62 BlamStrings::Logger::LogEvent(
"successfully set project root to '" + dir +
"'");
66 BlamStrings::Logger::LogEvent(
"could not change project root: CreateNewFile() returned false", WSV_WARNING);