summaryrefslogtreecommitdiff
path: root/l10ntools/source/localize.cxx
diff options
context:
space:
mode:
authorChristian Lohmaier <lohmaier+LibreOffice@googlemail.com>2018-11-12 13:09:23 +0100
committerCaolán McNamara <caolanm@redhat.com>2018-11-21 13:40:56 +0100
commitb29fdf7611d7637886d8d0c50edf5544b928e635 (patch)
tree6945be65cbb2de568f20ca3b03d6d69652230766 /l10ntools/source/localize.cxx
parent52bc5ad50fefb649f5172f5da66e37cc4bb0d067 (diff)
localize: sort directories to have predictable sorting in pot files
also remove pre-onegit special handling Change-Id: Ie60be508a188e00b9eea1b743ea10f1f985c459e Reviewed-on: https://gerrit.libreoffice.org/63288 Tested-by: Jenkins Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com> (cherry picked from commit 344773c608ea28718b630590ee1023247aa62d63) Reviewed-on: https://gerrit.libreoffice.org/63602 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'l10ntools/source/localize.cxx')
-rw-r--r--l10ntools/source/localize.cxx55
1 files changed, 21 insertions, 34 deletions
diff --git a/l10ntools/source/localize.cxx b/l10ntools/source/localize.cxx
index 98098b775456..d36b4f7f6e78 100644
--- a/l10ntools/source/localize.cxx
+++ b/l10ntools/source/localize.cxx
@@ -23,6 +23,7 @@
#include <cstdlib>
#include <iostream>
#include <string>
+#include <map>
#include <vector>
#include <algorithm>
@@ -317,10 +318,9 @@ bool includeProject(const OString& rProject) {
///
/// @param rUrl the absolute file URL of this directory
///
-/// @param nLevel 0 if this is either the root directory that contains the
-/// projects or one of the clone/* or src/* directories that contain the
-/// additional projects; -1 if this is the clone directory; 1 if this
-/// is a project directory; 2 if this is a directory inside a project
+/// @param nLevel 0 if this is the root directory (core repository)
+/// that contains the individual modules. 1 if it is a toplevel module and
+/// larger values for the subdirectories.
///
/// @param rProject the name of the project (empty and ignored if nLevel <= 0)
/// @param rPotDir the path of pot directory
@@ -335,6 +335,7 @@ void handleDirectory(
throw false; //TODO
}
std::vector<OUString> aFileNames;
+ std::map<OUString, std::map<OString, OString>> aSubDirs;
for (;;) {
osl::DirectoryItem item;
osl::FileBase::RC e = dir.getNextItem(item);
@@ -354,36 +355,18 @@ void handleDirectory(
}
const OString sDirName =
OUStringToOString(stat.getFileName(),RTL_TEXTENCODING_UTF8);
- switch (nLevel) {
- case -1: // the clone or src directory
- if (stat.getFileType() == osl::FileStatus::Directory) {
- handleDirectory(
- stat.getFileURL(), 0, OString(), rPotDir);
- }
- break;
- case 0: // a root directory
- if (stat.getFileType() == osl::FileStatus::Directory) {
- if (includeProject(sDirName)) {
- handleDirectory(
- stat.getFileURL(), 1, sDirName, rPotDir.concat("/").concat(sDirName));
- } else if ( sDirName == "clone" ||
- sDirName == "src" )
- {
- handleDirectory( stat.getFileURL(), -1, OString(), rPotDir);
- }
- }
- break;
- default:
- if (stat.getFileType() == osl::FileStatus::Directory)
- {
- handleDirectory(
- stat.getFileURL(), 2, rProject, rPotDir.concat("/").concat(sDirName));
- }
- else
- {
- aFileNames.push_back(stat.getFileURL());
- }
- break;
+ switch (nLevel)
+ {
+ case 0: // a root directory
+ if (stat.getFileType() == osl::FileStatus::Directory && includeProject(sDirName))
+ aSubDirs[stat.getFileURL()][sDirName] = rPotDir.concat("/").concat(sDirName);
+ break;
+ default:
+ if (stat.getFileType() == osl::FileStatus::Directory)
+ aSubDirs[stat.getFileURL()][rProject] = rPotDir.concat("/").concat(sDirName);
+ else
+ aFileNames.push_back(stat.getFileURL());
+ break;
}
}
@@ -407,6 +390,10 @@ void handleDirectory(
throw false; //TODO
}
+ for (auto const& elem : aSubDirs)
+ handleDirectory(elem.first, nLevel + 1, elem.second.begin()->first,
+ elem.second.begin()->second);
+
//Remove empty pot directory
OUString sPoPath =
OStringToOUString(