Exemplo n.º 1
0
 public FileNuggetFinder(I18NLocalizationOptions localizationOptions)
 {
     _localizationOptions = localizationOptions;
     _nuggetParser        = new NuggetParser(new NuggetTokens(
                                                 _localizationOptions.NuggetBeginToken,
                                                 _localizationOptions.NuggetEndToken,
                                                 _localizationOptions.NuggetDelimiterToken,
                                                 _localizationOptions.NuggetCommentToken),
                                             NuggetParser.Context.SourceProcessing);
 }
Exemplo n.º 2
0
        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;
                }
            }
        }
Exemplo n.º 3
0
 public PoTranslationRepository(I18NLocalizationOptions localizationOptions, string assemblyVersion = null)
 {
     _localizationOptions = localizationOptions;
     _assemblyVersion     = assemblyVersion ?? "0.0.0";
 }
Exemplo n.º 4
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);
        }