File: clConsoleCMD.cpp

package info (click to toggle)
codelite 14.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 112,816 kB
  • sloc: cpp: 483,662; ansic: 150,144; php: 9,569; lex: 4,186; python: 3,417; yacc: 2,820; sh: 1,147; makefile: 52; xml: 13
file content (42 lines) | stat: -rw-r--r-- 1,350 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include "clConsoleCMD.h"
#include "dirsaver.h"
#include <wx/filename.h>
#include <wx/utils.h>

clConsoleCMD::clConsoleCMD() {}

clConsoleCMD::~clConsoleCMD() {}

bool clConsoleCMD::Start()
{
    DirSaver ds; // restore the directory upon exiting this function
    wxFileName fn(GetWorkingDirectory(), "");
    if(fn.DirExists()) { ::wxSetWorkingDirectory(fn.GetPath()); }
    return StartProcess(PrepareCommand());
}

bool clConsoleCMD::StartForDebugger() { return false; }

wxString clConsoleCMD::PrepareCommand()
{
    // Build the command to execute
    wxString commandToExecute;
    if(IsTerminalNeeded()) { commandToExecute << "cmd"; }

    // For testing purposes
    wxArrayString args = SplitArguments(GetCommandArgs());
    wxUnusedVar(args);
    wxString command = WrapWithQuotesIfNeeded(GetCommand());
    if(!command.IsEmpty()) {
        if(IsTerminalNeeded()) {
            commandToExecute << " /C ";

            // We prepend 'call' to the execution to make sure that the execution is always returning 0
            if(IsWaitWhenDone()) { commandToExecute << " call "; }
        }
        commandToExecute << command;
        if(!GetCommandArgs().IsEmpty()) { commandToExecute << " " << GetCommandArgs(); }
        if(IsTerminalNeeded() && IsWaitWhenDone()) { commandToExecute << " && pause"; }
    }
    return commandToExecute;
}