public LogMessage(ExtensionEntry entry, string action) { Id = entry.Id; Name = entry.Name; Action = action; Date = DateTime.Now; }
public async Task ParseAsync() { if (!File.Exists(LocalCachePath)) { _log.Debug("Failed to find local cache file: " + LocalCachePath); return; } try { _log.Debug("Reading local cache file"); using (var reader = new StreamReader(LocalCachePath)) { string json = await reader.ReadToEndAsync(); var root = JObject.Parse(json); foreach (JProperty obj in root.Children <JProperty>()) { JEnumerable <JProperty> child = obj.Children <JProperty>(); var entry = new ExtensionEntry() { Name = obj.Name, Id = (string)root[obj.Name]["id"], MinVersion = new Version((string)root[obj.Name]["minVersion"] ?? "15.0"), MaxVersion = new Version((string)root[obj.Name]["maxVersion"] ?? "16.0") }; Extensions.Add(entry); } } _log.Debug("Local cache file read ok"); } catch (Exception ex) { _log.Error(ex); System.Diagnostics.Debug.Write(ex); } }
public void MarkUninstalled(ExtensionEntry extension) { Log.Add(new LogMessage(extension, _uninstalled)); }
public void AddResult(ExtensionEntry extension, RestartReason result) { _results.Add(new AResult(extension, result)); }
public AResult(ExtensionEntry extension, RestartReason result) { this.Extension = extension; this.Result = result; }
private RestartReason InstallExtension(ExtensionEntry extension, IVsExtensionRepository repository, IVsExtensionManager manager) { GalleryEntry entry = null; OnUpdate(string.Format("{0} ({1})", _settings.ResourceProvider.InstallingExtension, extension.Name)); var ret = RestartReason.None; try { _logger.Log($"{Environment.NewLine}{extension.Name}"); _logger.Log(" " + _settings.ResourceProvider.Verifying, false); entry = repository.GetVSGalleryExtensions <GalleryEntry>(new List <string> { extension.Id }, 1033, false)?.FirstOrDefault(); if (entry != null) { _logger.Log(_settings.ResourceProvider.Ok); // Marketplace ok #if DEBUG || true var extensionsByAuthor = manager.GetInstalledExtensions().GroupBy(x => x.Header.Author).Select(y => new { y.Key, items = y }).ToArray(); #endif var installed = manager.GetInstalledExtensions().SingleOrDefault(n => n.Header.Identifier == extension.Id); _logger.Log(" " + _settings.ResourceProvider.Verifying, false); IInstallableExtension installable = null; if (installed != null) { if (NewerVersionExists(installed, repository, entry)) { installed = null; } } _logger.Log(" " + _settings.ResourceProvider.Ok); if (installed == null) { _logger.Log(" " + _settings.ResourceProvider.Downloading, false); installable = repository.Download(entry); _logger.Log(_settings.ResourceProvider.Ok); // Download ok } if (installable == null) { _logger.Log(" nothing to do"); } else { _logger.Log(" " + _settings.ResourceProvider.Installing, false); ret = manager.Install(installable, false); _logger.Log(_settings.ResourceProvider.Ok); // Install ok } Telemetry.Install(extension.Id, true); } else { _logger.Log(_settings.ResourceProvider.Failed); // Markedplace failed } } catch (Exception e) { _logger.Log(_settings.ResourceProvider.Failed); _logger.Log("Failed to install package: " + e.Message); _log.Error(e); Telemetry.Install(extension.Id, false); } finally { if (entry != null) { Store.MarkInstalled(extension); } } return(ret); }