|
3 | 3 | using Connect.LanguagePackManager.Core.Models.PackageLinks; |
4 | 4 | using Connect.LanguagePackManager.Core.Repositories; |
5 | 5 | using Connect.LanguagePackManager.Core.Services.Packages; |
6 | | -using DotNetNuke.UI.UserControls; |
7 | 6 | using System; |
8 | 7 | using System.IO; |
9 | 8 | using System.Linq; |
@@ -47,63 +46,72 @@ public static void CheckPackage(PackageLink package) |
47 | 46 |
|
48 | 47 | public static void CheckResourcesRepo(PackageLink package) |
49 | 48 | { |
50 | | - var repo = GithubService.GetRepo(package.OrgName, package.RepoName); |
51 | | - var defaultBranch = repo.DefaultBranch; |
52 | | - var zipUrl = $"https://github.com/{package.OrgName}/{package.RepoName}/archive/refs/heads/{defaultBranch}.zip"; |
53 | | - |
54 | | - using (var client = new System.Net.WebClient()) |
| 49 | + var lastCommit = GithubService.GetLastCommit(package.OrgName, package.RepoName); |
| 50 | + if (lastCommit != null && lastCommit.Details != null && lastCommit.Details.Committer != null) |
55 | 51 | { |
56 | | - using (var strm = client.OpenRead(zipUrl)) |
| 52 | + var baseVersion = string.IsNullOrEmpty(package.LastDownloadedVersion) ? "00.00.00" : package.LastDownloadedVersion; |
| 53 | + var githubVersions = GithubService.GetReleases(package.OrgName, package.RepoName) |
| 54 | + .Where(gp => gp.Draft == false && gp.Prerelease == false) |
| 55 | + .OrderBy(p => p.Published); |
| 56 | + if (githubVersions.Any()) |
57 | 57 | { |
58 | | - var unzipResult = ZipHelper.Unzip(strm, "", true); |
59 | | - var manifest = new LanguagePackManifest(unzipResult, package.ModuleId); |
60 | | - Globals.SaveObject($@"D:\tmp{package.RepoName}.json", unzipResult); |
61 | | - manifest.Process(true, -1); |
62 | | - |
63 | | - try |
| 58 | + // this repo posts releases |
| 59 | + foreach (var githubVersion in githubVersions.Where(gp => string.IsNullOrEmpty(package.LastDownloadedVersion) || baseVersion.IsSmallerThan(gp.TagName.ParseVersion().ToNormalizedFormat()))) |
64 | 60 | { |
65 | | - //Directory.Delete(unzipResult.UnzipDirectory, true); |
| 61 | + foreach (var download in githubVersion.Assets) |
| 62 | + { |
| 63 | + var m = Regex.Match(download.Name, package.AssetRegex); |
| 64 | + if (m.Success) |
| 65 | + { |
| 66 | + var result = GetGithubPackage(download.DownloadUrl); |
| 67 | + if (!string.IsNullOrEmpty(result)) |
| 68 | + { |
| 69 | + var unzipResult = ZipHelper.Unzip(result, "", true); |
| 70 | + var manifest = new LanguagePackManifest(unzipResult, package.ModuleId); |
| 71 | + manifest.Process(true, -1); |
| 72 | + |
| 73 | + try |
| 74 | + { |
| 75 | + Directory.Delete(unzipResult.UnzipDirectory, true); |
| 76 | + } |
| 77 | + catch |
| 78 | + { |
| 79 | + } |
| 80 | + |
| 81 | + package.LastDownloadedVersion = githubVersion.TagName.ParseVersion().ToNormalizedFormat(); |
| 82 | + } |
| 83 | + } |
| 84 | + } |
66 | 85 | } |
67 | | - catch |
| 86 | + } |
| 87 | + else |
| 88 | + { |
| 89 | + // this repo doesn't post releases but just keeps an updated list of resources |
| 90 | + var repo = GithubService.GetRepo(package.OrgName, package.RepoName); |
| 91 | + var defaultBranch = repo.DefaultBranch; |
| 92 | + var zipUrl = $"https://github.com/{package.OrgName}/{package.RepoName}/archive/refs/heads/{defaultBranch}.zip"; |
| 93 | + |
| 94 | + using (var client = new System.Net.WebClient()) |
68 | 95 | { |
| 96 | + using (var strm = client.OpenRead(zipUrl)) |
| 97 | + { |
| 98 | + var unzipResult = ZipHelper.Unzip(strm, "", true); |
| 99 | + var manifest = new LanguagePackManifest(unzipResult, package.ModuleId); |
| 100 | + manifest.Process(true, -1); |
| 101 | + |
| 102 | + try |
| 103 | + { |
| 104 | + Directory.Delete(unzipResult.UnzipDirectory, true); |
| 105 | + } |
| 106 | + catch |
| 107 | + { |
| 108 | + } |
| 109 | + } |
69 | 110 | } |
70 | 111 | } |
71 | 112 | } |
72 | | - |
73 | | - //var unzipResult = ZipHelper.Unzip(this.ControllerContext.HttpContext.Request.Files[0].InputStream, "", true); |
74 | | - //var manifest = new LanguagePackManifest(unzipResult, ModuleContext.ModuleId); |
75 | | - //manifest.Process(generic, User.UserID); |
76 | | - |
77 | | - //try |
78 | | - //{ |
79 | | - // Directory.Delete(unzipResult.UnzipDirectory, true); |
80 | | - //} |
81 | | - //catch |
82 | | - //{ |
83 | | - //} |
84 | | - |
85 | | - |
86 | | - //var lastCommit = GithubService.GetLastCommit(package.OrgName, package.RepoName); |
87 | | - //if (lastCommit != null && lastCommit.Details != null && lastCommit.Details.Committer != null) |
88 | | - //{ |
89 | | - // var lastCommitDate = lastCommit.Details.Committer.Date; |
90 | | - // if (package.LastChecked == null || lastCommitDate > package.LastChecked) |
91 | | - // { |
92 | | - // var tree = GithubService.GetFileTree(package.OrgName, package.RepoName, lastCommit.Sha); |
93 | | - // if (tree != null && tree.Files != null) |
94 | | - // { |
95 | | - // var allFiles = tree.Files.Where(f => f.Type == "blob").ToList(); |
96 | | - // var dnnFile = allFiles.Where(f => f.Path.ToLowerInvariant().EndsWith(".dnn")).FirstOrDefault(); |
97 | | - // if (dnnFile != null) |
98 | | - // { |
99 | | - // var manifest = new LanguagePackManifest(tree, dnnFile, package.ModuleId); |
100 | | - // manifest.Process(true, -1); |
101 | | - // } |
102 | | - // } |
103 | | - // } |
104 | | - //} |
105 | | - //package.LastChecked = DateTime.Now; |
106 | | - //PackageLinkRepository.Instance.UpdatePackageLink(package.GetPackageLinkBase(), -1); |
| 113 | + package.LastChecked = DateTime.Now; |
| 114 | + PackageLinkRepository.Instance.UpdatePackageLink(package.GetPackageLinkBase(), -1); |
107 | 115 | } |
108 | 116 |
|
109 | 117 | public static string GetGithubPackage(string url) |
|
0 commit comments