diff --git a/.idea/.idea.OneDriveArchiver/.idea/codeStyles/codeStyleConfig.xml b/.idea/.idea.OneDriveArchiver/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..7ad1bf1 --- /dev/null +++ b/.idea/.idea.OneDriveArchiver/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/.idea.OneDriveArchiver/.idea/workspace.xml b/.idea/.idea.OneDriveArchiver/.idea/workspace.xml index d4730c7..a9aeddd 100644 --- a/.idea/.idea.OneDriveArchiver/.idea/workspace.xml +++ b/.idea/.idea.OneDriveArchiver/.idea/workspace.xml @@ -23,7 +23,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + @@ -141,107 +190,134 @@ + + - + - + - + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - + + + + + + @@ -256,17 +332,30 @@ file://$PROJECT_DIR$/OneDriveArchiver/Program.cs - 39 + 37 - - + + file://$PROJECT_DIR$/OneDriveArchiver/Program.cs + 51 + + + + + + + diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..ad9faa7 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,27 @@ +{ + // Use IntelliSense to find out which attributes exist for C# debugging + // Use hover for the description of the existing attributes + // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md + "version": "0.2.0", + "configurations": [ + { + "name": ".NET Core Launch (console)", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "build", + // If you have changed target frameworks, make sure to update the program path. + "program": "${workspaceFolder}/OneDriveArchiver/bin/Debug/netcoreapp3.1/OneDriveArchiver.dll", + "args": [], + "cwd": "${workspaceFolder}/OneDriveArchiver", + // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console + "console": "internalConsole", + "stopAtEntry": false + }, + { + "name": ".NET Core Attach", + "type": "coreclr", + "request": "attach", + "processId": "${command:pickProcess}" + } + ] +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..7183523 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,42 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "build", + "command": "dotnet", + "type": "process", + "args": [ + "build", + "${workspaceFolder}/OneDriveArchiver/OneDriveArchiver.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "publish", + "command": "dotnet", + "type": "process", + "args": [ + "publish", + "${workspaceFolder}/OneDriveArchiver/OneDriveArchiver.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "watch", + "command": "dotnet", + "type": "process", + "args": [ + "watch", + "run", + "${workspaceFolder}/OneDriveArchiver/OneDriveArchiver.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + } + ] +} \ No newline at end of file diff --git a/OneDriveArchiver/.vscode/launch.json b/OneDriveArchiver/.vscode/launch.json new file mode 100644 index 0000000..a9bb90f --- /dev/null +++ b/OneDriveArchiver/.vscode/launch.json @@ -0,0 +1,28 @@ +{ + // Use IntelliSense to find out which attributes exist for C# debugging + // Use hover for the description of the existing attributes + // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md + "version": "0.2.0", + "configurations": [ + + { + "name": ".NET Core Launch (console)", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "build", + // If you have changed target frameworks, make sure to update the program path. + "program": "${workspaceFolder}/bin/Debug/netcoreapp3.1/OneDriveArchiver.dll", + "args": [], + "cwd": "${workspaceFolder}", + // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console + "console": "internalConsole", + "stopAtEntry": false + }, + { + "name": ".NET Core Attach", + "type": "coreclr", + "request": "attach", + "processId": "${command:pickProcess}" + } + ] +} \ No newline at end of file diff --git a/OneDriveArchiver/.vscode/tasks.json b/OneDriveArchiver/.vscode/tasks.json new file mode 100644 index 0000000..af19d6d --- /dev/null +++ b/OneDriveArchiver/.vscode/tasks.json @@ -0,0 +1,42 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "build", + "command": "dotnet", + "type": "process", + "args": [ + "build", + "${workspaceFolder}/OneDriveArchiver.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "publish", + "command": "dotnet", + "type": "process", + "args": [ + "publish", + "${workspaceFolder}/OneDriveArchiver.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "watch", + "command": "dotnet", + "type": "process", + "args": [ + "watch", + "run", + "${workspaceFolder}/OneDriveArchiver.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + } + ] +} \ No newline at end of file diff --git a/OneDriveArchiver/IoHelper.cs b/OneDriveArchiver/IoHelper.cs index 3173fe9..30ba2ce 100644 --- a/OneDriveArchiver/IoHelper.cs +++ b/OneDriveArchiver/IoHelper.cs @@ -9,6 +9,22 @@ namespace OneDriveArchiver { public static class IoHelper { + #region Constructor + + static IoHelper() + { + ProcessedFiles = 0; + } + + + #endregion + #region Properties + public static int ProcessedFiles + { + get; + set; + } + #endregion /// /// Archives a one drive file. It takes the file creation date and month, /// creates the necessary folder structure (if necessary) i.e. Year\Month and @@ -18,7 +34,7 @@ namespace OneDriveArchiver /// /// /// Filename - public static void ArchiveOneDriveFile(string appName, string targetPath, string filename) + private static void ArchiveOneDriveFile(string appName, string targetPath, string filename) { try { @@ -67,5 +83,59 @@ namespace OneDriveArchiver $"Exception while backing up OneDrive file. Message = {ex.Message}, Stacktrace = {ex.StackTrace}"); } } + + /// + /// ProcessFilesForDirectory implementation. Processes all contained directory recursively and + /// archives the files to the archive directory. + /// + /// Current directory for processing + /// Name of application + /// Target archiving path to store files + public static void ProcessFilesForDirectory(string currentDirectoryWithFiles, string appName, string targetPath) + { + var containedDirectories = Directory.GetDirectories(currentDirectoryWithFiles); + foreach (var containedDirectory in containedDirectories) + { + ProcessFilesForDirectory(containedDirectory, appName, targetPath); + } + + // process the files in the directory (if all directories have been traversed... + var filesToProcess = Directory.GetFiles(currentDirectoryWithFiles); + if (filesToProcess.Length > 1) + { + foreach (var item in filesToProcess) + { + Console.WriteLine($"{appName}: Processing file {item}..."); + + // skip ourselves... + if (item.ToLower().Contains("onedrivearchiver")) + { + Console.WriteLine( + $"{appName}: Skipping processing of my own executable. Proceeding..."); + continue; + } + + // we do not archive desktop.ini either... + if (item.ToLower().Contains("desktop.ini")) + { + Console.WriteLine($"{appName}: skipping desktop.ini file..."); + continue; + } + + // archive the file + IoHelper.ArchiveOneDriveFile(appName, targetPath,item); + + // increment number of processed files + ProcessedFiles += 1; + + Console.WriteLine($"{appName}: Processing for file {item} completed successfully."); + } + } + else + { + // no files found... + Console.WriteLine($"{appName}: No files found to process."); + } + } } } \ No newline at end of file diff --git a/OneDriveArchiver/OneDriveArchiver.csproj b/OneDriveArchiver/OneDriveArchiver.csproj index ddaf9ab..49611b9 100644 --- a/OneDriveArchiver/OneDriveArchiver.csproj +++ b/OneDriveArchiver/OneDriveArchiver.csproj @@ -10,9 +10,7 @@ false AnyCPU - false - none - true + true diff --git a/OneDriveArchiver/Program.cs b/OneDriveArchiver/Program.cs index 8885151..0cddabd 100644 --- a/OneDriveArchiver/Program.cs +++ b/OneDriveArchiver/Program.cs @@ -1,8 +1,6 @@ #region Using Statements - using System; using System.IO; - #endregion namespace OneDriveArchiver @@ -38,51 +36,20 @@ namespace OneDriveArchiver { // normal processing... Console.WriteLine($"{appName}: starting up..."); - + // set target path var targetPath = args.Length == 1 ? Path.GetFullPath(".") : args[1]; - var startUpTime = DateTime.Now; - var filesToProcess = Directory.GetFiles(args[0]); - if (filesToProcess.Length > 1) - { - foreach (var item in filesToProcess) - { - Console.WriteLine($"{appName}: Processing file {item}..."); - - // skip ourselves... - if (item.ToLower().Contains("onedrivearchiver")) - { - Console.WriteLine( - $"{appName}: Skipping processing of my own executable. Proceeding..."); - continue; - } - - // we do not archive desktop.ini either... - if (item.ToLower().Contains("desktop.ini")) - { - Console.WriteLine($"{appName}: skipping desktop.ini file..."); - continue; - } - - // archive the file - IoHelper.ArchiveOneDriveFile(appName, targetPath,item); - - Console.WriteLine($"{appName}: Processing for file {item} completed successfully."); - } - } - else - { - // no files found... - Console.WriteLine($"{appName}: No files found to process."); - } + // process the base directory, plus possible containing directories recursively + IoHelper.ProcessFilesForDirectory(args[0], appName, targetPath); var endProcessingTime = DateTime.Now; var processingTime = endProcessingTime - startUpTime; Console.WriteLine( - $"{appName}: Processing completed.\n{appName}: Processing time = {processingTime}\n{appName}: Number of files = {filesToProcess.Length}."); + $"{appName}: Processing completed.\n{appName}: Processing time = {processingTime}"); + Console.WriteLine($"{appName}: Number of files = {IoHelper.ProcessedFiles}."); } } } diff --git a/OneDriveArchiver/bin/Debug/netcoreapp3.1/OneDriveArchiver.dll b/OneDriveArchiver/bin/Debug/netcoreapp3.1/OneDriveArchiver.dll index dc51690..1fae0c4 100644 Binary files a/OneDriveArchiver/bin/Debug/netcoreapp3.1/OneDriveArchiver.dll and b/OneDriveArchiver/bin/Debug/netcoreapp3.1/OneDriveArchiver.dll differ diff --git a/OneDriveArchiver/bin/Debug/netcoreapp3.1/OneDriveArchiver.pdb b/OneDriveArchiver/bin/Debug/netcoreapp3.1/OneDriveArchiver.pdb new file mode 100644 index 0000000..c314879 Binary files /dev/null and b/OneDriveArchiver/bin/Debug/netcoreapp3.1/OneDriveArchiver.pdb differ diff --git a/OneDriveArchiver/bin/Release/netcoreapp3.1/OneDriveArchiver.dll b/OneDriveArchiver/bin/Release/netcoreapp3.1/OneDriveArchiver.dll index f5feeef..309b947 100644 Binary files a/OneDriveArchiver/bin/Release/netcoreapp3.1/OneDriveArchiver.dll and b/OneDriveArchiver/bin/Release/netcoreapp3.1/OneDriveArchiver.dll differ diff --git a/OneDriveArchiver/bin/Release/netcoreapp3.1/OneDriveArchiver.pdb b/OneDriveArchiver/bin/Release/netcoreapp3.1/OneDriveArchiver.pdb index d53f2ce..6640dae 100644 Binary files a/OneDriveArchiver/bin/Release/netcoreapp3.1/OneDriveArchiver.pdb and b/OneDriveArchiver/bin/Release/netcoreapp3.1/OneDriveArchiver.pdb differ diff --git a/OneDriveArchiver/bin/Release/netcoreapp3.1/win-x64/OneDriveArchiver.dll b/OneDriveArchiver/bin/Release/netcoreapp3.1/win-x64/OneDriveArchiver.dll index 2c1f6d0..f5b2faf 100644 Binary files a/OneDriveArchiver/bin/Release/netcoreapp3.1/win-x64/OneDriveArchiver.dll and b/OneDriveArchiver/bin/Release/netcoreapp3.1/win-x64/OneDriveArchiver.dll differ diff --git a/OneDriveArchiver/bin/Release/netcoreapp3.1/win-x64/OneDriveArchiver.pdb b/OneDriveArchiver/bin/Release/netcoreapp3.1/win-x64/OneDriveArchiver.pdb index 3e21ee5..e2e6e60 100644 Binary files a/OneDriveArchiver/bin/Release/netcoreapp3.1/win-x64/OneDriveArchiver.pdb and b/OneDriveArchiver/bin/Release/netcoreapp3.1/win-x64/OneDriveArchiver.pdb differ diff --git a/OneDriveArchiver/bin/Release/netcoreapp3.1/win-x64/publish/OneDriveArchiver.exe b/OneDriveArchiver/bin/Release/netcoreapp3.1/win-x64/publish/OneDriveArchiver.exe index 5f2d38f..8223341 100644 Binary files a/OneDriveArchiver/bin/Release/netcoreapp3.1/win-x64/publish/OneDriveArchiver.exe and b/OneDriveArchiver/bin/Release/netcoreapp3.1/win-x64/publish/OneDriveArchiver.exe differ diff --git a/OneDriveArchiver/bin/Release/netcoreapp3.1/win-x64/publish/OneDriveArchiver.pdb b/OneDriveArchiver/bin/Release/netcoreapp3.1/win-x64/publish/OneDriveArchiver.pdb index 3e21ee5..a0010cf 100644 Binary files a/OneDriveArchiver/bin/Release/netcoreapp3.1/win-x64/publish/OneDriveArchiver.pdb and b/OneDriveArchiver/bin/Release/netcoreapp3.1/win-x64/publish/OneDriveArchiver.pdb differ diff --git a/OneDriveArchiver/obj/Debug/netcoreapp3.1/OneDriveArchiver b/OneDriveArchiver/obj/Debug/netcoreapp3.1/OneDriveArchiver new file mode 100644 index 0000000..72dd517 Binary files /dev/null and b/OneDriveArchiver/obj/Debug/netcoreapp3.1/OneDriveArchiver differ diff --git a/OneDriveArchiver/obj/Debug/netcoreapp3.1/OneDriveArchiver.AssemblyInfo.cs b/OneDriveArchiver/obj/Debug/netcoreapp3.1/OneDriveArchiver.AssemblyInfo.cs index bc9f69e..530299f 100644 --- a/OneDriveArchiver/obj/Debug/netcoreapp3.1/OneDriveArchiver.AssemblyInfo.cs +++ b/OneDriveArchiver/obj/Debug/netcoreapp3.1/OneDriveArchiver.AssemblyInfo.cs @@ -1,6 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. +// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -18,5 +19,5 @@ using System.Reflection; [assembly: System.Reflection.AssemblyTitleAttribute("OneDriveArchiver")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0")] -// Von der MSBuild WriteCodeFragment-Klasse generiert. +// Generated by the MSBuild WriteCodeFragment class. diff --git a/OneDriveArchiver/obj/Debug/netcoreapp3.1/OneDriveArchiver.assets.cache b/OneDriveArchiver/obj/Debug/netcoreapp3.1/OneDriveArchiver.assets.cache index 56bd0f0..6164ad3 100644 Binary files a/OneDriveArchiver/obj/Debug/netcoreapp3.1/OneDriveArchiver.assets.cache and b/OneDriveArchiver/obj/Debug/netcoreapp3.1/OneDriveArchiver.assets.cache differ diff --git a/OneDriveArchiver/obj/Debug/netcoreapp3.1/OneDriveArchiver.csproj.FileListAbsolute.txt b/OneDriveArchiver/obj/Debug/netcoreapp3.1/OneDriveArchiver.csproj.FileListAbsolute.txt index 2818a7b..781b4b5 100644 --- a/OneDriveArchiver/obj/Debug/netcoreapp3.1/OneDriveArchiver.csproj.FileListAbsolute.txt +++ b/OneDriveArchiver/obj/Debug/netcoreapp3.1/OneDriveArchiver.csproj.FileListAbsolute.txt @@ -22,3 +22,5 @@ C:\Users\johan\OneDrive\DEV\OneDriveArchiver\OneDriveArchiver\obj\Debug\netcorea C:\Users\johan\OneDrive\DEV\OneDriveArchiver\OneDriveArchiver\obj\Debug\netcoreapp3.1\OneDriveArchiver.csproj.CoreCompileInputs.cache C:\Users\johan\OneDrive\DEV\OneDriveArchiver\OneDriveArchiver\obj\Debug\netcoreapp3.1\OneDriveArchiver.dll C:\Users\johan\OneDrive\DEV\OneDriveArchiver\OneDriveArchiver\obj\Debug\netcoreapp3.1\OneDriveArchiver.genruntimeconfig.cache +C:\Users\johan\OneDrive\DEV\OneDriveArchiver\OneDriveArchiver\bin\Debug\netcoreapp3.1\OneDriveArchiver.pdb +C:\Users\johan\OneDrive\DEV\OneDriveArchiver\OneDriveArchiver\obj\Debug\netcoreapp3.1\OneDriveArchiver.pdb diff --git a/OneDriveArchiver/obj/Debug/netcoreapp3.1/OneDriveArchiver.csprojAssemblyReference.cache b/OneDriveArchiver/obj/Debug/netcoreapp3.1/OneDriveArchiver.csprojAssemblyReference.cache index 97cde85..b5cc743 100644 Binary files a/OneDriveArchiver/obj/Debug/netcoreapp3.1/OneDriveArchiver.csprojAssemblyReference.cache and b/OneDriveArchiver/obj/Debug/netcoreapp3.1/OneDriveArchiver.csprojAssemblyReference.cache differ diff --git a/OneDriveArchiver/obj/Debug/netcoreapp3.1/OneDriveArchiver.dll b/OneDriveArchiver/obj/Debug/netcoreapp3.1/OneDriveArchiver.dll index dc51690..1fae0c4 100644 Binary files a/OneDriveArchiver/obj/Debug/netcoreapp3.1/OneDriveArchiver.dll and b/OneDriveArchiver/obj/Debug/netcoreapp3.1/OneDriveArchiver.dll differ diff --git a/OneDriveArchiver/obj/Debug/netcoreapp3.1/OneDriveArchiver.pdb b/OneDriveArchiver/obj/Debug/netcoreapp3.1/OneDriveArchiver.pdb new file mode 100644 index 0000000..c314879 Binary files /dev/null and b/OneDriveArchiver/obj/Debug/netcoreapp3.1/OneDriveArchiver.pdb differ diff --git a/OneDriveArchiver/obj/Release/netcoreapp3.1/OneDriveArchiver.csprojAssemblyReference.cache b/OneDriveArchiver/obj/Release/netcoreapp3.1/OneDriveArchiver.csprojAssemblyReference.cache index a63931a..f9a61ec 100644 Binary files a/OneDriveArchiver/obj/Release/netcoreapp3.1/OneDriveArchiver.csprojAssemblyReference.cache and b/OneDriveArchiver/obj/Release/netcoreapp3.1/OneDriveArchiver.csprojAssemblyReference.cache differ diff --git a/OneDriveArchiver/obj/Release/netcoreapp3.1/OneDriveArchiver.dll b/OneDriveArchiver/obj/Release/netcoreapp3.1/OneDriveArchiver.dll index f5feeef..309b947 100644 Binary files a/OneDriveArchiver/obj/Release/netcoreapp3.1/OneDriveArchiver.dll and b/OneDriveArchiver/obj/Release/netcoreapp3.1/OneDriveArchiver.dll differ diff --git a/OneDriveArchiver/obj/Release/netcoreapp3.1/OneDriveArchiver.pdb b/OneDriveArchiver/obj/Release/netcoreapp3.1/OneDriveArchiver.pdb index d53f2ce..6640dae 100644 Binary files a/OneDriveArchiver/obj/Release/netcoreapp3.1/OneDriveArchiver.pdb and b/OneDriveArchiver/obj/Release/netcoreapp3.1/OneDriveArchiver.pdb differ diff --git a/OneDriveArchiver/obj/Release/netcoreapp3.1/win-x64/OneDriveArchiver.dll b/OneDriveArchiver/obj/Release/netcoreapp3.1/win-x64/OneDriveArchiver.dll index 2c1f6d0..f5b2faf 100644 Binary files a/OneDriveArchiver/obj/Release/netcoreapp3.1/win-x64/OneDriveArchiver.dll and b/OneDriveArchiver/obj/Release/netcoreapp3.1/win-x64/OneDriveArchiver.dll differ diff --git a/OneDriveArchiver/obj/Release/netcoreapp3.1/win-x64/OneDriveArchiver.pdb b/OneDriveArchiver/obj/Release/netcoreapp3.1/win-x64/OneDriveArchiver.pdb index 3e21ee5..e2e6e60 100644 Binary files a/OneDriveArchiver/obj/Release/netcoreapp3.1/win-x64/OneDriveArchiver.pdb and b/OneDriveArchiver/obj/Release/netcoreapp3.1/win-x64/OneDriveArchiver.pdb differ diff --git a/OneDriveArchiver/obj/Release/netcoreapp3.1/win-x64/linked/OneDriveArchiver.dll b/OneDriveArchiver/obj/Release/netcoreapp3.1/win-x64/linked/OneDriveArchiver.dll index 8b51406..eb8dc1b 100644 Binary files a/OneDriveArchiver/obj/Release/netcoreapp3.1/win-x64/linked/OneDriveArchiver.dll and b/OneDriveArchiver/obj/Release/netcoreapp3.1/win-x64/linked/OneDriveArchiver.dll differ diff --git a/OneDriveArchiver/obj/rider.project.restore.info b/OneDriveArchiver/obj/rider.project.restore.info index 5609802..33ce555 100644 --- a/OneDriveArchiver/obj/rider.project.restore.info +++ b/OneDriveArchiver/obj/rider.project.restore.info @@ -1 +1 @@ -15974120607874257 \ No newline at end of file +15980079412695528 \ No newline at end of file