Добавлено обнаружение в иерархии /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 ); 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" ) ) ) if ( binaryDir.startsWith( QStringLiteral( "/usr" ) ) )
{ {
QFileInfo etcDirInfo { "/etc/" + m_projectName }; QFileInfo etcDirInfo { "/etc/" + m_projectName };
@ -67,7 +88,7 @@ Paths::HierarchyType Paths::getHierarchyType()
m_systemVarDataDirectory = varDataDirInfo.canonicalFilePath(); m_systemVarDataDirectory = varDataDirInfo.canonicalFilePath();
m_systemLogDirectory = logDirInfo.canonicalFilePath(); m_systemLogDirectory = logDirInfo.canonicalFilePath();
return ( HierarchyType::kStandard ); return ( HierarchyType::kUsr );
} }
if ( binaryDir.startsWith( m_homeDirectory.canonicalPath() + "/.local/bin" ) || if ( binaryDir.startsWith( m_homeDirectory.canonicalPath() + "/.local/bin" ) ||
@ -112,7 +133,7 @@ Paths::HierarchyType Paths::getHierarchyType()
m_systemVarDataDirectory = varDataDirInfo.canonicalFilePath(); m_systemVarDataDirectory = varDataDirInfo.canonicalFilePath();
m_systemLogDirectory = logDirInfo.canonicalFilePath(); m_systemLogDirectory = logDirInfo.canonicalFilePath();
return ( HierarchyType::kUser ); return ( HierarchyType::kDevelopment );
} // Paths::getHierarchyType } // Paths::getHierarchyType

View File

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