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 += "\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 += "[]("+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 += "[]("+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 |