GitProxy.hpp
Go to the documentation of this file.
1 /*
2 
3  This file is part of OpenFLUID software
4  Copyright(c) 2007, INRA - Montpellier SupAgro
5 
6 
7  == GNU General Public License Usage ==
8 
9  OpenFLUID is free software: you can redistribute it and/or modify
10  it under the terms of the GNU General Public License as published by
11  the Free Software Foundation, either version 3 of the License, or
12  (at your option) any later version.
13 
14  OpenFLUID is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  GNU General Public License for more details.
18 
19  You should have received a copy of the GNU General Public License
20  along with OpenFLUID. If not, see <http://www.gnu.org/licenses/>.
21 
22 
23  == Other Usage ==
24 
25  Other Usage means a use of OpenFLUID that is inconsistent with the GPL
26  license, and requires a written agreement between You and INRA.
27  Licensees for Other Usage of OpenFLUID may use this file in accordance
28  with the terms contained in the written agreement between You and INRA.
29 
30  */
31 
32 
33 /**
34  @file GitProxy.hpp
35 
36  @author Aline LIBRES <aline.libres@gmail.com>
37  @author Jean-Christophe Fabre <jean-christophe.fabre@supagro.inra.fr>
38 */
39 
40 
41 #ifndef __OPENFLUID_UTILS_GITPROXY_HPP__
42 #define __OPENFLUID_UTILS_GITPROXY_HPP__
43 
44 
45 #include <QString>
46 #include <QObject>
47 #include <QProcess>
48 #include <QMap>
49 #include <QFile>
50 
51 #include <openfluid/dllexport.hpp>
53 
54 
55 namespace openfluid { namespace utils {
56 
57 
58 class OPENFLUID_API GitProxy : public QObject, public ProgramProxy<GitProxy>
59 {
60  Q_OBJECT
61 
62  public:
63 
64  enum class FileStatus
65  {
66  TRACKED, UNTRACKED, IGNORED, CONFLICT, ADDED, DELETED, MODIFIED
67  };
68 
70  {
71  bool m_IsDirty = false;
72 
73  FileStatus m_IndexStatus = FileStatus::TRACKED;
74  };
75 
77  {
78  bool m_IsGitTracked = false;
79 
80  QString m_BranchName = "";
81 
82  QMap<QString, FileStatusInfo> m_FileStatusByTreePath;
83  };
84 
85 
86  private:
87 
88  QProcess* mp_Process = nullptr;
89 
90  QString m_TmpPath;
91 
92  QFile m_AskPassFile;
93 
94  static void findGitProgram();
95 
96 
97  private slots:
98 
99  void processStandardOutput();
100 
101  void processErrorOutput();
102 
103  void processErrorOutputAsInfo();
104 
105 
106  signals:
107 
108  void info(const QString& Message);
109 
110  void error(const QString& Message);
111 
112 
113  public:
114 
115  GitProxy();
116 
117  ~GitProxy();
118 
119  static bool isAvailable();
120 
121  static QString getCurrentOpenFLUIDBranchName();
122 
123  bool clone(const QString& FromUrl, const QString& ToPath,
124  const QString& Username = "", const QString& Password = "",
125  bool SslNoVerify = false);
126 
127  TreeStatusInfo status(const QString& Path);
128 
129  QString statusHtml(const QString& Path, bool WithColorCodes);
130 
131  QString logHtml(const QString& Path, bool WithColorCodes);
132 
133 };
134 
135 
136 } } // namespaces
137 
138 
139 #endif /* __OPENFLUID_UTILS_GITPROXY_HPP__ */
QMap< QString, FileStatusInfo > m_FileStatusByTreePath
Definition: GitProxy.hpp:82
Definition: ProgramProxy.hpp:51
FileStatus
Definition: GitProxy.hpp:64
Definition: ApplicationException.hpp:47
#define OPENFLUID_API
Definition: dllexport.hpp:87
Definition: GitProxy.hpp:58