Update libsyncthing to v1.5.0, support setting data directory
This commit is contained in:
parent
65b3261320
commit
28a8391f2b
|
@ -6,7 +6,7 @@ set(META_PROJECT_TYPE library)
|
|||
set(META_APP_NAME "Syncthing library")
|
||||
set(META_APP_DESCRIPTION "Syncthing itself, built as a shared or static library")
|
||||
set(META_PROJECT_VARNAME_UPPER LIB_SYNCTHING)
|
||||
set(META_SYNCTHING_VERSION "v1.4.2")
|
||||
set(META_SYNCTHING_VERSION "v1.5.0")
|
||||
|
||||
# add project files
|
||||
set(HEADER_FILES interface.h)
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit 59c8bec1e592c23766b1f49d0e4cb005b4be70cf
|
||||
Subproject commit dea7226ee5caf6e508b397571ccf04547c8f6b5b
|
|
@ -140,8 +140,9 @@ std::int64_t runSyncthing(const RuntimeOptions &options)
|
|||
if (!runningState) {
|
||||
return -1;
|
||||
}
|
||||
return ::libst_run_syncthing(gostr(options.configDir), gostr(options.guiAddress), gostr(options.guiApiKey), options.verbose,
|
||||
options.allowNewerConfig, options.noDefaultConfig, options.ensureConfigDirectoryExists);
|
||||
return ::libst_run_syncthing(gostr(options.configDir), gostr(options.dataDir), gostr(options.guiAddress), gostr(options.guiApiKey),
|
||||
options.flags & RuntimeFlags::Verbose, options.flags & RuntimeFlags::AllowNewerConfig, options.flags & RuntimeFlags::NoDefaultConfig,
|
||||
options.flags & RuntimeFlags::EnsureConfigDirExists, options.flags & RuntimeFlags::EnsureDataDirExists);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
|
@ -6,18 +6,36 @@
|
|||
#include <cstdint>
|
||||
#include <functional>
|
||||
#include <string>
|
||||
#include <type_traits>
|
||||
#include <vector>
|
||||
|
||||
namespace LibSyncthing {
|
||||
|
||||
enum class RuntimeFlags : std::uint64_t {
|
||||
None = 0,
|
||||
Verbose = (1 << 0),
|
||||
AllowNewerConfig = (1 << 1),
|
||||
NoDefaultConfig = (1 << 2),
|
||||
EnsureConfigDirExists = (1 << 3),
|
||||
EnsureDataDirExists = (1 << 4),
|
||||
};
|
||||
|
||||
constexpr bool operator&(RuntimeFlags lhs, RuntimeFlags rhs)
|
||||
{
|
||||
return static_cast<std::underlying_type_t<RuntimeFlags>>(lhs) & static_cast<std::underlying_type_t<RuntimeFlags>>(rhs);
|
||||
}
|
||||
|
||||
constexpr RuntimeFlags operator|(RuntimeFlags lhs, RuntimeFlags rhs)
|
||||
{
|
||||
return static_cast<RuntimeFlags>(static_cast<std::underlying_type_t<RuntimeFlags>>(lhs) | static_cast<std::underlying_type_t<RuntimeFlags>>(rhs));
|
||||
}
|
||||
|
||||
struct RuntimeOptions {
|
||||
std::string configDir;
|
||||
std::string dataDir;
|
||||
std::string guiAddress;
|
||||
std::string guiApiKey;
|
||||
bool verbose = false;
|
||||
bool allowNewerConfig = true;
|
||||
bool noDefaultConfig = false;
|
||||
bool ensureConfigDirectoryExists = true;
|
||||
RuntimeFlags flags = RuntimeFlags::AllowNewerConfig | RuntimeFlags::EnsureConfigDirExists | RuntimeFlags::EnsureDataDirExists;
|
||||
};
|
||||
|
||||
enum class LogLevel : int {
|
||||
|
|
|
@ -234,6 +234,7 @@ void InterfaceTests::testRunWithoutConfig()
|
|||
{
|
||||
RuntimeOptions options;
|
||||
options.configDir = TestApplication::instance()->workingDirectory() + "/does/not/exist";
|
||||
options.dataDir = TestApplication::instance()->workingDirectory() + "/does/also/not/exist";
|
||||
filesystem::remove_all(TestApplication::instance()->workingDirectory() + "/does");
|
||||
testRun(bind(static_cast<std::int64_t (*)(const RuntimeOptions &)>(&runSyncthing), cref(options)), false);
|
||||
}
|
||||
|
@ -245,6 +246,6 @@ void InterfaceTests::testRunWithoutConfig()
|
|||
void InterfaceTests::testRunWidthConfig()
|
||||
{
|
||||
RuntimeOptions options;
|
||||
options.configDir = setupTestConfigDir();
|
||||
options.configDir = options.dataDir = setupTestConfigDir();
|
||||
testRun(bind(static_cast<std::int64_t (*)(const RuntimeOptions &)>(&runSyncthing), cref(options)), true);
|
||||
}
|
||||
|
|
|
@ -119,6 +119,7 @@ void SyncthingLauncher::launch(const Settings::Launcher &launcherSettings)
|
|||
if (launcherSettings.useLibSyncthing) {
|
||||
LibSyncthing::RuntimeOptions options;
|
||||
options.configDir = launcherSettings.libSyncthing.configDir.toStdString();
|
||||
options.dataDir = launcherSettings.libSyncthing.configDir.toStdString();
|
||||
setLibSyncthingLogLevel(launcherSettings.libSyncthing.logLevel);
|
||||
launch(options);
|
||||
} else {
|
||||
|
|
|
@ -71,14 +71,14 @@
|
|||
<item row="3" column="1">
|
||||
<widget class="QtUtilities::PathSelection" name="configDirPathSelection" native="true"/>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<item row="5" column="0">
|
||||
<widget class="QLabel" name="logLevelLabel">
|
||||
<property name="text">
|
||||
<string>Log level</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<item row="5" column="1">
|
||||
<widget class="QComboBox" name="logLevelComboBox">
|
||||
<item>
|
||||
<property name="text">
|
||||
|
@ -107,6 +107,16 @@
|
|||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="dataDirLabel">
|
||||
<property name="text">
|
||||
<string>Data directory</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="QtUtilities::PathSelection" name="dataDirPathSelection" native="true"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -349,5 +359,37 @@
|
|||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>useBuiltInVersionCheckBox</sender>
|
||||
<signal>toggled(bool)</signal>
|
||||
<receiver>dataDirLabel</receiver>
|
||||
<slot>setVisible(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>273</x>
|
||||
<y>68</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>122</x>
|
||||
<y>156</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>useBuiltInVersionCheckBox</sender>
|
||||
<signal>toggled(bool)</signal>
|
||||
<receiver>dataDirPathSelection</receiver>
|
||||
<slot>setVisible(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>273</x>
|
||||
<y>68</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>171</x>
|
||||
<y>156</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
</ui>
|
||||
|
|
|
@ -293,6 +293,7 @@ void restore()
|
|||
launcher.autostartEnabled = settings.value(QStringLiteral("syncthingAutostart"), launcher.autostartEnabled).toBool();
|
||||
launcher.useLibSyncthing = settings.value(QStringLiteral("useLibSyncthing"), launcher.useLibSyncthing).toBool();
|
||||
launcher.libSyncthing.configDir = settings.value(QStringLiteral("libSyncthingConfigDir"), launcher.libSyncthing.configDir).toString();
|
||||
launcher.libSyncthing.dataDir = settings.value(QStringLiteral("libSyncthingDataDir"), launcher.libSyncthing.dataDir).toString();
|
||||
launcher.libSyncthing.logLevel = static_cast<LibSyncthing::LogLevel>(
|
||||
settings.value(QStringLiteral("libSyncthingLogLevel"), static_cast<int>(launcher.libSyncthing.logLevel)).toInt());
|
||||
launcher.syncthingPath = settings.value(QStringLiteral("syncthingPath"), launcher.syncthingPath).toString();
|
||||
|
@ -394,6 +395,7 @@ void save()
|
|||
settings.setValue(QStringLiteral("syncthingAutostart"), launcher.autostartEnabled);
|
||||
settings.setValue(QStringLiteral("useLibSyncthing"), launcher.useLibSyncthing);
|
||||
settings.setValue(QStringLiteral("libSyncthingConfigDir"), launcher.libSyncthing.configDir);
|
||||
settings.setValue(QStringLiteral("libSyncthingDataDir"), launcher.libSyncthing.dataDir);
|
||||
settings.setValue(QStringLiteral("libSyncthingLogLevel"), static_cast<int>(launcher.libSyncthing.logLevel));
|
||||
settings.setValue(QStringLiteral("syncthingPath"), launcher.syncthingPath);
|
||||
settings.setValue(QStringLiteral("syncthingArgs"), launcher.syncthingArgs);
|
||||
|
|
|
@ -83,6 +83,7 @@ struct SYNCTHINGWIDGETS_EXPORT Launcher {
|
|||
|
||||
struct SYNCTHINGWIDGETS_EXPORT LibSyncthing {
|
||||
QString configDir;
|
||||
QString dataDir;
|
||||
::LibSyncthing::LogLevel logLevel = ::LibSyncthing::LogLevel::Info;
|
||||
} libSyncthing;
|
||||
|
||||
|
|
|
@ -892,6 +892,7 @@ QWidget *LauncherOptionPage::setupWidget()
|
|||
connect(m_restoreArgsButton, &IconButton::clicked, this, &LauncherOptionPage::restoreDefaultArguments);
|
||||
ui()->argumentsLineEdit->insertCustomButton(0, m_restoreArgsButton);
|
||||
ui()->configDirPathSelection->provideCustomFileMode(QFileDialog::Directory);
|
||||
ui()->dataDirPathSelection->provideCustomFileMode(QFileDialog::Directory);
|
||||
}
|
||||
|
||||
// setup other widgets
|
||||
|
@ -933,6 +934,7 @@ bool LauncherOptionPage::apply()
|
|||
settings.autostartEnabled = ui()->enabledCheckBox->isChecked();
|
||||
settings.useLibSyncthing = ui()->useBuiltInVersionCheckBox->isChecked();
|
||||
settings.libSyncthing.configDir = ui()->configDirPathSelection->lineEdit()->text();
|
||||
settings.libSyncthing.dataDir = ui()->dataDirPathSelection->lineEdit()->text();
|
||||
settings.libSyncthing.logLevel = static_cast<LibSyncthing::LogLevel>(ui()->logLevelComboBox->currentIndex());
|
||||
settings.syncthingPath = ui()->syncthingPathSelection->lineEdit()->text();
|
||||
settings.syncthingArgs = ui()->argumentsLineEdit->text();
|
||||
|
@ -955,6 +957,7 @@ void LauncherOptionPage::reset()
|
|||
ui()->useBuiltInVersionCheckBox->setChecked(settings.useLibSyncthing);
|
||||
ui()->useBuiltInVersionCheckBox->setVisible(settings.useLibSyncthing || SyncthingLauncher::isLibSyncthingAvailable());
|
||||
ui()->configDirPathSelection->lineEdit()->setText(settings.libSyncthing.configDir);
|
||||
ui()->dataDirPathSelection->lineEdit()->setText(settings.libSyncthing.dataDir);
|
||||
ui()->logLevelComboBox->setCurrentIndex(static_cast<int>(settings.libSyncthing.logLevel));
|
||||
ui()->syncthingPathSelection->lineEdit()->setText(settings.syncthingPath);
|
||||
ui()->argumentsLineEdit->setText(settings.syncthingArgs);
|
||||
|
|
Loading…
Reference in New Issue