GODT-2013: CLI flag for frontend is required (v3)

This commit is contained in:
James Houlahan
2022-11-04 01:10:23 +01:00
parent f8d7b98d05
commit 8b5cb7729c
3 changed files with 26 additions and 8 deletions

View File

@ -54,10 +54,14 @@ const (
flagLogLevel = "log-level" flagLogLevel = "log-level"
flagLogLevelShort = "l" flagLogLevelShort = "l"
flagGRPC = "grpc"
flagGRPCShort = "g"
flagCLI = "cli" flagCLI = "cli"
flagCLIShort = "c" flagCLIShort = "c"
flagNonInteractive = "non-interactive" flagNonInteractive = "noninteractive"
flagNonInteractiveShort = "n"
flagLogIMAP = "log-imap" flagLogIMAP = "log-imap"
flagLogSMTP = "log-smtp" flagLogSMTP = "log-smtp"
@ -95,13 +99,19 @@ func New() *cli.App {
Usage: "Set the log level (one of panic, fatal, error, warn, info, debug)", Usage: "Set the log level (one of panic, fatal, error, warn, info, debug)",
}, },
&cli.BoolFlag{ &cli.BoolFlag{
Name: flagCLI, Name: flagGRPC,
Aliases: []string{flagCLIShort}, Aliases: []string{flagGRPCShort},
Usage: "Use command line interface", Usage: "Start the gRPC service",
}, },
&cli.BoolFlag{ &cli.BoolFlag{
Name: flagNonInteractive, Name: flagCLI,
Usage: "Run the app in non-interactive mode", 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{ &cli.StringFlag{
Name: flagLogIMAP, Name: flagLogIMAP,

View File

@ -27,6 +27,7 @@ import (
"github.com/ProtonMail/proton-bridge/v2/internal/frontend/grpc" "github.com/ProtonMail/proton-bridge/v2/internal/frontend/grpc"
"github.com/ProtonMail/proton-bridge/v2/internal/locations" "github.com/ProtonMail/proton-bridge/v2/internal/locations"
"github.com/ProtonMail/proton-bridge/v2/pkg/restarter" "github.com/ProtonMail/proton-bridge/v2/pkg/restarter"
"github.com/sirupsen/logrus"
"github.com/urfave/cli/v2" "github.com/urfave/cli/v2"
) )
@ -45,12 +46,19 @@ func runFrontend(
case c.Bool(flagNonInteractive): case c.Bool(flagNonInteractive):
select {} select {}
default: case c.Bool(flagGRPC):
service, err := grpc.NewService(crashHandler, restarter, locations, bridge, eventCh, !c.Bool(flagNoWindow)) service, err := grpc.NewService(crashHandler, restarter, locations, bridge, eventCh, !c.Bool(flagNoWindow))
if err != nil { if err != nil {
return fmt.Errorf("could not create service: %w", err) return fmt.Errorf("could not create service: %w", err)
} }
return service.Loop() 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")
} }
} }

View File

@ -257,7 +257,7 @@ void launchBridge(QStringList const &args)
else else
app().log().debug(QString("Bridge executable path: %1").arg(QDir::toNativeSeparators(bridgeExePath))); app().log().debug(QString("Bridge executable path: %1").arg(QDir::toNativeSeparators(bridgeExePath)));
overseer = std::make_unique<Overseer>(new ProcessMonitor(bridgeExePath, args, nullptr), nullptr); overseer = std::make_unique<Overseer>(new ProcessMonitor(bridgeExePath, QStringList("--grpc") + args, nullptr), nullptr);
overseer->startWorker(true); overseer->startWorker(true);
} }