Utils: Add/fix FilePath::isFile and FilePath::isDir

In general, the more specific isReadableFile etc are preferred, but for
porting a 1:1 match to QFileInfo functionality is helpful.

Change-Id: I5b575ca9a5053f13f63c0fbe0e3dcc222494280f
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
hjk
2021-07-14 07:41:23 +02:00
parent 55082986e1
commit e8521e6fe1
9 changed files with 100 additions and 7 deletions

View File

@@ -925,6 +925,38 @@ bool DockerDevice::isWritableDirectory(const FilePath &filePath) const
return exitCode == 0;
}
bool DockerDevice::isFile(const FilePath &filePath) const
{
QTC_ASSERT(handlesFile(filePath), return false);
tryCreateLocalFileAccess();
if (hasLocalFileAccess()) {
const FilePath localAccess = mapToLocalAccess(filePath);
const bool res = localAccess.isFile();
LOG("IsFile? " << filePath.toUserOutput() << localAccess.toUserOutput() << res);
return res;
}
const QString path = filePath.path();
const CommandLine cmd("test", {"-f", path});
const int exitCode = d->runSynchronously(cmd);
return exitCode == 0;
}
bool DockerDevice::isDirectory(const FilePath &filePath) const
{
QTC_ASSERT(handlesFile(filePath), return false);
tryCreateLocalFileAccess();
if (hasLocalFileAccess()) {
const FilePath localAccess = mapToLocalAccess(filePath);
const bool res = localAccess.isDir();
LOG("IsDirectory? " << filePath.toUserOutput() << localAccess.toUserOutput() << res);
return res;
}
const QString path = filePath.path();
const CommandLine cmd("test", {"-d", path});
const int exitCode = d->runSynchronously(cmd);
return exitCode == 0;
}
bool DockerDevice::createDirectory(const FilePath &filePath) const
{
QTC_ASSERT(handlesFile(filePath), return false);