private Tool GetLatestTool(ToolSettings toolSettings) { string[] zipPaths = Directory .EnumerateFiles(_settings.ZippedToolsDirectory, $"{toolSettings.Prefix}*.zip", SearchOption.TopDirectoryOnly) .ToArray(); var versions = new List<Tool>(); foreach (string zipPath in zipPaths) { string withoutExtension = Path.GetFileNameWithoutExtension(zipPath); string directoryPath = Path.Combine(_settings.ExtractedToolsDirectory, withoutExtension); string version = withoutExtension.Substring(toolSettings.Prefix.Length); Version parsedVersion; if (!Version.TryParse(version, out parsedVersion)) { continue; } versions.Add(new Tool { Name = toolSettings.Name, Settings = toolSettings, ZipPath = zipPath, DirectoryPath = directoryPath, Version = version, ExecutablePath = Path.Combine(directoryPath, toolSettings.ExecutablePath), WorkingDirectory = Path.Combine(directoryPath, toolSettings.WorkingDirectory), ConfigurationPath = Path.Combine(directoryPath, toolSettings.ConfigurationPath) }); } if (versions.Count == 0) { return null; } return versions .OrderByDescending(t => Version.Parse(t.Version)) .First(); }
private Tool Extract(ToolSettings toolSettings) { Tool tool = GetLatestTool(toolSettings); ExtractTool(tool, _settings.ReloadTools); return tool; }