Skip to content

Commit 625b680

Browse files
committed
improve syncing of files with CLI
1 parent 2d0792f commit 625b680

File tree

4 files changed

+219
-153
lines changed

4 files changed

+219
-153
lines changed

FileSystemCLI/Program.cs

Lines changed: 4 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,9 @@ private static SyncPairsModel GetSyncPair(ParsedArgs args)
119119
};
120120
}
121121

122-
private static async Task DoWatchSyncs(bool isTestRun, bool initialSync, SyncPairsModel syncPairs, Api api)
122+
private static async Task DoWatchSyncs(bool isTestRun, SyncPairsModel syncPairs, Api api)
123123
{
124-
SyncPairHandler? initialHandler = null;
124+
SemaphoreSlim syncSem = new SemaphoreSlim(1, 1);
125125
List<SyncFileWatcher> watchers = new List<SyncFileWatcher>();
126126

127127
bool isCanceled = false;
@@ -130,34 +130,13 @@ private static async Task DoWatchSyncs(bool isTestRun, bool initialSync, SyncPai
130130
if (isCanceled) return;
131131

132132
Console.WriteLine("Cancel sync!");
133-
initialHandler?.Cancel();
134133
foreach (SyncFileWatcher watcher in watchers) watcher.Stop();
135134
e.Cancel = true;
136135
};
137136

138137
foreach (SyncPairModel syncPair in syncPairs.Pairs)
139138
{
140-
SyncPairState syncPairState = await SyncPairState.LoadSyncPairState(syncPair.StateFilePath);
141-
if (initialSync || syncPairState.LastFullSync + syncPair.FullSyncInterval < DateTime.UtcNow)
142-
{
143-
try
144-
{
145-
await api.Ensure();
146-
initialHandler = new SyncPairHandler(isTestRun, syncPair, api, syncPairState);
147-
await initialHandler.Run();
148-
149-
if (initialHandler.IsCancelled) return;
150-
151-
syncPairState = initialHandler.CurrentState;
152-
if (!isTestRun) await syncPairState.WriteSyncPairState(syncPair.StateFilePath);
153-
}
154-
catch (Exception e)
155-
{
156-
Console.WriteLine($"Error on initial sync before watch: {e.Message}");
157-
}
158-
}
159-
160-
SyncFileWatcher watcher = new SyncFileWatcher(isTestRun, syncPair, api, syncPairState);
139+
SyncFileWatcher watcher = new SyncFileWatcher(isTestRun, syncPair, api, syncSem);
161140
watchers.Add(watcher);
162141
watcher.Start();
163142
}
@@ -202,7 +181,7 @@ public static async Task Main(string[] args)
202181

203182
using Api api = new(syncPairs.Api.BaseUrl, syncPairs.Api.Username, syncPairs.Api.Password);
204183

205-
if (parsedArgs.Watch) await DoWatchSyncs(parsedArgs.IsTestRun, parsedArgs.InitialSync, syncPairs, api);
184+
if (parsedArgs.Watch) await DoWatchSyncs(parsedArgs.IsTestRun, syncPairs, api);
206185
else await DoSingleCompleteSyncs(parsedArgs.IsTestRun, syncPairs, api);
207186
}
208187
}

FileSystemCLI/ProgramArguments/ParsedArgs.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ public class ParsedArgs
88
public bool IsTestRun { get; init; }
99

1010
public bool Watch { get; init; }
11-
12-
public bool InitialSync { get; init; }
1311

1412
public string? ConfigFilePath { get; init; }
1513

@@ -41,8 +39,6 @@ public static ParsedArgs Parse(string[] args)
4139
{
4240
Option isTestRunOption = new Option("t", "test-run", "Do a test run that doesn't change anything", false, 0, 0);
4341
Option watchOption = new Option("w", "watch", "Watch for changes in file system", false, 0, 0);
44-
Option initialSyncOption = Option.GetLongOnly("inital-sync",
45-
"Does complete sync before starting file system water (only works with --watch)", false, 0, 0);
4642
Option configFilePathOption =
4743
new Option("c", "config-file", "Uses the config from file at given path", false, 1, 1);
4844

@@ -61,7 +57,7 @@ public static ParsedArgs Parse(string[] args)
6157
Option stateFilePathOption = new Option("state", "state-file",
6258
"File to save synced state in and only needed for two way mode", false, 1, 1);
6359

64-
Options options = new Options(isTestRunOption, watchOption, initialSyncOption, configFilePathOption,
60+
Options options = new Options(isTestRunOption, watchOption, configFilePathOption,
6561
serverUrlOption, serverUsernameOption, serverPasswordOption, withSubfoldersOption, localFolderPathOption,
6662
serverFolderPathOption, modeOption, compareTypeOption, conflictHandlingOption, allowListOption,
6763
denyListsOption, stateFilePathOption);
@@ -74,7 +70,6 @@ public static ParsedArgs Parse(string[] args)
7470
{
7571
IsTestRun = result.HasValidOptionParseds(isTestRunOption),
7672
Watch = result.HasValidOptionParseds(watchOption),
77-
InitialSync = result.HasValidOptionParseds(initialSyncOption),
7873
ConfigFilePath = result.TryGetFirstValidOptionParseds(configFilePathOption, out parsed)
7974
? parsed.Values[0]
8075
: null,

0 commit comments

Comments
 (0)