This commit is contained in:
		
							
								
								
									
										26
									
								
								.gitea/workflows/test.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								.gitea/workflows/test.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | ||||
| name: Test | ||||
|  | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - '**' | ||||
|   pull_request: | ||||
|     branches: [master] | ||||
|  | ||||
| jobs: | ||||
|   build: | ||||
|     runs-on: alpine | ||||
|     steps: | ||||
|       - name: Set up environment | ||||
|         shell: ash {0} | ||||
|         run: | | ||||
|           apk -U upgrade | ||||
|           apk add --no-cache git bash cmake build-base ninja-is-really-ninja boost-dev | ||||
|       - uses: actions/checkout@v4 | ||||
|       - name: Build | ||||
|         run: | | ||||
|           # Building the TUI fails with an internal compiler error with GCC 14.2. | ||||
|           cmake -B build -G Ninja -DKATJA_BUILD_TUI=Off | ||||
|           ninja -C build | ||||
|       - name: Run tests | ||||
|         run: ninja -C build test | ||||
| @@ -2,25 +2,29 @@ | ||||
| # License, v. 2.0. If a copy of the MPL was not distributed with this | ||||
| # file, You can obtain one at https://mozilla.org/MPL/2.0/. | ||||
|  | ||||
| cmake_minimum_required(VERSION 4.0) | ||||
| project(Katja) | ||||
| cmake_minimum_required(VERSION 3.30) | ||||
| project(Katja LANGUAGES CXX) | ||||
|  | ||||
| include(CTest) | ||||
| include(FetchContent) | ||||
|  | ||||
| option(KATJA_BUILD_TUI "Build text user interface" ON) | ||||
|  | ||||
| set(CMAKE_EXPORT_COMPILE_COMMANDS 1) | ||||
| set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) | ||||
| set(CMAKE_CXX_STANDARD 20) | ||||
| set(CMAKE_CXX_MODULE_STD 1) | ||||
|  | ||||
| add_library(katja | ||||
|        katja/database.cpp include/katja/database.hpp | ||||
|        katja/sbo.cpp include/katja/sbo.hpp | ||||
|        katja/repository.cpp include/katja/repository.hpp | ||||
| 	katja/database.cpp include/katja/database.hpp | ||||
| 	katja/sbo.cpp include/katja/sbo.hpp | ||||
| 	katja/repository.cpp include/katja/repository.hpp | ||||
| ) | ||||
| include_directories(include ${Boost_INCLUDE_DIR}) | ||||
|  | ||||
| add_subdirectory(cli) | ||||
| if(KATJA_BUILD_TUI) | ||||
| 	add_subdirectory(cli) | ||||
| endif() | ||||
| if(BUILD_TESTING) | ||||
| 	add_subdirectory(tests) | ||||
| endif() | ||||
|   | ||||
| @@ -20,6 +20,14 @@ Pass `-DCMAKE_BUILD_TYPE=Debug` or `-DCMAKE_BUILD_TYPE=Release` to | ||||
|  | ||||
| This builds a CLI that can be then found in `./build/bin/katja`. | ||||
|  | ||||
| ### Running the tests | ||||
|  | ||||
| To run the tests follow the build instructions first and then do: | ||||
|  | ||||
| ```sh | ||||
| ninja -C build test | ||||
| ``` | ||||
|  | ||||
| ## Project structure | ||||
|  | ||||
| The library code is in `katja/`. Public headers are under `include/`. | ||||
|   | ||||
| @@ -9,16 +9,12 @@ FetchContent_Declare(ftxui | ||||
| 	GIT_SHALLOW TRUE | ||||
| 	EXCLUDE_FROM_ALL | ||||
| ) | ||||
| FetchContent_MakeAvailable(ftxui) | ||||
|  | ||||
| FetchContent_Declare(toml11 | ||||
| 	GIT_REPOSITORY https://github.com/ToruNiina/toml11.git | ||||
| 	GIT_TAG v4.4.0 | ||||
| 	GIT_PROGRESS TRUE | ||||
| ) | ||||
| FetchContent_MakeAvailable(toml11) | ||||
|  | ||||
| set(FTXUI_BUILD_MODULES ON) | ||||
| FetchContent_MakeAvailable(ftxui toml11) | ||||
|  | ||||
| add_executable(katja-cli main.cpp) | ||||
| target_sources(katja-cli PUBLIC FILE_SET all_my_modules TYPE CXX_MODULES FILES | ||||
|   | ||||
		Reference in New Issue
	
	Block a user