Add option for CLI's `wait-for-idle` to require devs to be connected

See https://github.com/Martchus/syncthingtray/issues/199
This commit is contained in:
Martchus 2023-08-27 00:09:06 +02:00
parent 021cbf2ae5
commit 89caa76102
3 changed files with 7 additions and 2 deletions

View File

@ -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;

View File

@ -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 });

View File

@ -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;
};