private void PrintScript(RegistryPackage script, RegistryPackageVersion version, IReadOnlyCollection <Script> localFiles) { Renderer.Write(script.Name, ConsoleColor.Green); Renderer.Write(" "); Renderer.Write($"v{version.Version}", ConsoleColor.Gray); var nonInstalledLocalFiles = localFiles.Where(l => !l.FullPath.StartsWith(Config.VirtAMate.PackagesFolder)).ToList(); if (nonInstalledLocalFiles.Count > 0) { var filesSummary = nonInstalledLocalFiles.Select(l => l.FullPath).Select(Controller.GetDisplayPath).OrderBy(p => p.Length).ToList(); Renderer.Write(" "); if (filesSummary.Count == 1) { Renderer.Write($"\"{filesSummary.FirstOrDefault()}\"", ConsoleColor.DarkGray); } else { Renderer.Write($"\"{filesSummary.FirstOrDefault()}\" and {filesSummary.Count - 1} others...", ConsoleColor.DarkGray); } } Renderer.Write(" "); Renderer.Write($"referenced by {Pluralize(localFiles.Sum(l => l.Scenes?.Count() ?? 0), "scene", "scenes")}", ConsoleColor.DarkCyan); var latestVersion = script.GetLatestVersion(); if (version != latestVersion) { Renderer.Write($" [update available: v{latestVersion.Version}]", ConsoleColor.Yellow); } else { Renderer.Write($" [up to date]", ConsoleColor.Cyan); } Renderer.WriteLine(); }
public void Deconstruct(out Registry registry, out RegistryPackage package, out RegistryPackageVersion version, out RegistryFile file) { registry = Registry; package = Package; version = Version; file = File; }
public void CanGetLatestVersion() { RegistryPackageVersion version = TestFactory.RegVer("1.0.0"); RegistryPackage package = TestFactory.RegScript("script1", version); var registry = TestFactory.Reg(package); var success = registry.TryGetPackageVersion(RegistryPackageType.Scripts, "script1", null, out var context); Assert.That(success, Is.True); Assert.That(context.Registry, Is.SameAs(registry)); Assert.That(context.Package, Is.SameAs(package)); Assert.That(context.Version, Is.SameAs(version)); }
private void PrintScript(RegistryPackage script, RegistryPackageVersion version, IReadOnlyCollection <LocalScriptFile> localFiles) { Renderer.Write(script.Name, ConsoleColor.Green); Renderer.Write(" "); Renderer.Write($"v{version.Version}", ConsoleColor.Gray); if (localFiles.Count > 0) { var filesSummary = localFiles.Select(l => l.FullPath).Select(Path.GetFileName).OrderBy(p => p.Length).ToList(); Renderer.Write(" "); if (filesSummary.Count == 1) { Renderer.Write($"\"{filesSummary.FirstOrDefault()}\"", ConsoleColor.DarkGray); } else { Renderer.Write($"\"{filesSummary.FirstOrDefault()}\" and {filesSummary.Count - 1} others...", ConsoleColor.DarkGray); } } Renderer.Write(" "); Renderer.Write($"referenced by {Pluralize(localFiles.Sum(l => l.Scenes?.Count() ?? 0), "scene", "scenes")}", ConsoleColor.DarkCyan); var latestVersion = script.GetLatestVersion(); if (version != latestVersion) { Renderer.Write($" [update available: v{latestVersion.Version}]", ConsoleColor.Yellow); } else { Renderer.Write($" [up to date]", ConsoleColor.Cyan); } var errors = localFiles.Max(l => l.Status); if (errors == LocalFileErrorLevel.Warning) { Renderer.Write(" [warnings]", ConsoleColor.Yellow); } else if (errors >= LocalFileErrorLevel.Error) { Renderer.Write(" [errors]", ConsoleColor.Red); } Renderer.WriteLine(); }
private void PrintScriptToPackage(RegistrySavesMatch match, RegistryPackageVersion updateToVersion) { Renderer.Write($"Script "); Renderer.Write(Controller.GetDisplayPath(match.Local.FullPath), ConsoleColor.Blue); Renderer.Write($" is "); Renderer.Write($"{match.Script.Name} v{match.Version.Version}", ConsoleColor.Cyan); Renderer.Write($" > "); if (updateToVersion == null) { Renderer.Write($"already up to date", ConsoleColor.DarkGray); Renderer.WriteLine(); } else { Renderer.Write($"new version available: v{updateToVersion.Version}", ConsoleColor.Magenta); Renderer.WriteLine(); Renderer.WriteLine($" Released {updateToVersion.Created.ToLocalTime().ToString("D")}: {updateToVersion.Notes ?? "No release notes"}"); } }
public void DoesNotMatchByFilenameWhenMatchedByHash() { var saves = ResultFactory.SavesMap() .WithScript(new Script($"{_vam}1.cs", "1"), out var local1) .Build(); RegistryFile file = ResultFactory.RegFile("1.cs", "1"); RegistryPackageVersion version = ResultFactory.RegVer("1.0.0", file); RegistryPackage script = ResultFactory.RegScript("my-script", version); var registry = ResultFactory.Reg(script); var result = _handler.Match(saves, registry); PartyAssertions.AreDeepEqual(new RegistrySavesMatches { HashMatches = new[] { new RegistrySavesMatch { Script = script, Version = version, File = file, Local = local1 } }, FilenameMatches = new RegistrySavesMatch[0], NoMatches = new Script[0] }, result); }
public async Task <LocalPackageInfo> GetInstalledPackageInfoAsync(string name, RegistryPackageVersion version) { var basePath = _fs.Path.GetFullPath(_packagesFolder, _savesDirectory); if (!basePath.StartsWith(_savesDirectory)) { throw new UnauthorizedAccessException($"The packages folder must be within the saves directory: '{basePath}'"); } var installPath = Path.Combine(basePath, name, version.Version); var files = new List <LocalPackageInfo.InstalledFileInfo>(); foreach (var file in version.Files.Where(f => !f.Ignore && f.Filename != null)) { files.Add(await GetPackageFileInfo(installPath, file).ConfigureAwait(false)); } return(new LocalPackageInfo { InstallFolder = basePath, Files = files.ToArray() }); }
public void Deconstruct(out Registry registry, out RegistryPackage package, out RegistryPackageVersion version) { registry = Registry; package = Package; version = Version; }
public RegistryPackageVersionContext WithVersion(RegistryPackageVersion version) { return(Version == version ? this : new RegistryPackageVersionContext(Registry, Package, version)); }
public RegistryPackageVersionContext(Registry registry, RegistryPackage package, RegistryPackageVersion version) { Registry = registry ?? throw new System.ArgumentNullException(nameof(registry)); Package = package ?? throw new System.ArgumentNullException(nameof(package)); Version = version ?? throw new System.ArgumentNullException(nameof(version)); }
public Task <LocalPackageInfo> GetInstalledPackageInfoAsync(string name, RegistryPackageVersion version) { return(new PackageStatusHandler(_fs, SavesDirectory, _config.VirtAMate.PackagesFolder) .GetInstalledPackageInfoAsync(name, version)); }
public RegistryPackageFileContext(Registry registry, RegistryPackage package, RegistryPackageVersion version, RegistryFile file) : base(registry, package, version) { File = file ?? throw new System.ArgumentNullException(nameof(file)); }