private static async Task Execute(IEnumerable <string> args, Subject <double> subject) { var optionsProvider = new WindowsDeploymentOptionsProvider(); var parserResult = Parser.Default .ParseArguments <WindowsDeploymentCmdOptions, NonWindowsDeploymentCmdOptions>(args); await parserResult .MapResult( (WindowsDeploymentCmdOptions opts) => { var deployer = GetDeployer(optionsProvider, opts.DiskNumber, subject); optionsProvider.Options = new WindowsDeploymentOptions { ImageIndex = opts.Index, ImagePath = opts.WimImage, UseCompact = opts.UseCompact, }; return(deployer.Deploy()); }, (NonWindowsDeploymentCmdOptions opts) => { var deployer = GetDeployer(optionsProvider, opts.DiskNumber, subject); return(deployer.Deploy()); }, HandleErrors); }
public static IExportRegistrationBlock WithCommon(this IExportRegistrationBlock block, WindowsDeploymentOptionsProvider installOptionsProvider) { var taskTypes = from a in Assemblies.AppDomainAssemblies from type in a.ExportedTypes where type.GetTypeInfo().ImplementedInterfaces.Contains(typeof(IDeploymentTask)) select type; block.ExportAssemblies(Assemblies.AppDomainAssemblies).ByInterface <ISpaceAllocator <IDevice> >(); block.Export <ZipExtractor>().As <IZipExtractor>(); block.ExportFactory(Tokenizer.Create).As <Tokenizer <LangToken> >(); block.Export <ScriptParser>().As <IScriptParser>(); block.ExportFactory(() => installOptionsProvider).As <IWindowsOptionsProvider>(); block.Export <WoaDeployer>().As <IWoaDeployer>(); block.Export <BootCreator>().As <IBootCreator>(); block.Export <LowLevelApi>().As <ILowLevelApi>(); block.ExportInstance(taskTypes).As <IEnumerable <Type> >(); block.Export <ScriptRunner>().As <IScriptRunner>(); block.Export <InstanceBuilder>().As <IInstanceBuilder>(); block.Export <RaspberryPathBuilder>().As <IPathBuilder>(); block.Export <FileSystemOperations>().As <IFileSystemOperations>(); block.Export <BcdInvokerFactory>().As <IBcdInvokerFactory>(); block.Export <WindowsDeployer>().As <IWindowsDeployer>(); block.Export <RaspberryDisklayoutPreparer>().As <IDiskLayoutPreparer>(); block.Export <ImageFlasher>().As <IImageFlasher>(); block.Export <DismImageService>().As <IWindowsImageService>(); block.ExportFactory(() => AzureDevOpsClient.Create(new Uri("https://dev.azure.com"))).As <IAzureDevOpsBuildClient>(); return(block); }
private static async Task Execute(IEnumerable <string> args, Subject <double> subject) { var optionsProvider = new WindowsDeploymentOptionsProvider(); var deployer = GetDeployer(optionsProvider, subject); var parserResult = Parser.Default .ParseArguments <WindowsDeploymentCmdOptions, EnableDualBootCmdOptions, DisableDualBootCmdOptions, NonWindowsDeploymentCmdOptions>(args); await parserResult .MapResult( (WindowsDeploymentCmdOptions opts) => { optionsProvider.Options = new WindowsDeploymentOptions() { ImageIndex = opts.Index, ImagePath = opts.WimImage, SizeReservedForWindows = ByteSize.FromGigaBytes(opts.ReservedSizeForWindowsInGb), UseCompact = opts.UseCompact, }; return(deployer.Deploy()); }, (EnableDualBootCmdOptions opts) => deployer.ToogleDualBoot(true), (DisableDualBootCmdOptions opts) => deployer.ToogleDualBoot(false), (NonWindowsDeploymentCmdOptions opts) => deployer.Deploy(), HandleErrors); }
private static IWoaDeployer GetDeployer(WindowsDeploymentOptionsProvider op, int diskNumber, Subject <double> progress) { var container = CompositionRoot.CreateContainer(op, diskNumber, progress); var deployer = container.Locate <IWoaDeployer>(); return(deployer); }
private static IWoaDeployer GetDeployer(WindowsDeploymentOptionsProvider op, IDownloadProgress progress) { var container = CompositionRoot.CreateContainer(op, progress); var deployer = container.Locate <IWoaDeployer>(); return(deployer); }
public static DependencyInjectionContainer CreateContainer(WindowsDeploymentOptionsProvider op, IOperationProgress progress) { var container = new DependencyInjectionContainer(); container.Configure(x => { x.Configure(op); x.Export <ConsolePrompt>().As <IPrompt>(); x.ExportInstance(progress).As <IOperationProgress>(); }); return(container); }
private static IWoaDeployer GetDeployer(WindowsDeploymentOptionsProvider op, Subject <double> progress) { var container = new DependencyInjectionContainer(); container.Configure(x => { x.Configure(op); x.Export <ConsoleMarkdownDisplayer>().As <IMarkdownDisplayer>(); x.ExportInstance(progress).As <IObserver <double> >(); }); var deployer = container.Locate <IWoaDeployer>(); return(deployer); }
public static DependencyInjectionContainer CreateContainer(WindowsDeploymentOptionsProvider op, int diskNumber, Subject <double> progress) { var container = new DependencyInjectionContainer(); container.Configure(x => { x.Configure(op); x.Export <ConsoleMarkdownDialog>().As <IMarkdownDialog>(); x.ExportFactory((ILowLevelApi lla) => new DeviceProvider() { Device = new RaspberryPi(lla, diskNumber) }) .As <IDeviceProvider>().Lifestyle.Singleton(); x.Export <ConsoleMarkdownDisplayer>().As <IMarkdownDisplayer>(); x.ExportInstance(progress).As <IObserver <double> >(); }); return(container); }
public static DependencyInjectionContainer CreateContainer() { var container = new DependencyInjectionContainer(); IObservable <LogEvent> logEvents = null; IViewService viewService = new ViewService(); Log.Logger = new LoggerConfiguration() .WriteTo.RollingFile(@"Logs\Log-{Date}.txt") .WriteTo.Observers(x => logEvents = x) .MinimumLevel.Verbose() .CreateLogger(); UpdateChecker.CheckForUpdates(AppProperties.GitHubBaseUrl); var optionsProvider = new WindowsDeploymentOptionsProvider(); container.Configure(x => { x.Configure(optionsProvider); x.Export <DeviceProvider>().As <IDeviceProvider>().Lifestyle.Singleton(); x.Export <WpfMarkdownDisplayer>().As <IMarkdownDisplayer>(); x.ExportFactory(() => new BehaviorSubject <double>(double.NaN)) .As <IObserver <double> >() .As <IObservable <double> >() .Lifestyle.Singleton(); x.ExportFactory(() => logEvents).As <IObservable <LogEvent> >(); x.Export <WimPickViewModel>().ByInterfaces().As <WimPickViewModel>().Lifestyle.Singleton(); x.Export <AdvancedViewModel>().ByInterfaces().As <AdvancedViewModel>().Lifestyle.Singleton(); x.Export <DeploymentViewModel>().ByInterfaces().As <DeploymentViewModel>().Lifestyle.Singleton(); x.Export <UIServices>(); x.ExportFactory(() => viewService).As <IViewService>(); x.Export <Dialog>().ByInterfaces(); x.Export <FilePicker>().As <IFilePicker>(); x.Export <SettingsService>().As <ISettingsService>(); x.ExportFactory(() => DialogCoordinator.Instance).As <IDialogCoordinator>(); }); return(container); }
public async Task Prepare() { var api = new DiskApi(); var allocators = new [] { new DefaultSpaceAllocator() }; var operations = new FileSystemOperations(); var optionsProvider = new WindowsDeploymentOptionsProvider { Options = new WindowsDeploymentOptions { SizeReservedForWindows = ByteSize.FromMegaBytes(200), } }; var phone = new TestPhone(api, null, null); var preparer = new LumiaDiskLayoutPreparer(optionsProvider, operations, allocators, new PartitionCleaner(), phone); var disk = await api.GetDisk(3); await preparer.Prepare(disk); }
public static IExportRegistrationBlock WithCommon(this IExportRegistrationBlock block, WindowsDeploymentOptionsProvider installOptionsProvider) { var taskTypes = from a in Assemblies.AppDomainAssemblies from type in a.ExportedTypes where type.GetTypeInfo().ImplementedInterfaces.Contains(typeof(IDeploymentTask)) select type; block.ExportAssemblies(Assemblies.AppDomainAssemblies).ByInterface <ISpaceAllocator <IPhone> >(); block.Export <ZipExtractor>().As <IZipExtractor>(); block.ExportFactory(Tokenizer.Create).As <Tokenizer <LangToken> >().Lifestyle.Singleton(); block.Export <ScriptParser>().As <IScriptParser>().Lifestyle.Singleton(); block.ExportFactory(() => installOptionsProvider).As <IWindowsOptionsProvider>().Lifestyle.Singleton(); block.Export <LumiaDiskLayoutPreparer>().As <IDiskLayoutPreparer>().Lifestyle.Singleton(); block.Export <PhoneInfoReader>().As <IPhoneInfoReader>().Lifestyle.Singleton(); block.Export <WoaDeployer>().As <IWoaDeployer>().Lifestyle.Singleton(); block.Export <Tooling>().As <ITooling>().Lifestyle.Singleton(); block.Export <BootCreator>().As <IBootCreator>().Lifestyle.Singleton(); block.Export <DiskApi>().As <IDiskApi>().Lifestyle.Singleton(); block.Export <PhonePathBuilder>().As <IPathBuilder>().Lifestyle.Singleton(); block.ExportInstance(taskTypes).As <IEnumerable <Type> >(); block.Export <ScriptRunner>().As <IScriptRunner>().Lifestyle.Singleton(); block.Export <InstanceBuilder>().As <IInstanceBuilder>().Lifestyle.Singleton(); block.ExportFactory((IPhone p) => new DeviceProvider { Device = p }).As <IDeviceProvider>(); block.Export <FileSystemOperations>().As <IFileSystemOperations>().Lifestyle.Singleton(); block.Export <BcdInvokerFactory>().As <IBcdInvokerFactory>().Lifestyle.Singleton(); block.Export <WindowsDeployer>().As <IWindowsDeployer>().Lifestyle.Singleton(); block.ExportFactory(() => new HttpClient { Timeout = TimeSpan.FromMinutes(30) }).Lifestyle.Singleton(); block.ExportFactory(() => new GitHubClient(new ProductHeaderValue("WOADeployer"))).As <IGitHubClient>(); block.Export <Downloader>().As <IDownloader>().Lifestyle.Singleton(); block.Export <ProviderBasedWindowsDeployer>().As <IProviderBasedWindowsDeployer>(); block.Export <PartitionCleaner>().As <IPartitionCleaner>(); block.ExportFactory(() => AzureDevOpsClient.Create(new Uri("https://dev.azure.com"))).As <IAzureDevOpsBuildClient>(); return(block); }
public static DependencyInjectionContainer CreateContainer() { var container = new DependencyInjectionContainer(); IObservable <LogEvent> logEvents = null; Log.Logger = new LoggerConfiguration() .WriteTo.RollingFile(@"Logs\Log-{Date}.txt") .WriteTo.Observers(x => logEvents = x) .MinimumLevel.Verbose() .CreateLogger(); Log.Verbose($"Started {AppProperties.AppTitle}"); var optionsProvider = new WindowsDeploymentOptionsProvider(); container.Configure(x => { x.Configure(optionsProvider); x.ExportFactory(() => new DownloadProgress()) .As <IDownloadProgress>() .Lifestyle.Singleton(); x.ExportFactory(() => logEvents).As <IObservable <LogEvent> >(); x.Export <WimPickViewModel>().ByInterfaces().As <WimPickViewModel>().Lifestyle.Singleton(); x.Export <DualBootViewModel>().ByInterfaces().As <DualBootViewModel>().Lifestyle.Singleton(); x.Export <AdvancedViewModel>().ByInterfaces().As <AdvancedViewModel>().Lifestyle.Singleton(); x.Export <DeploymentViewModel>().ByInterfaces().As <DeploymentViewModel>().Lifestyle.Singleton(); x.Export <UIServices>(); x.Export <Dialog>().ByInterfaces(); x.Export <OpenFilePicker>().As <IOpenFilePicker>(); x.Export <SaveFilePicker>().As <ISaveFilePicker>(); x.Export <SettingsService>().As <ISettingsService>(); x.Export <SaveFilePicker>().As <ISaveFilePicker>(); x.Export <ViewService>().As <IViewService>(); x.ExportFactory(() => DialogCoordinator.Instance).As <IDialogCoordinator>(); }); return(container); }
public Locator() { container = new DependencyInjectionContainer(); IObservable <LogEvent> logEvents = null; IViewService viewService = new ViewService(); viewService.Register("MarkdownViewer", typeof(MarkdownViewerWindow)); Log.Logger = new LoggerConfiguration() .WriteTo.RollingFile(@"Logs\Log-{Date}.txt") .WriteTo.Observers(x => logEvents = x) .MinimumLevel.Verbose() .CreateLogger(); var optionsProvider = new WindowsDeploymentOptionsProvider(); container.Configure(x => { x.Configure(optionsProvider); x.Export <WpfMarkdownDisplayer>().As <IMarkdownDisplayer>(); x.ExportFactory(() => new BehaviorSubject <double>(double.NaN)) .As <IObserver <double> >() .As <IObservable <double> >() .Lifestyle.Singleton(); x.ExportFactory(() => logEvents).As <IObservable <LogEvent> >(); x.Export <WimPickViewModel>().ByInterfaces().As <WimPickViewModel>().Lifestyle.Singleton(); x.Export <DualBootViewModel>().ByInterfaces().As <DualBootViewModel>().Lifestyle.Singleton(); x.Export <AdvancedViewModel>().ByInterfaces().As <AdvancedViewModel>().Lifestyle.Singleton(); x.Export <DeploymentViewModel>().ByInterfaces().As <DeploymentViewModel>().Lifestyle.Singleton(); x.Export <UIServices>(); x.ExportFactory(() => viewService).As <IViewService>(); x.Export <DialogService>().As <IDialogService>(); x.Export <FilePicker>().As <IFilePicker>(); x.Export <SettingsService>().As <ISettingsService>(); x.ExportFactory(() => DialogCoordinator.Instance).As <IDialogCoordinator>(); }); }
public static IExportRegistrationBlock Configure(this IExportRegistrationBlock block, WindowsDeploymentOptionsProvider installOptionsProvider) { return(WithCommon(block, installOptionsProvider)); }