logic: enviroment variable handling
* expanding env vars for existsens check * expand source paths in filemanager
This commit is contained in:
@@ -3,11 +3,13 @@
|
||||
set(upxPath ${CMAKE_CURRENT_LIST_DIR}/../bin/app/Release)
|
||||
message(STATUS "upx the app")
|
||||
execute_process(
|
||||
COMMAND rm ${upxPath}/Coati_upx
|
||||
COMMAND upx --brute ${upxPath}/Coati -o ${upxPath}/Coati_upx
|
||||
)
|
||||
|
||||
message(STATUS "upx the trial")
|
||||
execute_process(
|
||||
COMMAND rm ${upxPath}/Coati_trial_upx
|
||||
COMMAND upx --brute ${upxPath}/Coati_trial -o ${upxPath}/Coati_trial_upx
|
||||
)
|
||||
|
||||
|
||||
+12
-10
@@ -15,8 +15,10 @@ elif [ "$(expr substr $(uname -s) 1 10)" == "MINGW32_NT" ]; then
|
||||
fi
|
||||
|
||||
# Enter masterproject directory
|
||||
SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )"
|
||||
ROOT_DIR=$SCRIPT_DIR/..
|
||||
MY_PATH=`dirname "$0"`
|
||||
cd $MY_PATH/..
|
||||
cd $ROOT_DIR
|
||||
|
||||
# git settings
|
||||
echo -e $INFO "install git settings"
|
||||
@@ -49,17 +51,17 @@ if [ $PLATFORM == "Windows" ]; then
|
||||
echo -e $INFO "creating program icon"
|
||||
sh script/create_windows_icon.sh
|
||||
|
||||
cmd //c 'mklink /d /j '.$MY_PATH.'\..\bin\app\Debug\data '.$MY_PATH.'\..\bin\app\data' &
|
||||
cmd //c 'mklink /d /j '.$MY_PATH.'\..\bin\app\Debug\user '.$MY_PATH.'\..\bin\app\user' &
|
||||
cmd //c 'mklink /d /j '.$MY_PATH.'\..\bin\app\Release\data '.$MY_PATH.'\..\bin\app\data' &
|
||||
cmd //c 'mklink /d /j '.$MY_PATH.'\..\bin\app\Release\user '.$MY_PATH.'\..\bin\app\user' &
|
||||
cmd //c 'mklink /d /j '.$ROOT_DIR.'\bin\app\Debug\data '.$ROOT_DIR.'\bin\app\data' &
|
||||
cmd //c 'mklink /d /j '.$ROOT_DIR.'\bin\app\Debug\user '.$ROOT_DIR.'\bin\app\user' &
|
||||
cmd //c 'mklink /d /j '.$ROOT_DIR.'\bin\app\Release\data '.$ROOT_DIR.'\bin\app\data' &
|
||||
cmd //c 'mklink /d /j '.$ROOT_DIR.'\bin\app\Release\user '.$ROOT_DIR.'\bin\app\user' &
|
||||
elif [ $PLATFORM == "Linux" ]; then
|
||||
echo -e $INFO "create symbolic links for data"
|
||||
cd bin/app/Release
|
||||
ln -s ../data data
|
||||
cd ../Debug
|
||||
ln -s ../data data
|
||||
cd ../../..
|
||||
cd $ROOT_DIR/bin/app/Release
|
||||
ln -s ../data
|
||||
cd $ROOT_DIR/bin/app/Debug
|
||||
ln -s ../data
|
||||
cd $ROOT_DIR
|
||||
fi
|
||||
|
||||
# Setup both Debug and Release configuration
|
||||
|
||||
@@ -242,6 +242,7 @@ void ProjectSettings::makePathsAbsolute(std::vector<FilePath>& paths) const
|
||||
FilePath basePath = getFilePath().parentDirectory();
|
||||
for (size_t i = 0; i < paths.size(); i++)
|
||||
{
|
||||
paths[i] = paths[i].expandEnvironmentVariables();
|
||||
if (!paths[i].isAbsolute())
|
||||
{
|
||||
paths[i] = basePath.concat(paths[i]).canonical();
|
||||
|
||||
@@ -26,8 +26,14 @@ void FileManager::setPaths(
|
||||
std::vector<std::string> sourceExtensions,
|
||||
std::vector<std::string> includeExtensions
|
||||
){
|
||||
m_sourcePaths = sourcePaths;
|
||||
m_headerPaths = headerPaths;
|
||||
for ( FilePath path : sourcePaths )
|
||||
{
|
||||
m_sourcePaths.push_back(path.expandEnvironmentVariables());
|
||||
}
|
||||
for ( FilePath path : headerPaths )
|
||||
{
|
||||
m_headerPaths.push_back(path.expandEnvironmentVariables());
|
||||
}
|
||||
m_sourceExtensions = sourceExtensions;
|
||||
m_includeExtensions = includeExtensions;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
#include "utility/file/FilePath.h"
|
||||
|
||||
#include <regex>
|
||||
#include "utility/logging/logging.h"
|
||||
|
||||
FilePath::FilePath()
|
||||
: m_exists(false)
|
||||
{
|
||||
@@ -98,6 +101,29 @@ FilePath FilePath::canonical() const
|
||||
return result;
|
||||
}
|
||||
|
||||
FilePath FilePath::expandEnvironmentVariables() const
|
||||
{
|
||||
return FilePath(expandEnvironmentVariables(str()));
|
||||
}
|
||||
|
||||
std::string FilePath::expandEnvironmentVariables(const std::string& path) const
|
||||
{
|
||||
std::string text = path;
|
||||
|
||||
static std::regex env( "\\$\\{([^}]+)\\}|%([0-9A-Za-z\\/]*)%" );
|
||||
std::smatch match;
|
||||
while ( std::regex_search( text, match, env ) ) {
|
||||
const char * s = getenv( match[1].str().c_str() );
|
||||
if (s == nullptr)
|
||||
{
|
||||
LOG_ERROR(match[1].str() + " is no a environment variable");
|
||||
return path;
|
||||
}
|
||||
text.replace( match[0].first, match[0].second, s);
|
||||
}
|
||||
return text;
|
||||
}
|
||||
|
||||
FilePath FilePath::relativeTo(const FilePath& other) const
|
||||
{
|
||||
boost::filesystem::path a = m_path;
|
||||
@@ -202,7 +228,8 @@ bool FilePath::operator<(const FilePath& other) const
|
||||
|
||||
void FilePath::init()
|
||||
{
|
||||
if (boost::filesystem::exists(m_path))
|
||||
boost::filesystem::path p(expandEnvironmentVariables(m_path.generic_string()));
|
||||
if (boost::filesystem::exists(p))
|
||||
{
|
||||
m_exists = true;
|
||||
}
|
||||
|
||||
@@ -26,6 +26,8 @@ public:
|
||||
FilePath canonical() const;
|
||||
FilePath relativeTo(const FilePath& other) const;
|
||||
FilePath concat(const FilePath& other) const;
|
||||
FilePath expandEnvironmentVariables() const;
|
||||
std::string expandEnvironmentVariables(const std::string & path) const;
|
||||
|
||||
std::string str() const;
|
||||
std::string fileName() const;
|
||||
|
||||
@@ -76,13 +76,13 @@ void QtListItemWidget::handleButtonPress()
|
||||
|
||||
QListView *l = dialog.findChild<QListView*>("listView");
|
||||
if (l)
|
||||
{
|
||||
l->setSelectionMode(QAbstractItemView::SingleSelection);
|
||||
}
|
||||
QTreeView *t = dialog.findChild<QTreeView*>();
|
||||
{
|
||||
l->setSelectionMode(QAbstractItemView::SingleSelection);
|
||||
}
|
||||
QTreeView *t = dialog.findChild<QTreeView*>();
|
||||
if (t)
|
||||
{
|
||||
t->setSelectionMode(QAbstractItemView::SingleSelection);
|
||||
t->setSelectionMode(QAbstractItemView::SingleSelection);
|
||||
}
|
||||
|
||||
if (dialog.exec())
|
||||
|
||||
@@ -98,7 +98,6 @@ void QtStartScreen::updateButtons()
|
||||
button->setProjectPath(recentProjects[i]);
|
||||
button->setFixedWidth(button->fontMetrics().width(button->text()) + 45);
|
||||
connect(button, SIGNAL(clicked()), button, SLOT(handleButtonClick()));
|
||||
//button->setGeometry(292, button->pos().y(), button->fontMetrics().width(button->text()) + 45, 40);
|
||||
if (button->projectExists())
|
||||
{
|
||||
button->setObjectName("recentButton");
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
|
||||
#include "qt/element/QtDirectoryListBox.h"
|
||||
#include "settings/ApplicationSettings.h"
|
||||
#include "utility/file/FileManager.h"
|
||||
#include "utility/file/FileSystem.h"
|
||||
#include "utility/headerSearch/StandardHeaderDetection.h"
|
||||
#include "utility/utility.h"
|
||||
@@ -207,6 +208,25 @@ bool QtProjectWizzardContentPathsSource::check()
|
||||
msgBox.exec();
|
||||
return false;
|
||||
}
|
||||
QString missingPaths;
|
||||
for(FilePath f : m_list->getList())
|
||||
{
|
||||
if(!f.exists())
|
||||
{
|
||||
if(!missingPaths.isEmpty())
|
||||
{
|
||||
missingPaths.append("\n");
|
||||
}
|
||||
missingPaths.append(f.expandEnvironmentVariables().str().c_str());
|
||||
}
|
||||
if(!missingPaths.isEmpty())
|
||||
{
|
||||
QMessageBox msgBox;
|
||||
msgBox.setText("The following paths do not exist:\n" + missingPaths );
|
||||
msgBox.exec();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user