예제 #1
0
        private static async Task Run(RunParameters parameters)
        {
            var options = AppOptionsProvider.LoadOptions();

            await UpdateTheme(options, parameters.Theme);

            if (File.Exists(parameters.Source))
            {
                await Convert(new FileInfo(parameters.Source).DirectoryName !, parameters.Source, options, parameters);
            }
            else if (Directory.Exists(parameters.Source))
            {
                foreach (var file in Directory.GetFiles(parameters.Source, "*.md", SearchOption.AllDirectories).OrderBy(x => x))
                {
                    try
                    {
                        await Convert(new DirectoryInfo(parameters.Source).FullName !, file, options, parameters);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine($"Unable to convert {file}: {ex.Message}");
                    }
                }
            }
            else
            {
                Exit(-3, $"Source file or directory '{parameters.Source}' does not exist.");
            }
        }
예제 #2
0
        private static async Task SetTheme(SetThemeParameters parameters)
        {
            var options = AppOptionsProvider.LoadOptions();

            await UpdateTheme(options, parameters.Theme);

            Console.WriteLine($"Changed theme to \"{parameters.Theme}\". All conversions will use this theme from now on.");
        }
예제 #3
0
        public void Setup()
        {
            autoMocker                = new AutoMoqer();
            appOptionsProvider        = autoMocker.Create <AppOptionsProvider>();
            mockWritableSettingsStore = new Mock <IWritableSettingsStore>();
            var mockWritableSettingsStoreProvider = autoMocker.GetMock <IWritableSettingsStoreProvider>();

            mockWritableSettingsStoreProvider.Setup(
                writableSettingsStoreProvider => writableSettingsStoreProvider.Provide()
                ).Returns(mockWritableSettingsStore.Object);
        }
예제 #4
0
        private static async Task UpdateTheme(AppOptions options, string theme)
        {
            if (string.IsNullOrWhiteSpace(theme))
            {
                return;
            }

            if (!options.Theme.Equals(theme, StringComparison.OrdinalIgnoreCase) || options.ThemeRefreshedUtc < DateTime.UtcNow.AddMinutes(-5))
            {
                await ThemeFetcher.Fetch(theme);

                options.ThemeRefreshedUtc = DateTime.UtcNow;
            }

            options.Theme = theme;
            AppOptionsProvider.StoreOptions(options);
        }