Добавлено обнаружение в иерархии /usr/local

This commit is contained in:
Andrei Astafev 2020-04-11 19:10:58 +03:00
parent b83bf641d3
commit 307437caee
2 changed files with 40 additions and 8 deletions

View File

@ -48,6 +48,27 @@ Paths::HierarchyType Paths::getHierarchyType()
return ( HierarchyType::kOpt );
}
if ( binaryDir.startsWith( QStringLiteral( "/usr/local" ) ) )
{
QFileInfo etcDirInfo { "/usr/local/etc/" + m_projectName };
if ( !etcDirInfo.isDir() || !etcDirInfo.isReadable() ) { return( HierarchyType::kFlat ); }
QFileInfo constDataDirInfo { "/usr/local/share/" + m_projectName };
if ( !constDataDirInfo.isDir() || !constDataDirInfo.isReadable() ) { return( HierarchyType::kFlat ); }
QFileInfo varDataDirInfo { "/var/lib/" + m_projectName };
if ( !varDataDirInfo.isDir() || !varDataDirInfo.isWritable() ) { return( HierarchyType::kFlat ); }
QFileInfo logDirInfo { "/var/log/" + m_projectName };
if ( !logDirInfo.isDir() || !logDirInfo.isWritable() ) { return( HierarchyType::kFlat ); }
m_systemConfigDirectory = etcDirInfo.canonicalFilePath();
m_systemConstDataDirectory = constDataDirInfo.canonicalFilePath();
m_systemVarDataDirectory = varDataDirInfo.canonicalFilePath();
m_systemLogDirectory = logDirInfo.canonicalFilePath();
return ( HierarchyType::kUsr );
}
if ( binaryDir.startsWith( QStringLiteral( "/usr" ) ) )
{
QFileInfo etcDirInfo { "/etc/" + m_projectName };
@ -67,7 +88,7 @@ Paths::HierarchyType Paths::getHierarchyType()
m_systemVarDataDirectory = varDataDirInfo.canonicalFilePath();
m_systemLogDirectory = logDirInfo.canonicalFilePath();
return ( HierarchyType::kStandard );
return ( HierarchyType::kUsr );
}
if ( binaryDir.startsWith( m_homeDirectory.canonicalPath() + "/.local/bin" ) ||
@ -112,7 +133,7 @@ Paths::HierarchyType Paths::getHierarchyType()
m_systemVarDataDirectory = varDataDirInfo.canonicalFilePath();
m_systemLogDirectory = logDirInfo.canonicalFilePath();
return ( HierarchyType::kUser );
return ( HierarchyType::kDevelopment );
} // Paths::getHierarchyType

View File

@ -23,12 +23,23 @@ class Paths
{
enum class HierarchyType : intptr_t
{
kSplit = 0x00,
kFlat = 0x01,
kOpt = 0x02,
kStandard = 0x04,
kUser = 0x08,
kHome = 0x10,
/// @brief Тип расположения файлов не определён
kUndefined = 0x00,
/// @brief Не определено ни одно из типовых размещений файлов
/// @details Если исполняемый файл не находится в каталоге bin или не найдены
/// необходимые сопутствующие каталоги, то предполается,
/// что все файлы находятся в одном каталоге с исполняемым файлом
kFlat = 0x01,
/// @brief Исполняемый файл и сопутствующие каталоги находятся в иерахии /opt
kOpt = 0x02,
/// @brief Исполняемый файл и сопутствующие каталоги находятся в иерахии /usr
kUsr = 0x04,
/// @brief Исполняемый файл и сопутствующие каталоги находятся в иерахии /usr/local
kUsrLocal = 0x08,
/// @brief Исполняемый файл и сопутствующие каталоги находятся в иерахии /home
kHome = 0x10,
/// @brief Исполняемый файл и сопутствующие каталоги находятся в каталоге программного проекта
kDevelopment = 0x20
};
/// @brief Тип расположения файлов по каталогам