Skip to content

Commit fc26d2e

Browse files
create destination dir only when neccessary in AbstractProvider
1 parent ff3c88a commit fc26d2e

1 file changed

Lines changed: 19 additions & 10 deletions

File tree

FileSyncLibNet/SyncProviders/AbstractProvider.cs

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public AbstractProvider(IFileJobOptions jobOptions) : base(jobOptions)
1919
if (syncJobOptions.SourcePath.StartsWith("scp:"))
2020
{
2121
SourceAccess = new ScpAccessProvider(syncJobOptions.Credentials);
22-
22+
2323
}
2424
else
2525
{
@@ -34,7 +34,7 @@ public AbstractProvider(IFileJobOptions jobOptions) : base(jobOptions)
3434
{
3535
DestinationAccess = new FileIoAccessProvider();
3636
}
37-
37+
3838
}
3939

4040
public override void DeleteFiles()
@@ -47,31 +47,40 @@ public override void SyncSourceToDest()
4747
if (!(JobOptions is IFileSyncJobOptions jobOptions))
4848
throw new ArgumentException("this instance has no information about syncing files, it has type " + JobOptions.GetType().ToString());
4949
var sw = Stopwatch.StartNew();
50+
5051
try
5152
{
5253
string formattedDestinationPath = string.Format(jobOptions.DestinationPath, DateTime.Now);
5354
DestinationAccess.UpdateAccessPath(formattedDestinationPath);
54-
DestinationAccess.CreateDirectory("");
5555
}
56-
catch (Exception ex) { logger?.LogError(ex, "exception creating destination directory {A}", jobOptions.DestinationPath); }
57-
if (JobOptions.Credentials != null)
58-
{
56+
catch (Exception ex) { logger?.LogError(ex, "exception formatting destination accesspath with DateTime.Now as 0 arg {A}", jobOptions.DestinationPath); }
5957

60-
}
58+
bool createDestinationDir = true;
6159
int copied = 0;
6260
int skipped = 0;
6361
var minimumLastWriteTime = jobOptions.RememberLastSync ? (LastRun - jobOptions.Interval - jobOptions.Interval) : DateTime.MinValue;
6462
bool error_occured = false;
6563
try
6664
{
67-
var sourceFiles = SourceAccess.GetFiles(minimumLastWriteTime.DateTime, JobOptions.SearchPattern, recursive: JobOptions.Recursive, subfolders: JobOptions.Subfolders);
68-
65+
var sourceFiles = SourceAccess.GetFiles(minimumLastWriteTime: minimumLastWriteTime.DateTime,
66+
pattern: JobOptions.SearchPattern,
67+
recursive: JobOptions.Recursive,
68+
subfolders: JobOptions.Subfolders);
6969
foreach (var sourceFile in sourceFiles)
7070
{
7171
var remoteFile = DestinationAccess.GetFileInfo(sourceFile.Name);
7272
bool copy = !remoteFile.Exists || remoteFile.Length != sourceFile.Length || remoteFile.LastWriteTime != sourceFile.LastWriteTime;
7373
if (copy)
7474
{
75+
if (createDestinationDir)
76+
{
77+
try
78+
{
79+
DestinationAccess.CreateDirectory("");
80+
}
81+
catch (Exception ex) { logger?.LogError(ex, "exception creating destination directory {A}", jobOptions.DestinationPath); }
82+
createDestinationDir = false;
83+
}
7584
try
7685
{
7786
logger.LogDebug("Copy {A}", sourceFile.Name);
@@ -105,7 +114,7 @@ public override void SyncSourceToDest()
105114
LastRun = DateTimeOffset.Now;
106115
}
107116
}
108-
catch(Exception exc)
117+
catch (Exception exc)
109118
{
110119
logger.LogError(exc, "Exception in main logic of abstract provider");
111120
}

0 commit comments

Comments
 (0)