swift
directoryutils.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2016 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #ifndef SWIFT_MISC_DIRECTORYUTILS_H
7 #define SWIFT_MISC_DIRECTORYUTILS_H
8 
9 #include <QDir>
10 #include <QFileInfoList>
11 #include <QSet>
12 #include <QString>
13 
14 #include "misc/swiftmiscexport.h"
15 
16 namespace swift::misc
17 {
22  {
23  public:
25  static bool isInApplicationDirectory(const QString &path);
26 
30  static bool isMacOSAppBundle();
31 
33  static QString decodeNormalizedDirectory(const QString &directory);
34 
36  static QStringList getRelativeSubDirectories(const QString &rootDir);
37 
39  static bool containsFileInDir(const QString &dir, const QString &filter, bool recursively);
40 
42  static bool existsUnemptyDirectory(const QString &testDir);
43 
46  static bool mkPathIfNotExisting(const QString &dir);
47 
49  static int copyDirectoryRecursively(const QString &fromDir, const QString &toDir, bool replaceOnConflict);
50 
52  static QStringList getExistingUnemptyDirectories(const QStringList &directories);
53 
58  static bool isDirExisting(const QString &path);
59  static bool isDirExisting(const QDir &dir);
61 
63  static bool isSameExistingDirectory(const QString &dir1, const QString &dir2);
64 
67  static bool isSameOrSubDirectoryOf(const QString &testDir, const QString &parentDir);
68 
71  static bool isSameOrSubDirectoryOf(const QString &testDir, const QDir &parentDir);
72 
75  static bool isSameOrSubDirectoryOfStringBased(const QString &testDir, const QString &parentDir);
76 
79  {
80  bool ok = false;
81  QSet<QString> source;
82  QSet<QString> missingInSource;
83  QSet<QString> missingInTarget;
84  QSet<QString> newerInSource;
85  QSet<QString> newerInTarget;
86  QSet<QString> sameNameInSource;
87  QSet<QString> sameNameInTarget;
88 
90  void insert(const DirComparison &otherComparison);
91  };
92 
94  static DirComparison compareTwoDirectories(const QString &dirSource, const QString &dirTarget, bool nestedDirs);
95 
96  private:
98  static QSet<QString> fileNamesToQSet(const QFileInfoList &fileInfoList);
99 
101  static QSet<QString> canonicalFileNamesToQSet(const QFileInfoList &fileInfoList);
102 
104  static QSet<QString> filesToCanonicalNames(const QSet<QString> &fileNames,
105  const QSet<QString> &canonicalFileNames);
106 
108  static bool canPingUncMachine(const QString &machine);
109  };
110 } // namespace swift::misc
111 
112 #endif // SWIFT_MISC_DIRECTORYUTILS_H
Utility class for directory operations.
static bool isDirExisting(const QDir &dir)
Directory existing? Also checking UNC paths upfront.
static QStringList getRelativeSubDirectories(const QString &rootDir)
All sub directories of given dir.
static bool mkPathIfNotExisting(const QString &dir)
Make directory if not already existing.
static DirComparison compareTwoDirectories(const QString &dirSource, const QString &dirTarget, bool nestedDirs)
Compare 2 directories (only files, but with hierarchy)
static QString decodeNormalizedDirectory(const QString &directory)
Virtually the inverse operation of CDirectoryUtils::normalizedApplicationDirectory.
static bool isMacOSAppBundle()
Is MacOS application bundle?
static bool isSameOrSubDirectoryOf(const QString &testDir, const QString &parentDir)
Is "testDir" a subdirectory (possibly nested) of "parentDir" or the same directory.
static bool isInApplicationDirectory(const QString &path)
Path in application directory.
static bool containsFileInDir(const QString &dir, const QString &filter, bool recursively)
Any file with filter like "*.txt".
static QStringList getExistingUnemptyDirectories(const QStringList &directories)
Get the existing directories.
static bool isSameOrSubDirectoryOfStringBased(const QString &testDir, const QString &parentDir)
Is "testDir" a subdirectory (possibly nested) of "parentDir" or the same directory.
static bool existsUnemptyDirectory(const QString &testDir)
Exists directory and does it contains files.
static bool isSameOrSubDirectoryOf(const QString &testDir, const QDir &parentDir)
Is "testDir" a subdirectory (possibly nested) of "parentDir" or the same directory.
static int copyDirectoryRecursively(const QString &fromDir, const QString &toDir, bool replaceOnConflict)
Copy directory recursively.
static bool isSameExistingDirectory(const QString &dir1, const QString &dir2)
Same existing directories.
static bool isDirExisting(const QString &path)
Directory existing? Also checking UNC paths upfront.
Free functions in swift::misc.
Result of directory comparison.
QSet< QString > missingInTarget
files not in target, but in source
QSet< QString > sameNameInTarget
file exists in source and target, target name
QSet< QString > source
all source files
QSet< QString > newerInTarget
file in target is newer
void insert(const DirComparison &otherComparison)
Insert values of another comparison.
QSet< QString > newerInSource
file exists in target, but source is newer
QSet< QString > sameNameInSource
file exists in source and target, source name
QSet< QString > missingInSource
files not in source, but in target
#define SWIFT_MISC_EXPORT
Export a class or function from the library.