Include version information into program
This commit is contained in:
parent
62aabe17f5
commit
742266fe82
3 changed files with 39 additions and 1 deletions
|
@ -1,6 +1,26 @@
|
||||||
cmake_minimum_required(VERSION 3.16)
|
cmake_minimum_required(VERSION 3.16)
|
||||||
project(endgame-analyzer CXX)
|
project(endgame-analyzer CXX)
|
||||||
|
|
||||||
|
execute_process(
|
||||||
|
COMMAND git describe
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
|
OUTPUT_VARIABLE GIT_DESCRIPTION
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
)
|
||||||
|
|
||||||
|
execute_process(
|
||||||
|
COMMAND git -c log.showsignature=false log -1 --format=%h
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
|
OUTPUT_VARIABLE GIT_COMMIT_HASH
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
)
|
||||||
|
|
||||||
|
configure_file(
|
||||||
|
${CMAKE_SOURCE_DIR}/include/version.h.in
|
||||||
|
${CMAKE_BINARY_DIR}/generated/version.h
|
||||||
|
)
|
||||||
|
include_directories(${CMAKE_BINARY_DIR}/generated)
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wpedantic -Werror")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wpedantic -Werror")
|
||||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")
|
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")
|
||||||
|
|
|
@ -72,6 +72,11 @@ namespace Hanabi
|
||||||
* and future game states, including suboptimal ones.
|
* and future game states, including suboptimal ones.
|
||||||
*/
|
*/
|
||||||
bool list_actions{false};
|
bool list_actions{false};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If true, prints version information of the program and exits immediately.
|
||||||
|
*/
|
||||||
|
bool version_info{false};
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -4,6 +4,8 @@
|
||||||
#include "null_buffer.h"
|
#include "null_buffer.h"
|
||||||
#include "state_explorer.h"
|
#include "state_explorer.h"
|
||||||
|
|
||||||
|
#include <version.h>
|
||||||
|
|
||||||
#include "command_line_interface.h"
|
#include "command_line_interface.h"
|
||||||
#include "myassert.h"
|
#include "myassert.h"
|
||||||
|
|
||||||
|
@ -36,6 +38,10 @@ namespace Hanabi
|
||||||
|
|
||||||
int run_cli(CLIParms const & parms)
|
int run_cli(CLIParms const & parms)
|
||||||
{
|
{
|
||||||
|
if (parms.version_info) {
|
||||||
|
std::cout << "endgame-analyzer " << VERSION_GIT_DESCRIPTION << " (commit " << VERSION_GIT_COMMIT_HASH << ")";
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
||||||
// We want to do this sanity check here again,
|
// We want to do this sanity check here again,
|
||||||
// so that the run_cli method itself can ensure that arguments are fully valid
|
// so that the run_cli method itself can ensure that arguments are fully valid
|
||||||
// and we cannot run into crashes due to bad specified parameters
|
// and we cannot run into crashes due to bad specified parameters
|
||||||
|
@ -246,12 +252,19 @@ namespace Hanabi
|
||||||
("list-actions,l","List all actions (including suboptimal ones) of all turns after specified state.")
|
("list-actions,l","List all actions (including suboptimal ones) of all turns after specified state.")
|
||||||
("all-clues", "Whenever evaluating a game state, evaluate it with all clue counts and output their "
|
("all-clues", "Whenever evaluating a game state, evaluate it with all clue counts and output their "
|
||||||
"probabilities.")
|
"probabilities.")
|
||||||
("quiet,q", "Deactivate all non-essential prints. Useful if output is parsed by another program.");
|
("quiet,q", "Deactivate all non-essential prints. Useful if output is parsed by another program.")
|
||||||
|
("version,v", "Print version information and exit.");
|
||||||
|
|
||||||
bpo::variables_map vm;
|
bpo::variables_map vm;
|
||||||
bpo::store(bpo::parse_command_line(argc, argv, desc), vm);
|
bpo::store(bpo::parse_command_line(argc, argv, desc), vm);
|
||||||
bpo::notify(vm);
|
bpo::notify(vm);
|
||||||
|
|
||||||
|
if (vm.count("version"))
|
||||||
|
{
|
||||||
|
parms.version_info = true;
|
||||||
|
return parms;
|
||||||
|
}
|
||||||
|
|
||||||
if (vm.count("help"))
|
if (vm.count("help"))
|
||||||
{
|
{
|
||||||
std::cout << "This program performs endgame analysis of Hanabi. It calculates optimum strategies\n"
|
std::cout << "This program performs endgame analysis of Hanabi. It calculates optimum strategies\n"
|
||||||
|
|
Loading…
Reference in a new issue