private static int InvokeRun(Options options)
        {
            int toReturn = -1;

            SchoolInformationStorageAdapterSettingsProvider schoolInformationStorageAdapterSettingsProvider =
                new SchoolInformationStorageAdapterSettingsProvider(
                    options.StorageConnectionString,
                    options.TableName);

            LocalAuthorityInformationStorageAdapterSettingsProvider localAuthorityInformationStorageAdapterSettingsProvider =
                new LocalAuthorityInformationStorageAdapterSettingsProvider(
                    options.StorageConnectionString,
                    options.TableName);

            using (ServiceProvider serviceProvider = CreateServiceProvider(schoolInformationStorageAdapterSettingsProvider, localAuthorityInformationStorageAdapterSettingsProvider))
            {
                IProgram program = serviceProvider.GetService <IProgram>();

                CancellationToken cancellationToken = CancellationToken.None;
                Task <int>        runAsyncTask      = program.RunAsync(
                    options,
                    cancellationToken);

                toReturn = runAsyncTask.Result;
            }

            return(toReturn);
        }
        private static ServiceProvider CreateServiceProvider(
            SchoolInformationStorageAdapterSettingsProvider schoolInformationStorageAdapterSettingsProvider,
            LocalAuthorityInformationStorageAdapterSettingsProvider localAuthorityInformationStorageAdapter)
        {
            ServiceProvider toReturn = new ServiceCollection()
                                       .AddScoped <ILoggerWrapper, LoggerWrapper>()
                                       .AddSingleton <ISchoolInformationStorageAdapterSettingsProvider>(schoolInformationStorageAdapterSettingsProvider)
                                       .AddSingleton <ILocalAuthorityInformationStorageAdapterSettingsProvider>(localAuthorityInformationStorageAdapter)
                                       .AddScoped <ISchoolInformationStorageAdapter, SchoolInformationStorageAdapter>()
                                       .AddScoped <ILocalAuthorityInformationStorageAdapter, LocalAuthorityInformationStorageAdapter>()
                                       .AddScoped <IConfigurationFileReader, ConfigurationFileReader>()
                                       .AddScoped <ISpreadsheetReader, SpreadsheetReader>()
                                       .AddScoped <ISpreadsheetProcessor, SpreadsheetProcessor>()
                                       .AddScoped <IProgram, Program>()
                                       .BuildServiceProvider();

            return(toReturn);
        }