GCC Code Coverage Report


Directory: ./
File: src/project_generator.cpp
Date: 2025-04-25 19:10:50
Exec Total Coverage
Lines: 220 234 94.0%
Branches: 325 395 82.3%

Line Branch Exec Source
1 /***************************************
2 Auteur : Pierre Aubert
3 Mail : pierre.aubert@lapp.in2p3.fr
4 Licence : CeCILL-C
5 ****************************************/
6
7 #include "parser_toml.h"
8 #include "cmakelist_generator.h"
9 #include "gitlab_doc.h"
10 #include "wrapper_generator.h"
11 #include "project_generator.h"
12
13 ///Load the project configuration
14 /** @param[out] config : loaded project configuration
15 * @param descriptionFile : description of the full project
16 * @return true on success, false otherwise
17 */
18 6 bool project_generator_loadConfig(ProjectConfig & config, const PPath & descriptionFile){
19
1/1
✓ Branch 1 taken 6 times.
6 DicoValue dico;
20
2/3
✓ Branch 1 taken 6 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 6 times.
6 if(!parser_toml(dico, descriptionFile)){
21 std::cerr << "project_generator : cannot parse config file '"<<descriptionFile<<"'" << std::endl;
22 return false;
23 }
24
2/2
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
6 DicoValue * mapProject = dico.getMap("project");
25
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 6 times.
6 if(mapProject == NULL){
26 std::cerr << "project_generator_loadConfig : Missing [project] in config file '"<<descriptionFile<<"'" << std::endl;
27 return false;
28 }
29 //TODO : It should be better to tell if there are missing values, but it's late ...
30
4/4
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
✓ Branch 10 taken 6 times.
6 config.name = phoenix_get_string(*mapProject, "name", "MyAwesomeProject");
31
4/4
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
✓ Branch 10 taken 6 times.
6 config.url = phoenix_get_string(*mapProject, "url", "need and url");
32
4/4
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
✓ Branch 10 taken 6 times.
6 config.version = phoenix_get_string(*mapProject, "version", "0.0.1");
33
4/4
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
✓ Branch 10 taken 6 times.
6 config.description = phoenix_get_string(*mapProject, "description", "A very important project");
34
4/4
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
✓ Branch 10 taken 6 times.
6 config.mainBranch = phoenix_get_string(*mapProject, "main_branch", "master");
35
4/4
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
✓ Branch 10 taken 6 times.
6 config.runnerTag = phoenix_get_string(*mapProject, "runner_tag", ""); //Could be MUST_big_runner
36 6 return true;
37 6 }
38
39 ///Create the CMakeLists.txt of the src directory
40 /** @param fileName : name of the file to be created
41 * @param projectName : name of hte project
42 * @param libName : name of the library to be created
43 * @return true on success, false otherwise
44 */
45 6 bool project_generator_cmakeListsSrc(const PPath & fileName, const PString & projectName, const PString & libName){
46
1/1
✓ Branch 1 taken 6 times.
6 PString body;
47
2/2
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
6 body += getCMakeListsHeader();
48
49
3/3
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
6 body += "file(GLOB "+libName+"_SRC \"${CMAKE_CURRENT_SOURCE_DIR}/*.cpp\")\n";
50
5/5
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
✓ Branch 10 taken 6 times.
✓ Branch 13 taken 6 times.
6 body += "phoenix_add_library("+libName+" ${"+libName+"_SRC})\n";
51
3/3
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
6 body += "target_link_libraries("+libName+" phoenix_type_stream phoenix_data_stream)\n";
52
53
3/3
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
6 body += "install(TARGETS "+libName+" LIBRARY DESTINATION ${LIBRARY_DIRECTORY} ARCHIVE DESTINATION ${LIBRARY_DIRECTORY})\n";
54
55
1/1
✓ Branch 1 taken 6 times.
6 body += "file(GLOB headers \"${CMAKE_CURRENT_SOURCE_DIR}/*.h\")\n";
56
57
3/3
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
6 body += "install(FILES ${headers} DESTINATION include/"+projectName+")\n";
58
59
1/1
✓ Branch 1 taken 6 times.
12 return fileName.saveFileContent(body);
60 6 }
61
62 ///Create the main CMakeLists.txt of the project directory
63 /** @param fileName : name of the file to be created
64 * @param baseConfigClassName : base name of the config class file
65 * @return true on success, false otherwise
66 */
67 6 bool project_generator_cmakeListsTest(const PPath & fileName, const PString & baseConfigClassName){
68
1/1
✓ Branch 1 taken 6 times.
6 PString body;
69
2/2
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
6 body += getCMakeListsHeader();
70
71
4/4
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
✓ Branch 10 taken 6 times.
6 body += "add_subdirectory(TEST_"+baseConfigClassName.toUpper()+")\n\n";
72
73
1/1
✓ Branch 1 taken 6 times.
12 return fileName.saveFileContent(body);
74 6 }
75
76 ///Create the main CMakeLists.txt of the project directory
77 /** @param fileName : name of the file to be created
78 * @param projectConfig : config of the project
79 * @param baseConfigClassName : base name of the config class file
80 * @return true on success, false otherwise
81 */
82 6 bool project_generator_cmakeListsMain(const PPath & fileName, const ProjectConfig & projectConfig, const PString & baseConfigClassName){
83
1/1
✓ Branch 1 taken 6 times.
6 PString body;
84
2/2
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
6 body += getCMakeListsHeader();
85
86
1/1
✓ Branch 1 taken 6 times.
6 body += "cmake_minimum_required(VERSION 3.10)\n";
87
3/3
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
6 body += "project("+projectConfig.name+")\n";
88
89
1/1
✓ Branch 1 taken 6 times.
6 body += "\nfind_package(PhoenixCMake REQUIRED)\n\n";
90
91
5/5
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
✓ Branch 10 taken 6 times.
✓ Branch 13 taken 6 times.
6 body += "phoenix_base_project(\""+projectConfig.name+"\" \""+projectConfig.version+"\"\n";
92
3/3
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
6 body += "\t\t\""+projectConfig.description+"\"\n";
93
3/3
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
6 body += "\t\t\""+projectConfig.url+"\")\n\n";
94
95
1/1
✓ Branch 1 taken 6 times.
6 body += "pull_extra_module(\"PhoenixDataStream\" \"https://gitlab.in2p3.fr/CTA-LAPP/PHOENIX_LIBS2/PhoenixDataStream.git\")\n";
96
1/1
✓ Branch 1 taken 6 times.
6 body += "pull_extra_module(\"PhoenixTypeStream\" \"https://gitlab.in2p3.fr/CTA-LAPP/PHOENIX_LIBS2/PhoenixTypeStream.git\")\n\n";
97
98
1/1
✓ Branch 1 taken 6 times.
6 body += "phoenix_include_directories(\n";
99
1/1
✓ Branch 1 taken 6 times.
6 body += "\t${CMAKE_CURRENT_SOURCE_DIR}\n";
100
1/1
✓ Branch 1 taken 6 times.
6 body += "\t${CMAKE_CURRENT_BINARY_DIR}\n";
101
1/1
✓ Branch 1 taken 6 times.
6 body += "\t${CMAKE_CURRENT_SOURCE_DIR}/src\n";
102
1/1
✓ Branch 1 taken 6 times.
6 body += ")\n\n";
103
8/8
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
✓ Branch 10 taken 6 times.
✓ Branch 13 taken 6 times.
✓ Branch 16 taken 6 times.
✓ Branch 19 taken 6 times.
✓ Branch 22 taken 6 times.
6 body += "phoenix_create_find("+projectConfig.name+" "+projectConfig.name.toLower()+" "+baseConfigClassName+".h "" PhoenixDataStream PhoenixTypeStream)\n\n";
104
1/1
✓ Branch 1 taken 6 times.
6 body += "add_subdirectory(src)\n\n";
105
1/1
✓ Branch 1 taken 6 times.
6 body += "phoenix_tests()\n";
106
107
1/1
✓ Branch 1 taken 6 times.
12 return fileName.saveFileContent(body);
108 6 }
109
110 ///Create the readme of the project directory
111 /** @param fileName : name of the file to be created
112 * @param projectConfig : config of the project
113 * @return true on success, false otherwise
114 */
115 6 bool project_generator_readme(const PPath & fileName, const ProjectConfig & projectConfig){
116
2/2
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
6 PString body, mainBranch(projectConfig.mainBranch);
117
1/1
✓ Branch 1 taken 6 times.
6 body += "![PLIBS_9 logo](doc/logo.png)\n\n";
118
119
1/1
✓ Branch 1 taken 6 times.
6 body += "----\n";
120
9/9
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
✓ Branch 10 taken 6 times.
✓ Branch 13 taken 6 times.
✓ Branch 16 taken 6 times.
✓ Branch 19 taken 6 times.
✓ Branch 22 taken 6 times.
✓ Branch 25 taken 6 times.
6 body += "[![pipeline status]("+projectConfig.url+"/badges/"+mainBranch+"/pipeline.svg)]("+projectConfig.url+"/-/commits/"+mainBranch+")\n";
121
9/9
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
✓ Branch 10 taken 6 times.
✓ Branch 13 taken 6 times.
✓ Branch 16 taken 6 times.
✓ Branch 19 taken 6 times.
✓ Branch 22 taken 6 times.
✓ Branch 25 taken 6 times.
6 body += "[![coverage report]("+projectConfig.url+"/badges/"+mainBranch+"/coverage.svg)]("+projectConfig.url+"/-/commits/"+mainBranch+")\n\n";
122
123
1/1
✓ Branch 1 taken 6 times.
6 body += "# Remarks\n\n";
124
1/1
✓ Branch 1 taken 6 times.
6 body += "This project was generated automatically by [phoenix_filegenerator](https://gitlab.in2p3.fr/CTA-LAPP/PHOENIX_LIBS2/PhoenixFileGenerator)\n";
125
1/1
✓ Branch 1 taken 6 times.
6 body += "using [phoenix_generator](https://gitlab.in2p3.fr/CTA-LAPP/PHOENIX_LIBS2/PhoenixGenerator) library\n\n";
126
127
1/1
✓ Branch 1 taken 6 times.
6 body += "# Code\n\n";
128
3/3
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
6 body += "Version : " + projectConfig.version + "\n\n";
129
2/2
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
6 body += projectConfig.url + "\n\n";
130
1/1
✓ Branch 1 taken 6 times.
6 body += "# Description\n\n";
131
2/2
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
6 body += projectConfig.description + "\n\n";
132
133
1/1
✓ Branch 1 taken 6 times.
6 PString docPagesUrl = getGitlabDocUrl(projectConfig.url);
134
2/3
✓ Branch 1 taken 6 times.
✓ Branch 3 taken 6 times.
✗ Branch 4 not taken.
6 if(docPagesUrl != ""){
135
1/1
✓ Branch 1 taken 6 times.
6 body += "# Documentation\n\n";
136
3/3
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
6 body += "[See the pages documentation](" + docPagesUrl + ")\n\n";
137 }
138
1/1
✓ Branch 1 taken 6 times.
6 body += "# Requirements\n\n";
139
1/1
✓ Branch 1 taken 6 times.
6 body += "- c++ compiler (tested with g++ 11,12 and clang 14)\n";
140
1/1
✓ Branch 1 taken 6 times.
6 body += "- [PhoenixCMake](https://gitlab.in2p3.fr/CTA-LAPP/PHOENIX_LIBS2/PhoenixCMake)\n";
141
1/1
✓ Branch 1 taken 6 times.
6 body += "- cmake > 3\n";
142
1/1
✓ Branch 1 taken 6 times.
6 body += "- make\n\n";
143
144
1/1
✓ Branch 1 taken 6 times.
6 body += "# Installation for Users\n\n";
145
146
1/1
✓ Branch 1 taken 6 times.
6 body += "```sh\n";
147
3/3
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
6 body += "git clone "+projectConfig.url+".git\n";
148
3/3
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
6 body += "cd "+projectConfig.name+"\n";
149
1/1
✓ Branch 1 taken 6 times.
6 body += "./install.sh\n";
150
1/1
✓ Branch 1 taken 6 times.
6 body += "```\n\n";
151
152
1/1
✓ Branch 1 taken 6 times.
12 return fileName.saveFileContent(body);
153 6 }
154
155 ///Create the .gitignore of the project
156 /** @param fileName : name of the file to be created
157 * @return true on success, false otherwise
158 */
159 6 bool project_generator_gitignore(const PPath & fileName){
160
1/1
✓ Branch 1 taken 6 times.
6 PString body;
161
1/1
✓ Branch 1 taken 6 times.
6 body += "build\n";
162
1/1
✓ Branch 1 taken 6 times.
6 body += "build2\n";
163
1/1
✓ Branch 1 taken 6 times.
6 body += ".kdev4/\n";
164
1/1
✓ Branch 1 taken 6 times.
6 body += "*.kdev4\n";
165
1/1
✓ Branch 1 taken 6 times.
6 body += ".tmp_project/\n";
166
1/1
✓ Branch 1 taken 6 times.
6 body += "tmp_project/\n\n";
167
1/1
✓ Branch 1 taken 6 times.
12 return fileName.saveFileContent(body);
168 6 }
169
170 ///Create the .gitlab-ci.yml of the project
171 /** @param fileName : name of the file to be created
172 * @param projectConfig : config of the project
173 * @return true on success, false otherwise
174 */
175 6 bool project_generator_gitlabci(const PPath & fileName, const ProjectConfig & projectConfig){
176
1/1
✓ Branch 1 taken 6 times.
6 PString specificRunnerTag;
177
2/3
✓ Branch 1 taken 6 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 6 times.
6 if(projectConfig.runnerTag != ""){
178 specificRunnerTag += " tags:\n";
179 specificRunnerTag += " - "+projectConfig.runnerTag+"\n";
180 }
181
182
1/1
✓ Branch 1 taken 6 times.
6 PString body;
183
1/1
✓ Branch 1 taken 6 times.
6 body += "\n";
184
2/2
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
6 body += getCMakeListsHeader();
185
1/1
✓ Branch 1 taken 6 times.
6 body += "\nstages:\n";
186
1/1
✓ Branch 1 taken 6 times.
6 body += "- BuildTestinstall\n";
187
1/1
✓ Branch 1 taken 6 times.
6 body += "- DocCoverage\n";
188
1/1
✓ Branch 1 taken 6 times.
6 body += "- deploy\n\n";
189
190
1/1
✓ Branch 1 taken 6 times.
6 body += "dailyBuildMasterAll:\n";
191
1/1
✓ Branch 1 taken 6 times.
6 body += " image: gitlab-registry.in2p3.fr/cta-lapp/phoenix_libs2/phoenixcmake/phoenix_cmake_ubuntu_2204:latest\n";
192
1/1
✓ Branch 1 taken 6 times.
6 body += " stage: BuildTestinstall\n";
193
1/1
✓ Branch 1 taken 6 times.
6 body += " script:\n";
194
1/1
✓ Branch 1 taken 6 times.
6 body += " - export LD_LIBRARY_PATH=/usr/lib\n";
195
1/1
✓ Branch 1 taken 6 times.
6 body += " - env\n";
196
1/1
✓ Branch 1 taken 6 times.
6 body += " - mkdir -p build\n";
197
1/1
✓ Branch 1 taken 6 times.
6 body += " - cd build\n";
198
1/1
✓ Branch 1 taken 6 times.
6 body += " - >\n";
199
1/1
✓ Branch 1 taken 6 times.
6 body += " cmake ..\n";
200
1/1
✓ Branch 1 taken 6 times.
6 body += " -DCMAKE_INSTALL_PREFIX=/usr\n";
201
1/1
✓ Branch 1 taken 6 times.
6 body += " -DSELF_TESTS_MODE=yes\n";
202
1/1
✓ Branch 1 taken 6 times.
6 body += " -DCMAKE_MODULE_PATH=/usr/share/cmake/Modules\n";
203
1/1
✓ Branch 1 taken 6 times.
6 body += " - make all\n";
204
1/1
✓ Branch 1 taken 6 times.
6 body += " - make install\n";
205
1/1
✓ Branch 1 taken 6 times.
6 body += " - make test\n";
206
1/1
✓ Branch 1 taken 6 times.
6 body += " only:\n";
207
1/1
✓ Branch 1 taken 6 times.
6 body += " - branches\n";
208
1/1
✓ Branch 1 taken 6 times.
6 body += " - tags\n";
209
1/1
✓ Branch 1 taken 6 times.
6 body += specificRunnerTag;
210
1/1
✓ Branch 1 taken 6 times.
6 body += "\n";
211
212
1/1
✓ Branch 1 taken 6 times.
6 body += "TestCoverage:\n";
213
1/1
✓ Branch 1 taken 6 times.
6 body += " image: gitlab-registry.in2p3.fr/cta-lapp/phoenix_libs2/phoenixcmake/phoenix_cmake_ubuntu_2204:latest\n";
214
1/1
✓ Branch 1 taken 6 times.
6 body += " stage: DocCoverage\n";
215
1/1
✓ Branch 1 taken 6 times.
6 body += " script:\n";
216
1/1
✓ Branch 1 taken 6 times.
6 body += " - export LD_LIBRARY_PATH=/usr/lib\n";
217
1/1
✓ Branch 1 taken 6 times.
6 body += " - env\n";
218
1/1
✓ Branch 1 taken 6 times.
6 body += " - mkdir -p build coverage\n";
219
1/1
✓ Branch 1 taken 6 times.
6 body += " - cd build\n";
220
1/1
✓ Branch 1 taken 6 times.
6 body += " - >\n";
221
1/1
✓ Branch 1 taken 6 times.
6 body += " cmake ..\n";
222
1/1
✓ Branch 1 taken 6 times.
6 body += " -DCMAKE_INSTALL_PREFIX=/usr\n";
223
1/1
✓ Branch 1 taken 6 times.
6 body += " -DSELF_TESTS_MODE=yes\n";
224
1/1
✓ Branch 1 taken 6 times.
6 body += " -DCMAKE_BUILD_TYPE=Coverage\n";
225
1/1
✓ Branch 1 taken 6 times.
6 body += " -DCMAKE_MODULE_PATH=/usr/share/cmake/Modules\n";
226
1/1
✓ Branch 1 taken 6 times.
6 body += " - make all\n";
227
1/1
✓ Branch 1 taken 6 times.
6 body += " - make install\n";
228
1/1
✓ Branch 1 taken 6 times.
6 body += " - make test\n";
229
4/4
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
✓ Branch 10 taken 6 times.
6 body += " - ./uninstall_"+projectConfig.name.toLower()+"\n";
230
1/1
✓ Branch 1 taken 6 times.
6 body += " - cd ../coverage\n";
231
1/1
✓ Branch 1 taken 6 times.
6 body += " - gcovr -r ../ --exclude-throw-branches --html cov_report.html --html-details\n";
232
1/1
✓ Branch 1 taken 6 times.
6 body += " - gcovr -r ../ --exclude-throw-branches --xml Coverage.xml\n";
233
1/1
✓ Branch 1 taken 6 times.
6 body += " - gcovr -r ../ --exclude-throw-branches\n";
234
1/1
✓ Branch 1 taken 6 times.
6 body += " coverage: '/TOTAL.*\\s+(\\d+\\%)$/'\n";
235
1/1
✓ Branch 1 taken 6 times.
6 body += " artifacts:\n";
236
1/1
✓ Branch 1 taken 6 times.
6 body += " paths:\n";
237
1/1
✓ Branch 1 taken 6 times.
6 body += " - coverage\n";
238
1/1
✓ Branch 1 taken 6 times.
6 body += " expire_in: 8d\n";
239
1/1
✓ Branch 1 taken 6 times.
6 body += " only:\n";
240
1/1
✓ Branch 1 taken 6 times.
6 body += " - branches\n";
241
1/1
✓ Branch 1 taken 6 times.
6 body += " - tags\n";
242
1/1
✓ Branch 1 taken 6 times.
6 body += specificRunnerTag;
243
1/1
✓ Branch 1 taken 6 times.
6 body += "\n";
244
1/1
✓ Branch 1 taken 6 times.
6 body += "Doc:\n";
245
1/1
✓ Branch 1 taken 6 times.
6 body += " image: gitlab-registry.in2p3.fr/cta-lapp/phoenix_libs2/phoenixcmake/phoenix_cmake_ubuntu_2204:latest\n";
246
1/1
✓ Branch 1 taken 6 times.
6 body += " stage: DocCoverage\n";
247
1/1
✓ Branch 1 taken 6 times.
6 body += " script:\n";
248
1/1
✓ Branch 1 taken 6 times.
6 body += " - export LD_LIBRARY_PATH=/usr/lib\n";
249
1/1
✓ Branch 1 taken 6 times.
6 body += " - env\n";
250
1/1
✓ Branch 1 taken 6 times.
6 body += " - rm -fr build public\n";
251
1/1
✓ Branch 1 taken 6 times.
6 body += " - mkdir -p build\n";
252
1/1
✓ Branch 1 taken 6 times.
6 body += " - mkdir -p public\n";
253
1/1
✓ Branch 1 taken 6 times.
6 body += " - cd build\n";
254
1/1
✓ Branch 1 taken 6 times.
6 body += " - >\n";
255
1/1
✓ Branch 1 taken 6 times.
6 body += " cmake ..\n";
256
1/1
✓ Branch 1 taken 6 times.
6 body += " -DCMAKE_INSTALL_PREFIX=/usr\n";
257
1/1
✓ Branch 1 taken 6 times.
6 body += " -DDOC_MODE=yes\n";
258
1/1
✓ Branch 1 taken 6 times.
6 body += " -DCMAKE_MODULE_PATH=/usr/share/cmake/Modules\n";
259
1/1
✓ Branch 1 taken 6 times.
6 body += " - make all\n";
260
1/1
✓ Branch 1 taken 6 times.
6 body += " - make doc\n";
261
1/1
✓ Branch 1 taken 6 times.
6 body += " - scp -r doc/html/* ../public\n";
262
1/1
✓ Branch 1 taken 6 times.
6 body += " artifacts:\n";
263
1/1
✓ Branch 1 taken 6 times.
6 body += " paths:\n";
264
1/1
✓ Branch 1 taken 6 times.
6 body += " - public\n";
265
1/1
✓ Branch 1 taken 6 times.
6 body += " expire_in: 8d\n";
266
1/1
✓ Branch 1 taken 6 times.
6 body += " only:\n";
267
1/1
✓ Branch 1 taken 6 times.
6 body += " - branches\n";
268
1/1
✓ Branch 1 taken 6 times.
6 body += " - tags\n";
269
1/1
✓ Branch 1 taken 6 times.
6 body += specificRunnerTag;
270
1/1
✓ Branch 1 taken 6 times.
6 body += "\n";
271
1/1
✓ Branch 1 taken 6 times.
6 body += "pages:\n";
272
1/1
✓ Branch 1 taken 6 times.
6 body += " stage: deploy\n";
273
1/1
✓ Branch 1 taken 6 times.
6 body += " image: gitlab-registry.in2p3.fr/cta-lapp/phoenix_libs2/phoenixcmake/phoenix_cmake_ubuntu_2204:latest\n";
274
1/1
✓ Branch 1 taken 6 times.
6 body += " script:\n";
275
1/1
✓ Branch 1 taken 6 times.
6 body += " - mv coverage public/\n";
276
1/1
✓ Branch 1 taken 6 times.
6 body += " artifacts:\n";
277
1/1
✓ Branch 1 taken 6 times.
6 body += " paths:\n";
278
1/1
✓ Branch 1 taken 6 times.
6 body += " - public\n";
279
1/1
✓ Branch 1 taken 6 times.
6 body += " expire_in: 8d\n";
280
1/1
✓ Branch 1 taken 6 times.
6 body += specificRunnerTag;
281
1/1
✓ Branch 1 taken 6 times.
6 body += "\n";
282
283
1/1
✓ Branch 1 taken 6 times.
12 return fileName.saveFileContent(body);
284 6 }
285
286 ///Generate a full project with PhoenixDataStream and PhoenixTypeStream
287 /** @param descriptionFile : description of the full project
288 * @param configFile : configuration file of the
289 * @param isPythonWrapper : true if we want to generate a Python wrapper
290 * @return true on success, false otherwise
291 */
292 6 bool project_generator(const PPath & descriptionFile, const PPath & configFile, bool isPythonWrapper){
293 //First, let's read the toml config of the project
294
1/1
✓ Branch 1 taken 6 times.
6 ProjectConfig projectConfig;
295
2/3
✓ Branch 1 taken 6 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 6 times.
6 if(!project_generator_loadConfig(projectConfig, descriptionFile)){
296 std::cerr << "project_generator : cannot parse project description file '"<<descriptionFile<<"'" << std::endl;
297 return false;
298 }
299 //Then, let's create the hierarchy
300
1/1
✓ Branch 1 taken 6 times.
6 PPath mainProjectDir(projectConfig.name);
301
2/3
✓ Branch 1 taken 6 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 6 times.
6 if(!mainProjectDir.createDirectory()){
302 std::cerr << "project_generator : cannot create main directory of project '"<<mainProjectDir<<"'" << std::endl;
303 return false;
304 }
305 //And src dir
306
3/3
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
12 PPath mainProjectSrc(mainProjectDir / PPath("src"));
307
2/3
✓ Branch 1 taken 6 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 6 times.
6 if(!mainProjectSrc.createDirectory()){
308 std::cerr << "project_generator : cannot create source directory of project '"<<mainProjectSrc<<"'" << std::endl;
309 return false;
310 }
311 //Let's generate sources
312
3/3
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
6 PString className = configFile.getFileName().eraseExtension();
313
5/6
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
✓ Branch 10 taken 6 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 6 times.
6 if(!saveParserClassConfig(mainProjectSrc / className, configFile, true, true, true, mainProjectDir, projectConfig.name.toLower())){
314 std::cerr << "project_generator : can't save file '"<<className<<"'[.h or .cpp]" << std::endl;
315 return false;
316 }
317 //Now, some CMakeLists.txt of the sources
318
3/3
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
12 PPath cmakeListsSrc(mainProjectSrc / PPath("CMakeLists.txt"));
319
3/4
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 6 times.
6 if(!project_generator_cmakeListsSrc(cmakeListsSrc, projectConfig.name, projectConfig.name.toLower())){return false;}
320 //The main CMakeLists
321
3/3
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
12 PPath cmakeListsMain(mainProjectDir / PPath("CMakeLists.txt"));
322
4/5
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 6 times.
6 if(!project_generator_cmakeListsMain(cmakeListsMain, projectConfig, configFile.getFileName().eraseExtension())){return false;}
323 //CMakeLists of the tests
324
3/3
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
12 PPath cmakeListsTest(mainProjectDir / PPath("TESTS/CMakeLists.txt"));
325
4/5
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 6 times.
6 if(!project_generator_cmakeListsTest(cmakeListsTest, configFile.getFileName().eraseExtension())){return false;}
326 //The readme
327
3/3
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
12 PPath readmeFile(mainProjectDir / PPath("README.md"));
328
2/3
✓ Branch 1 taken 6 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 6 times.
6 if(!project_generator_readme(readmeFile, projectConfig)){return false;}
329 //The gitignore
330
3/3
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
12 PPath gitignoreFile(mainProjectDir / PPath(".gitignore"));
331
2/3
✓ Branch 1 taken 6 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 6 times.
6 if(!project_generator_gitignore(gitignoreFile)){return false;}
332
333
3/3
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 7 taken 6 times.
12 PPath gitlabciFile(mainProjectDir / PPath(".gitlab-ci.yml"));
334
2/3
✓ Branch 1 taken 6 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 6 times.
6 if(!project_generator_gitlabci(gitlabciFile, projectConfig)){return false;}
335
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 1 times.
6 if(isPythonWrapper){
336
1/1
✓ Branch 1 taken 5 times.
5 return project_wrapper_generator(projectConfig, configFile);
337 }
338 1 return true;
339 6 }
340
341
342