From 6d71c2f83b7fef4956f04e277a905d45de249745 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sun, 29 Nov 2020 10:41:28 +0100 Subject: Move command line handling to main --- src/main.cpp | 46 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) (limited to 'src/main.cpp') diff --git a/src/main.cpp b/src/main.cpp index 6ad255f..db4721b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -25,12 +25,16 @@ # include #endif +#include "Options.hpp" #include "Patchage.hpp" +#include "patchage_config.h" #include #include +namespace { + #ifdef __APPLE__ void set_bundle_environment() @@ -67,6 +71,19 @@ set_bundle_environment() } #endif +void +print_usage() +{ + std::cout << "Usage: patchage [OPTION]...\n"; + std::cout << "Visually connect JACK and ALSA Audio and MIDI ports.\n\n"; + std::cout << "Options:\n"; + std::cout << " -h, --help Display this help and exit.\n"; + std::cout << " -A, --no-alsa Do not automatically attach to ALSA.\n"; + std::cout << " -J, --no-jack Do not automatically attack to JACK.\n"; +} + +} // namespace + int main(int argc, char** argv) { @@ -79,8 +96,33 @@ main(int argc, char** argv) Glib::thread_init(); Gtk::Main app(argc, argv); - - Patchage patchage(argc, argv); + ++argv; + --argc; + + // Parse command line options + Options options; + while (argc > 0) { + if (!strcmp(*argv, "-h") || !strcmp(*argv, "--help")) { + print_usage(); + return 0; + } + + if (!strcmp(*argv, "-A") || !strcmp(*argv, "--no-alsa")) { + options.alsa_driver_autoattach = false; + } else if (!strcmp(*argv, "-J") || !strcmp(*argv, "--no-jack")) { + options.jack_driver_autoattach = false; + } else { + std::cerr << "patchage: invalid option -- '" << *argv << "'\n"; + print_usage(); + return 1; + } + + ++argv; + --argc; + } + + // Run until main loop is finished + Patchage patchage(options); Gtk::Main::run(*patchage.window()); patchage.save(); -- cgit v1.2.1