Program Listing for File setup_config.hpp¶
↰ Return to documentation for file (include/dish2/config/setup_config.hpp)
#pragma once
#ifndef DISH2_CONFIG_SETUP_CONFIG_HPP_INCLUDE
#define DISH2_CONFIG_SETUP_CONFIG_HPP_INCLUDE
#include <cstdlib>
#include <iostream>
#include <string>
#include "../../../third-party/conduit/include/uitsl/polyfill/filesystem.hpp"
#include "../../../third-party/Empirical/include/emp/base/vector.hpp"
#include "../../../third-party/Empirical/include/emp/config/ArgManager.hpp"
#include "../debug/log_msg.hpp"
#include "../utility/path_exists.hpp"
#include "cfg.hpp"
namespace dish2 {
void setup_config( emp::ArgManager& arg_manager ) {
for (const auto& arg : emp::vector<std::string>{
"print_introspective_state_size_minus_one",
"print_extrospective_state_size_minus_one",
"print_readable_state_size_minus_one",
"print_writable_state_size_minus_one",
"print_reconstituted_lowestroot_numstintroots",
"print_lowestroot_numstintroots",
"print_lowestroot"
} ) while( arg_manager.CallbackArg(arg) );
// std::filesystem::exists is failing inside Docker container
// so use stat as a backup for now
// if ( std::filesystem::exists("dishtiny.cfg") ) {
if ( dish2::path_exists("dishtiny.cfg") ) {
dish2::log_msg( "reading configuration from dishtiny.cfg" );
dish2::cfg.Read( "dishtiny.cfg" );
} else dish2::log_msg( "no configuration file found" );
arg_manager.UseCallbacks();
if ( arg_manager.HasUnused() ) std::exit( EXIT_FAILURE );
}
} // namespace dish2
#endif // #ifndef DISH2_CONFIG_SETUP_CONFIG_HPP_INCLUDE