| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- namespace SharpGLTF
- {
- static class DownloadUtils
- {
- private static readonly Object _DownloadMutex = new object();
- public static void SyncronizeGitRepository(string remoteUrl, string localDirectoryPath)
- {
- Console.WriteLine($"Sync with {remoteUrl}...");
- if (!System.IO.Path.IsPathRooted(localDirectoryPath)) throw new ArgumentException(nameof(localDirectoryPath));
- lock (_DownloadMutex)
- {
- if (LibGit2Sharp.Repository.Discover(localDirectoryPath) == null)
- {
- Console.WriteLine($"Cloning {remoteUrl} can take several minutes; Please wait...");
- LibGit2Sharp.Repository.Clone(remoteUrl, localDirectoryPath);
- Console.WriteLine("... Clone Completed");
- return;
- }
- using (var repo = new LibGit2Sharp.Repository(localDirectoryPath))
- {
- var options = new LibGit2Sharp.PullOptions
- {
- FetchOptions = new LibGit2Sharp.FetchOptions()
- };
- var r = LibGit2Sharp.Commands.Pull(repo, new LibGit2Sharp.Signature("Anonymous", "[email protected]", new DateTimeOffset(DateTime.Now)), options);
- Console.WriteLine($"{remoteUrl} is {r.Status}");
- }
- }
- }
- public static string DownloadFile(string remoteUri, string localFilePath)
- {
- if (!System.IO.Path.IsPathRooted(localFilePath)) throw new ArgumentException(nameof(localFilePath));
- lock (_DownloadMutex)
- {
- if (System.IO.File.Exists(localFilePath)) return localFilePath; // we check again because we could have downloaded the file while waiting.
- Console.WriteLine($"Downloading {remoteUri}... Please Wait...");
- var dir = System.IO.Path.GetDirectoryName(localFilePath);
- System.IO.Directory.CreateDirectory(dir);
- using (var wc = new System.Net.WebClient())
- {
- wc.DownloadFile(remoteUri, localFilePath);
- }
- if (localFilePath.ToUpperInvariant().EndsWith(".ZIP"))
- {
- Console.WriteLine($"Extracting {localFilePath}...");
- var extractPath = System.IO.Path.Combine(dir, System.IO.Path.GetFileNameWithoutExtension(localFilePath));
- System.IO.Compression.ZipFile.ExtractToDirectory(localFilePath, extractPath);
- }
- return localFilePath;
- }
- }
- }
- }
|