stamen

Static Menu Generator
git clone git://git.dimitrijedobrota.com/stamen.git
Log | Files | Refs | README | LICENSE | HACKING | CONTRIBUTING | CODE_OF_CONDUCT | BUILDING

commit 316d0c2ac122a1273e2ecc6a466138be95af78d6
parent 8a69123b6fdd0d7a58517c5e5e2afb30406ba1ff
author Dimitrije Dobrota < mail@dimitrijedobrota.com >
date Fri, 6 Jun 2025 16:43:29 +0200

Use the latest version of poafloc

Diffstat:
M CMakeLists.txt | +++ ---
M CMakePresets.json | + -
M source/generate.cpp | +++++++++++++++++++++ ------------------------------------------------
M vcpkg.json | + -

4 files changed, 26 insertions(+), 53 deletions(-)


diff --git a/ CMakeLists.txt b/ CMakeLists.txt

@@ -4,7 +4,7 @@ include(cmake/prelude.cmake)


project(
stamen
VERSION 1.3.1
VERSION 1.3.2
DESCRIPTION "Static menu generator"
HOMEPAGE_URL "https://git.dimitrijedobrota.com/stamen"
LANGUAGES C CXX

@@ -62,8 +62,8 @@ target_compile_features(stamen_stamen PUBLIC cxx_std_20)

add_executable(stamen_exe source/generate.cpp)
add_executable(stamen::exe ALIAS stamen_exe)

find_package(poafloc 1.2 CONFIG REQUIRED)
find_package(cemplate 0.2 CONFIG REQUIRED)
find_package(poafloc 2.0 CONFIG REQUIRED)
find_package(cemplate 0.3 CONFIG REQUIRED)

target_link_libraries(stamen_exe PRIVATE stamen::stamen poafloc::poafloc cemplate::cemplate)
set_property(TARGET stamen_exe PROPERTY OUTPUT_NAME stamen)

diff --git a/ CMakePresets.json b/ CMakePresets.json

@@ -112,7 +112,7 @@

"cacheVariables": {
"ENABLE_COVERAGE": "ON",
"CMAKE_BUILD_TYPE": "Coverage",
"CMAKE_CXX_FLAGS_COVERAGE": "-Og -g --coverage -fkeep-inline-functions -fkeep-static-functions",
"CMAKE_CXX_FLAGS_COVERAGE": "-O0 -g --coverage -fkeep-inline-functions -fkeep-static-functions",
"CMAKE_EXE_LINKER_FLAGS_COVERAGE": "--coverage",
"CMAKE_SHARED_LINKER_FLAGS_COVERAGE": "--coverage",
"CMAKE_MAP_IMPORTED_CONFIG_COVERAGE": "Coverage;RelWithDebInfo;Release;Debug;"

diff --git a/ source/generate.cpp b/ source/generate.cpp

@@ -116,59 +116,32 @@ void generate_source(std::ostream& ost,

prog.namespace_close(args.nspace);
}

int parse_opt(int key, const char* arg, poafloc::Parser* parser)
{
auto* arguments = static_cast<arguments_t*>(parser->input());
switch (key)
{
case 'n':
arguments->nspace = arg;
break;
case poafloc::ARG:
if (!arguments->config.empty())
{
poafloc::failure(parser, 0, 0, "Too many arguments");
poafloc::help(parser, stderr, poafloc::STD_USAGE);
}
arguments->config = arg;
break;
case poafloc::NO_ARGS:
poafloc::failure(parser, 0, 0, "Missing an argument");
poafloc::help(parser, stderr, poafloc::STD_USAGE);
break;
default:
break;
}
return 0;
}

} // namespace

// clang-format off
static const poafloc::option_t options[] {
{ nullptr, 0, nullptr, 0, "Output settings", 2},
{"namespace", 'n', "name", 0, "Name of the nemespace to generate in"},
{ nullptr, 0, nullptr, 0, "Informational Options", -1},
{ nullptr},
};
// clang-format on

static const poafloc::arg_t arg {
options,
parse_opt,
"config_file",
"",
};

int main(int argc, char* argv[])
int main(int argc, const char* argv[])
{
using namespace poafloc; // NOLINT

arguments_t args;

if (poafloc::parse(&arg, argc, argv, 0, &args) != 0)
{
std::cerr << "There was an error while parsing arguments";
return 1;
}
auto program = parser<arguments_t> {
positional {
argument {
"config",
&arguments_t::config,
},
},
group {
"Configuration options",
direct {
"n namespace",
&arguments_t::nspace,
"NAME output namespace",
},
},
};

program(args, argc, argv);

std::ifstream ifs(args.config);
const stamen::Stamen inst(ifs);

diff --git a/ vcpkg.json b/ vcpkg.json

@@ -8,7 +8,7 @@

},
{
"name": "poafloc",
"version>=": "1.2.0"
"version>=": "2.0.0"
}
],
"default-features": [],