diff --git a/cli/application.cpp b/cli/application.cpp index 3838366..1b3093e 100644 --- a/cli/application.cpp +++ b/cli/application.cpp @@ -1005,6 +1005,10 @@ bool Application::checkWhetherIdle() const switch (dev->status) { case SyncthingDevStatus::Unknown: case SyncthingDevStatus::Disconnected: + if (m_args.requireDevsConnected.isPresent()) { + return false; + } + break; case SyncthingDevStatus::OwnDevice: case SyncthingDevStatus::Idle: break; diff --git a/cli/args.cpp b/cli/args.cpp index c749884..e215d87 100644 --- a/cli/args.cpp +++ b/cli/args.cpp @@ -32,6 +32,7 @@ Args::Args() , atLeast("at-least", 'a', "specifies for how many milliseconds Syncthing must idle (prevents exiting too early in case of flaky status)", { "number" }) , timeout("timeout", 't', "specifies how many milliseconds to wait at most", { "number" }) + , requireDevsConnected("require-devs-connected", '\0', "require the specified devices to be connected") , editor("editor", '\0', "specifies the editor to be opened", { "editor name", "editor option" }) , configFile("config-file", 'f', "specifies the Syncthing config file to read API key and URL from, when not explicitly specified", { "path" }) , apiKey("api-key", 'k', "specifies the API key", { "key" }) @@ -47,7 +48,7 @@ Args::Args() dev.setValueCompletionBehavior(ValueCompletionBehavior::PreDefinedValues | ValueCompletionBehavior::InvokeCallback); status.setSubArguments({ &stats, &dir, &dev, &allDirs, &allDevs }); status.setExample(PROJECT_NAME " status # shows all dirs and devs\n" PROJECT_NAME " status --dir dir1 --dir dir2 --dev dev1 --dev dev2"); - waitForIdle.setSubArguments({ &dir, &dev, &allDirs, &allDevs, &atLeast, &timeout }); + waitForIdle.setSubArguments({ &dir, &dev, &allDirs, &allDevs, &atLeast, &timeout, &requireDevsConnected }); waitForIdle.setExample(PROJECT_NAME " wait-for-idle --timeout 1800000 --at-least 5000 && systemctl poweroff\n" PROJECT_NAME " wait-for-idle --dir dir1 --dir dir2 --dev dev1 --dev dev2 --at-least 5000"); pwd.setSubArguments({ &statusPwd, &rescanPwd, &pausePwd, &resumePwd }); diff --git a/cli/args.h b/cli/args.h index e3d666e..0371613 100644 --- a/cli/args.h +++ b/cli/args.h @@ -14,7 +14,7 @@ struct Args { OperationArgument statusPwd, rescanPwd, pausePwd, resumePwd; ConfigValueArgument script, jsLines, dryRun; ConfigValueArgument stats, dir, dev, allDirs, allDevs; - ConfigValueArgument atLeast, timeout; + ConfigValueArgument atLeast, timeout, requireDevsConnected; ConfigValueArgument editor; ConfigValueArgument configFile, apiKey, url, credentials, certificate, requestTimeout; };