[HIPIFY] Scripting related refactoring
+ Move generating hipify-perl and hipify-python into separate namespaces and files + Move getAbsoluteFilePath and getAbsoluteDirectoryPath to StringUtils
This commit is contained in:
@@ -21,6 +21,10 @@ THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "StringUtils.h"
|
||||
#include "LLVMCompat.h"
|
||||
#include "llvm/ADT/SmallString.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
llvm::StringRef unquoteStr(llvm::StringRef s) {
|
||||
if (s.size() > 1 && s.front() == '"' && s.back() == '"') {
|
||||
@@ -35,3 +39,59 @@ void removePrefixIfPresent(std::string &s, const std::string& prefix) {
|
||||
}
|
||||
s.erase(0, prefix.size());
|
||||
}
|
||||
|
||||
std::string getAbsoluteFilePath(const std::string& sFile, std::error_code& EC) {
|
||||
if (sFile.empty()) {
|
||||
return sFile;
|
||||
}
|
||||
if (!sys::fs::exists(sFile)) {
|
||||
llvm::errs() << "\n" << sHipify << sError << "source file: " << sFile << " doesn't exist\n";
|
||||
EC = std::error_code(static_cast<int>(std::errc::no_such_file_or_directory), std::generic_category());
|
||||
return "";
|
||||
}
|
||||
SmallString<256> fileAbsPath;
|
||||
EC = llcompat::real_path(sFile, fileAbsPath, true);
|
||||
if (EC) {
|
||||
llvm::errs() << "\n" << sHipify << sError << EC.message() << ": source file: " << sFile << "\n";
|
||||
return "";
|
||||
}
|
||||
EC = std::error_code();
|
||||
return fileAbsPath.c_str();
|
||||
}
|
||||
|
||||
std::string getAbsoluteDirectoryPath(const std::string& sDir, std::error_code& EC,
|
||||
const std::string& sDirType, bool bCreateDir) {
|
||||
if (sDir.empty()) {
|
||||
return sDir;
|
||||
}
|
||||
EC = std::error_code();
|
||||
SmallString<256> dirAbsPath;
|
||||
if (sys::fs::exists(sDir)) {
|
||||
if (sys::fs::is_regular_file(sDir)) {
|
||||
llvm::errs() << "\n" << sHipify << sError << sDir << " is not a directory\n";
|
||||
EC = std::error_code(static_cast<int>(std::errc::not_a_directory), std::generic_category());
|
||||
return "";
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (bCreateDir) {
|
||||
EC = sys::fs::create_directory(sDir);
|
||||
if (EC) {
|
||||
llvm::errs() << "\n" << sHipify << sError << EC.message() << ": " << sDirType << " directory: " << sDir << "\n";
|
||||
return "";
|
||||
}
|
||||
}
|
||||
else {
|
||||
llvm::errs() << "\n" << sHipify << sError << sDirType << " directory: " << sDir << " doesn't exist\n";
|
||||
EC = std::error_code(static_cast<int>(std::errc::no_such_file_or_directory), std::generic_category());
|
||||
return "";
|
||||
}
|
||||
}
|
||||
EC = llcompat::real_path(sDir, dirAbsPath, true);
|
||||
if (EC) {
|
||||
llvm::errs() << "\n" << sHipify << sError << EC.message() << ": " << sDirType << " directory: " << sDir << "\n";
|
||||
return "";
|
||||
}
|
||||
return dirAbsPath.c_str();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user