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
|
#include "NodeJSExecutable.h"
#include "asyncprocess.h"
#include "globals.h"
#include "clNodeJS.h"
#define DEFAULT_VERSION 4
NodeJSExecutable::NodeJSExecutable(const wxFileName& exePath)
: m_exePath(exePath)
{
}
NodeJSExecutable::NodeJSExecutable()
{
m_exePath = clNodeJS::Get().GetNode();
}
NodeJSExecutable::~NodeJSExecutable() {}
bool NodeJSExecutable::Exists() const { return m_exePath.FileExists(); }
int NodeJSExecutable::GetMajorVersion() const
{
if(!Exists()) { return DEFAULT_VERSION; }
wxString command;
wxString version_output;
command << m_exePath.GetFullPath();
::WrapWithQuotes(command);
command << " -v";
IProcess::Ptr_t cmd(::CreateSyncProcess(command, IProcessCreateDefault));
cmd->WaitForTerminate(version_output);
if(version_output.IsEmpty()) { return DEFAULT_VERSION; }
version_output.StartsWith("v", &version_output);
version_output = version_output.BeforeFirst('.');
long nMajorVersion = DEFAULT_VERSION;
if(version_output.ToCLong(&nMajorVersion)) { return nMajorVersion; }
return DEFAULT_VERSION;
}
|