public FileNuggetFinder(I18NLocalizationOptions localizationOptions) { _localizationOptions = localizationOptions; _nuggetParser = new NuggetParser(new NuggetTokens( _localizationOptions.NuggetBeginToken, _localizationOptions.NuggetEndToken, _localizationOptions.NuggetDelimiterToken, _localizationOptions.NuggetCommentToken), NuggetParser.Context.SourceProcessing); }
static void Build(string projectDirectory, string webConfigFilename, int buildDelayMilliseconds = -1) { lock (BuildLock) { if (_isBuilding) { return; } if (buildDelayMilliseconds > 0 && _lastBuildDate.HasValue && DateTime.Now - _lastBuildDate.Value < TimeSpan.FromMilliseconds(buildDelayMilliseconds)) { return; } _isBuilding = true; } try { var sw = new Stopwatch(); sw.Restart(); var settingsProvider = (ISettingsProvider) new SettingsProvider(projectDirectory); settingsProvider.PopulateFromWebConfig(webConfigFilename); var settings = new I18NLocalizationOptions(settingsProvider); var repository = new PoTranslationRepository(settings, _assemblyVersionStr); var nuggetFinder = new FileNuggetFinder(settings); var items = nuggetFinder.ParseAll(); if (repository.SaveTemplate(items)) { var merger = new TranslationMerger(repository); merger.MergeAllTranslation(items); } sw.Stop(); Console.WriteLine($"Build operation completed in {sw.Elapsed.TotalSeconds:F} seconds."); } finally { lock (BuildLock) { _isBuilding = false; _lastBuildDate = DateTime.Now; } } }
public PoTranslationRepository(I18NLocalizationOptions localizationOptions, string assemblyVersion = null) { _localizationOptions = localizationOptions; _assemblyVersion = assemblyVersion ?? "0.0.0"; }
static int Watch(Options options, string projectDirectory, string webConfigFilename, Action onChangeAction) { var settingsProvider = (ISettingsProvider) new SettingsProvider(projectDirectory); settingsProvider.PopulateFromWebConfig(webConfigFilename); var settings = new I18NLocalizationOptions(settingsProvider); var watchers = new List <FileSystemWatcher>(); var filters = settings.WhiteList.Where(x => x.StartsWith("*.")).ToList(); Console.WriteLine($"Watching directories: {string.Join(", ", settings.DirectoriesToScan)}. Filters: {string.Join(", ", filters)}"); try { foreach (var directory in settings.DirectoriesToScan) { if (!Directory.Exists(directory)) { Console.Error.WriteLine($"Watch directory does not exist: {directory}"); return(1); } var watcher = new FileSystemWatcher { Path = directory, NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName, IncludeSubdirectories = true }; foreach (var filter in filters) { watcher.Filters.Add(filter); } watcher.Changed += (sender, args) => { onChangeAction.Invoke(); }; watcher.Created += (sender, args) => { onChangeAction.Invoke(); }; watcher.Renamed += (sender, args) => { onChangeAction.Invoke(); }; watcher.Deleted += (sender, args) => { onChangeAction.Invoke(); }; watcher.EnableRaisingEvents = true; watchers.Add(watcher); } } finally { Console.ReadLine(); foreach (var watcher in watchers) { watcher.Dispose(); } } return(0); }