private void BuildSite(SiteObject site, bool server) { site.CommandLine.HandleCommonOptions(); if (site.BaseUrl == null || !site.BaseUrlForce) { site.BaseUrl = DefaultBaseUrl; } if (site.BasePath == null || !site.BaseUrlForce) { site.BasePath = string.Empty; } if (!noWatchOption.HasValue()) { if (site.GetLiveReload()) { SetupLiveReloadClient(site); if (server) { SetupLiveReloadServer(); } } site.Build(); if (server) { var watcher = _watcher.Value; watcher.Start(); watcher.FileSystemEvents += (sender, args) => { var newSite = site.Clone(); if (site.CanTrace()) { site.Info($"Received file events [{args.FileEvents.Count}]"); } try { BuildSite(newSite, false); if (newSite.GetLiveReload()) { OnSiteRebuildLiveReload(newSite); } } catch (Exception ex) { site.Error($"Unexpected error while reloading the site. Reason: {ex.GetReason()}"); } }; } } else { site.Build(); } }
public IEnumerable <ExtendDescription> FindAll(SiteObject site) { if (loaded) { return(cacheList); } if (RegistryUrl == null) { site.Error($"The registry Url for {nameof(DefaultExtendProvider)} cannot be null"); return(cacheList); } if (site.CanTrace()) { site.Trace($"Checking remote registry [{RegistryUrl}] for available extensions/themes"); } if (site == null) { throw new ArgumentNullException(nameof(site)); } string themeRegistryStr; try { using (HttpClient client = new HttpClient()) { themeRegistryStr = client.GetStringAsync(RegistryUrl).Result; } } catch (Exception ex) { site.Error($"Unable to load theme registry from Url [{RegistryUrl}]. Reason:{ex.GetReason()}"); return(cacheList); } var registryObject = new DynamicObject(); object result; if (site.Scripts.TryImportScript(themeRegistryStr, Name, registryObject, ScriptFlags.None, out result)) { var themeList = registryObject["extensions"] as ScriptArray; if (themeList != null) { foreach (var theme in themeList) { var themeObject = theme as ScriptObject; if (themeObject != null) { var themeName = (string)themeObject["name"]; var themeDescription = (string)themeObject["description"]; var themeUrl = (string)themeObject["url"]; var themeDirectory = (string)themeObject["directory"]; cacheList.Add(new ExtendDescription(themeName, themeDescription, themeUrl, themeDirectory)); } } } } loaded = true; return(cacheList); }