Documentation for OpenFLUID 2.2.2
Loading...
Searching...
No Matches
GitProxy.hpp
Go to the documentation of this file.
1/*
2
3 This file is part of OpenFLUID software
4 Copyright(c) 2021-2026, INRAE
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 Jean-Christophe Fabre <jean-christophe.fabre@inra.fr>
37 @author Armel THÖNI <armel.thoni@inrae.fr>
38 @author Dorian GERARDIN <dorian.gerardin@inrae.fr>
39*/
40
41
42#ifndef __OPENFLUID_UTILS_GITPROXY_HPP__
43#define __OPENFLUID_UTILS_GITPROXY_HPP__
44
45
50
51
52namespace openfluid { namespace utils {
53
54
55class OPENFLUID_API GitProxy : public ProgramProxy<GitProxy>
56{
57 private:
58
59 static void findGitProgram();
60
61 protected:
62
63 std::string m_LocalGitProgram;
64
65 public:
66
67 enum class GIT_POSITION {COMMIT, BRANCH, TAG};
68
70
71 virtual ~GitProxy();
72
73 static std::string getExecutablePath();
74
75 static bool isAvailable();
76
77 static bool isPathGitRepo(const std::string& Path);
78
79 static bool canGetBranch()
80 {
81 // show-current option exists since Git 2.21
82 return (openfluid::tools::compareVersions(m_Version, "2.21") >= 0);
83 }
84
85 int clone(const std::string& Path, const std::string& URL, const std::string& LocalName="");
86
87 static const std::string getCurrentPosition(const std::string& Path, GIT_POSITION Mode=GIT_POSITION::BRANCH);
88
89 static int setRemote(const std::string RepoPath, const std::string RemoteUrl);
90
91};
92
93
95{
96 protected:
97
99 {
101 }
102
103
104 public:
105
106 GitOperationException(const std::string& Msg) :
107 Exception(Msg)
108 {
110 }
111};
112
113
114} } // namespaces
115
116
117#endif /* __OPENFLUID_UTILS_GITPROXY_HPP__ */
Definition Exception.hpp:53
std::string m_Message
Definition Exception.hpp:56
std::string m_FullMessage
Definition Exception.hpp:60
Definition GitProxy.hpp:95
GitOperationException(const std::string &Msg)
Definition GitProxy.hpp:106
void buildFullMessage()
Definition GitProxy.hpp:98
Definition GitProxy.hpp:56
static const std::string getCurrentPosition(const std::string &Path, GIT_POSITION Mode=GIT_POSITION::BRANCH)
static bool isPathGitRepo(const std::string &Path)
static int setRemote(const std::string RepoPath, const std::string RemoteUrl)
std::string m_LocalGitProgram
Definition GitProxy.hpp:63
GIT_POSITION
Definition GitProxy.hpp:67
static bool canGetBranch()
Definition GitProxy.hpp:79
static std::string getExecutablePath()
int clone(const std::string &Path, const std::string &URL, const std::string &LocalName="")
Definition ProgramProxy.hpp:54
#define OPENFLUID_API
Definition dllexport.hpp:86
int OPENFLUID_API compareVersions(const std::string &VersionA, const std::string &VersionB)
Definition ApplicationException.hpp:47