GODT-2154: Allow noninteractive mode from launcher.

This commit is contained in:
Romain Le Jeune 2022-11-25 09:47:55 +00:00
parent ece6d7b2d7
commit 37a46465ba
2 changed files with 20 additions and 10 deletions

View File

@ -293,7 +293,7 @@ gofiles: ./internal/bridge/credits.go
cd ./utils/ && ./credits.sh bridge cd ./utils/ && ./credits.sh bridge
## Run and debug ## Run and debug
.PHONY: run run-qt run-qt-cli run-nogui run-nogui-cli run-debug run-qml-preview clean-vendor clean-frontend-qt clean-frontend-qt-common clean .PHONY: run run-qt run-qt-cli run-nogui run-cli run-noninteractive run-debug run-qml-preview clean-vendor clean-frontend-qt clean-frontend-qt-common clean
LOG?=debug LOG?=debug
LOG_IMAP?=client # client/server/all, or empty to turn it off LOG_IMAP?=client # client/server/all, or empty to turn it off
@ -304,6 +304,9 @@ run: run-qt
run-cli: run-nogui run-cli: run-nogui
run-noninteractive: build-nogui clean-vendor gofiles
PROTONMAIL_ENV=dev ./${LAUNCHER_EXE} ${RUN_FLAGS} -n
run-qt: build-gui run-qt: build-gui
ifeq "${TARGET_OS}" "darwin" ifeq "${TARGET_OS}" "darwin"
PROTONMAIL_ENV=dev ${DARWINAPP_CONTENTS}/MacOS/${LAUNCHER_EXE} ${RUN_FLAGS} PROTONMAIL_ENV=dev ${DARWINAPP_CONTENTS}/MacOS/${LAUNCHER_EXE} ${RUN_FLAGS}

View File

@ -47,10 +47,12 @@ const (
exeName = "bridge" exeName = "bridge"
guiName = "bridge-gui" guiName = "bridge-gui"
FlagCLI = "--cli" FlagCLI = "cli"
FlagCLIShort = "-c" FlagCLIShort = "c"
FlagLauncher = "--launcher" FlagNonInteractive = "noninteractive"
FlagWait = "--wait" FlagNonInteractiveShort = "n"
FlagLauncher = "--launcher"
FlagWait = "--wait"
) )
func main() { //nolint:funlen func main() { //nolint:funlen
@ -160,16 +162,21 @@ func appendLauncherPath(path string, args []string) []string {
return args return args
} }
// inCLIMode detect if CLI mode is asked.
func inCLIMode(args []string) bool {
return sliceContains(args, FlagCLI) || sliceContains(args, FlagCLIShort)
}
// sliceContains checks if a value is present in a list. // sliceContains checks if a value is present in a list.
func sliceContains[T comparable](list []T, s T) bool { func sliceContains[T comparable](list []T, s T) bool {
return xslices.Any(list, func(arg T) bool { return arg == s }) return xslices.Any(list, func(arg T) bool { return arg == s })
} }
// inCLIMode detect if CLI mode is asked.
func inCLIMode(args []string) bool {
return hasFlag(args, FlagCLI) || hasFlag(args, FlagCLIShort) || hasFlag(args, FlagNonInteractive) || hasFlag(args, FlagNonInteractiveShort)
}
// hasFlag checks if a flag is present in a list.
func hasFlag(args []string, flag string) bool {
return xslices.Any(args, func(arg string) bool { return (arg == "-"+flag) || (arg == "--"+flag) })
}
// findAndStrip check if a value is present in s list and remove all occurrences of the value from this list. // findAndStrip check if a value is present in s list and remove all occurrences of the value from this list.
func findAndStrip[T comparable](slice []T, v T) (strippedList []T, found bool) { func findAndStrip[T comparable](slice []T, v T) (strippedList []T, found bool) {
strippedList = xslices.Filter(slice, func(value T) bool { strippedList = xslices.Filter(slice, func(value T) bool {