public void ChangeFile(string filename) { if (Latched) { return; } var category = _matcher.CategoryFor(filename); ConsoleWriter.Write(ConsoleColor.Gray, "Detected change to file " + filename); switch (category) { case FileChangeCategory.AppDomain: _observer.RecycleAppDomain(); break; case FileChangeCategory.Application: _observer.RecycleApplication(); break; case FileChangeCategory.Content: _observer.RefreshContent(); break; } }
public void Watch(bool refreshContent, IApplicationObserver observer) { FileSystemEventHandler appDomain = (o, args) => { StopWatching(); observer.RecycleAppDomain(); }; FileSystemEventHandler reload = (o, args) => { var watcher = o.As<FileSystemWatcher>(); watcher.EnableRaisingEvents = false; try { observer.RefreshContent(); } finally { watcher.EnableRaisingEvents = true; } }; add(BinPath, "*.dll").OnChangeOrCreation(appDomain); add(BinPath, "*.exe").OnChangeOrCreation(appDomain); if (ConfigurationFile.IsNotEmpty()) { add(ApplicationPath, ConfigurationFile).OnChangeOrCreation(appDomain); } if (!refreshContent) { return; } if (PublicAssetFolder.IsNotEmpty()) { add(PublicAssetFolder, "*.js").OnChange(reload); add(PublicAssetFolder, "*.jsx").OnChange(reload); add(PublicAssetFolder, "*.css").OnChange(reload); } else { add(ApplicationPath, "*.js").OnChange(reload); add(ApplicationPath, "*.jsx").OnChange(reload); add(ApplicationPath, "*.css").OnChange(reload); LinkedFolders.Each(x => { add(x, "*.js").OnChange(reload); add(x, "*.jsx").OnChange(reload); add(x, "*.css").OnChange(reload); }); } ContentMatches.Each(ext => { if (!ext.StartsWith("*")) ext = "*" + ext; add(ApplicationPath, ext).OnChange(reload); LinkedFolders.Each(folder => add(folder, ext).OnChangeOrCreation(reload)); }); }
public void Watch(bool refreshContent, IApplicationObserver observer) { FileSystemEventHandler appDomain = (o, args) => { StopWatching(); observer.RecycleAppDomain(); }; FileSystemEventHandler reload = (o, args) => { var watcher = o.As <FileSystemWatcher>(); watcher.EnableRaisingEvents = false; try { observer.RefreshContent(); } finally { watcher.EnableRaisingEvents = true; } }; add(BinPath, "*.dll").OnChangeOrCreation(appDomain); add(BinPath, "*.exe").OnChangeOrCreation(appDomain); if (ConfigurationFile.IsNotEmpty()) { add(ApplicationPath, ConfigurationFile).OnChangeOrCreation(appDomain); } if (!refreshContent) { return; } if (PublicAssetFolder.IsNotEmpty()) { add(PublicAssetFolder, "*.js").OnChange(reload); add(PublicAssetFolder, "*.jsx").OnChange(reload); add(PublicAssetFolder, "*.css").OnChange(reload); } else { add(ApplicationPath, "*.js").OnChange(reload); add(ApplicationPath, "*.jsx").OnChange(reload); add(ApplicationPath, "*.css").OnChange(reload); LinkedFolders.Each(x => { add(x, "*.js").OnChange(reload); add(x, "*.jsx").OnChange(reload); add(x, "*.css").OnChange(reload); }); } ContentMatches.Each(ext => { if (!ext.StartsWith("*")) { ext = "*" + ext; } add(ApplicationPath, ext).OnChange(reload); LinkedFolders.Each(folder => add(folder, ext).OnChangeOrCreation(reload)); }); }