From 8b5cb7729ccc8e685a892d701e9fc8f155b6fffa Mon Sep 17 00:00:00 2001 From: James Houlahan Date: Fri, 4 Nov 2022 01:10:23 +0100 Subject: [PATCH] GODT-2013: CLI flag for frontend is required (v3) --- internal/app/app.go | 22 ++++++++++++++----- internal/app/frontend.go | 10 ++++++++- .../frontend/bridge-gui/bridge-gui/main.cpp | 2 +- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/internal/app/app.go b/internal/app/app.go index da9eaad8..ed895e43 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -54,10 +54,14 @@ const ( flagLogLevel = "log-level" flagLogLevelShort = "l" + flagGRPC = "grpc" + flagGRPCShort = "g" + flagCLI = "cli" flagCLIShort = "c" - flagNonInteractive = "non-interactive" + flagNonInteractive = "noninteractive" + flagNonInteractiveShort = "n" flagLogIMAP = "log-imap" flagLogSMTP = "log-smtp" @@ -95,13 +99,19 @@ func New() *cli.App { Usage: "Set the log level (one of panic, fatal, error, warn, info, debug)", }, &cli.BoolFlag{ - Name: flagCLI, - Aliases: []string{flagCLIShort}, - Usage: "Use command line interface", + Name: flagGRPC, + Aliases: []string{flagGRPCShort}, + Usage: "Start the gRPC service", }, &cli.BoolFlag{ - Name: flagNonInteractive, - Usage: "Run the app in non-interactive mode", + Name: flagCLI, + Aliases: []string{flagCLIShort}, + Usage: "Start the command line interface", + }, + &cli.BoolFlag{ + Name: flagNonInteractive, + Aliases: []string{flagNonInteractiveShort}, + Usage: "Start the app in non-interactive mode", }, &cli.StringFlag{ Name: flagLogIMAP, diff --git a/internal/app/frontend.go b/internal/app/frontend.go index 1904fca1..e5964615 100644 --- a/internal/app/frontend.go +++ b/internal/app/frontend.go @@ -27,6 +27,7 @@ import ( "github.com/ProtonMail/proton-bridge/v2/internal/frontend/grpc" "github.com/ProtonMail/proton-bridge/v2/internal/locations" "github.com/ProtonMail/proton-bridge/v2/pkg/restarter" + "github.com/sirupsen/logrus" "github.com/urfave/cli/v2" ) @@ -45,12 +46,19 @@ func runFrontend( case c.Bool(flagNonInteractive): select {} - default: + case c.Bool(flagGRPC): service, err := grpc.NewService(crashHandler, restarter, locations, bridge, eventCh, !c.Bool(flagNoWindow)) if err != nil { return fmt.Errorf("could not create service: %w", err) } return service.Loop() + + default: + if err := cli.ShowAppHelp(c); err != nil { + logrus.WithError(err).Error("Failed to show app help") + } + + return fmt.Errorf("no frontend specified, use --cli, --grpc or --noninteractive") } } diff --git a/internal/frontend/bridge-gui/bridge-gui/main.cpp b/internal/frontend/bridge-gui/bridge-gui/main.cpp index a7e787c4..cca6e1cc 100644 --- a/internal/frontend/bridge-gui/bridge-gui/main.cpp +++ b/internal/frontend/bridge-gui/bridge-gui/main.cpp @@ -257,7 +257,7 @@ void launchBridge(QStringList const &args) else app().log().debug(QString("Bridge executable path: %1").arg(QDir::toNativeSeparators(bridgeExePath))); - overseer = std::make_unique(new ProcessMonitor(bridgeExePath, args, nullptr), nullptr); + overseer = std::make_unique(new ProcessMonitor(bridgeExePath, QStringList("--grpc") + args, nullptr), nullptr); overseer->startWorker(true); }