private static IServiceCollection GetServices(ProgramParameters parameters, IConfiguration configuration)
 {
     return(new ServiceCollection()
            .Configure <SubtitleDownloaderSettings>(configuration)
            .AddLogging(config => {
         config.ClearProviders();
         config.AddConsole();
         config.AddConfiguration(configuration.GetSection("Logging"));
     })
            .AddOpenSubtitlesApiServices()
            .AddSubtitleDownloaderServices()
            .AddSingleton(parameters));
 }
        public static ProgramParameters ReadParameters(string[] args)
        {
            var parameters = new ProgramParameters();

            try
            {
                if (args.Length > 0)
                {
                    if (args.Length > 1)
                    {
                        if (args[0] == "config")
                        {
                            if (args.Length == 2 && args[1] == "clear")
                            {
                                parameters.ClearUserConfiguration = true;
                            }
                            else if (args.Length == 2 && args[1] == "user")
                            {
                                parameters.ConfigureUser = true;
                            }
                            else if (args.Length == 2 && args[1] == "language")
                            {
                                parameters.ConfigureLanguageFilter = true;
                            }
                            else
                            {
                                parameters.PrintHelp = true;
                            }
                        }
                        else if (args[1] == "download")
                        {
                            parameters.DownloadSpecificSubtitles = true;
                            parameters.MovieFileName             = args[0];
                            parameters.SubtitlesId = args[2];
                        }
                        else if (args[1] == "list")
                        {
                            parameters.ListSubtitles = true;
                            parameters.MovieFileName = args[0];
                        }
                        else
                        {
                            parameters.PrintHelp = true;
                        }
                    }
                    else if (args.Length == 1)
                    {
                        if (args[0] == "status")
                        {
                            parameters.ShowStatus = true;
                        }
                        else
                        {
                            parameters.DownloadSubtitles = true;
                            parameters.MovieFileName     = args[0];
                        }
                    }
                    else
                    {
                        parameters.PrintHelp = true;
                    }
                }
                else
                {
                    parameters.PrintHelp = true;
                }
            }
            catch
            {
                parameters.PrintHelp = true;
            }

            return(parameters);
        }