From 907dddb0ca98e55ff4c01bdfae8a5c1dbb80b97e Mon Sep 17 00:00:00 2001 From: Antonio SJ Musumeci Date: Sun, 31 Aug 2025 22:40:37 -0500 Subject: [PATCH] checkpoint --- src/mfm.cpp | 72 +++++++++++++++++++++++++++++++++++++++++++++ src/mfm.hpp | 7 +++++ src/mfm_options.hpp | 34 +++++++++++++++++++++ 3 files changed, 113 insertions(+) create mode 100644 src/mfm.cpp create mode 100644 src/mfm.hpp create mode 100644 src/mfm_options.hpp diff --git a/src/mfm.cpp b/src/mfm.cpp new file mode 100644 index 00000000..ce976cb0 --- /dev/null +++ b/src/mfm.cpp @@ -0,0 +1,72 @@ +#include "mfm.hpp" + +#include "mfm_options.hpp" + +#include "CLI11.hpp" + +static +void +_setup_argparser_dup(CLI::App &app_, + mfm::Opts::Dup &opts_) +{ + +} + +static +void +_setup_argparser_watch(CLI::App &app_, + mfm::Opts::Watch &opts_) +{ + +} + +static +void +_setup_argparser_migrate(CLI::App &app_, + mfm::Opts::Migrate &opts_) +{ + +} + +static +void +_setup_argparser_rebalance(CLI::App &app_, + mfm::Opts::Rebalance &opts_) +{ + +} + +static +void +_setup_argparser(CLI::App &app_, + mfm::Opts &opts_) +{ + _setup_argparser_dup(app_,opts_.dup); + _setup_argparser_migrate(app_,opts_.migrate); + _setup_argparser_rebalance(app_,opts_.rebalance); + _setup_argparser_watch(app_,opts_.watch); +} + +int +mfm::main(int argc_, + char **argv_) +{ + CLI::App app; + mfm::Opts opts; + + app.description("mfm: mergerfs filesystem manager"); + app.name("USAGE:: mfm"); + + ::_setup_argparser(app,opts); + + try + { + app.parse(argc_,argv_); + } + catch(const CLI::ParseError &e_) + { + return app.exit(e_); + } + + return 0; +} diff --git a/src/mfm.hpp b/src/mfm.hpp new file mode 100644 index 00000000..9ea89b5d --- /dev/null +++ b/src/mfm.hpp @@ -0,0 +1,7 @@ +#pragma once + +namespace mfm +{ + int main(int argc, + char **argv); +} diff --git a/src/mfm_options.hpp b/src/mfm_options.hpp new file mode 100644 index 00000000..b5f3cd1c --- /dev/null +++ b/src/mfm_options.hpp @@ -0,0 +1,34 @@ +#pragma once + +#include "int_types.h" + +#include +#include +#include + +namespace mfm +{ + struct Opts + { + struct Dup + { + std::filesystem::path dirpath; + } dup; + + struct Watch + { + std::filesystem::path path; + } watch; + + struct Migrate + { + std::vector src; + std::vector dst; + } migrate; + + struct Rebalance + { + std::vector dirpaths; + } rebalance; + }; +};