Skip to content
This repository was archived by the owner on Jan 8, 2022. It is now read-only.

Commit f92d117

Browse files
committed
Console version finished
1 parent d69aa5b commit f92d117

File tree

13 files changed

+37
-130
lines changed

13 files changed

+37
-130
lines changed

Source/Deployer.Raspberry.Console/ConsoleDisplayUpdater.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ private void DisplayProgress(double progress)
1818
{
1919
if (double.IsNaN(progress))
2020
{
21+
System.Console.WriteLine();
2122
return;
2223
}
2324

@@ -37,7 +38,7 @@ private void DisplayProgress(double progress)
3738

3839
public void Dispose()
3940
{
40-
progressUpdater?.Dispose();
41+
progressUpdater?.Dispose();
4142
}
4243
}
4344
}

Source/Deployer.Raspberry.Console/Deployer.Raspberry.Console.csproj

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,6 @@
6868
<Link>Core\gpt.zip</Link>
6969
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
7070
</None>
71-
<None Include="..\deployer.raspberry\core\license.md">
72-
<Link>Core\license.md</Link>
73-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
74-
</None>
7571
<None Include="..\deployer.raspberry\core\tools\etcher-cli\x64\node_modules\drivelist\build\release\drivelist.node">
7672
<Link>Core\Tools\Etcher-Cli\x64\node_modules\drivelist\build\Release\drivelist.node</Link>
7773
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
@@ -166,6 +162,7 @@
166162
<ItemGroup>
167163
<None Include="..\deployer.raspberry\core\tools\etcher-cli\x64\etcher.exe">
168164
<Link>Core\Tools\Etcher-Cli\x64\etcher.exe</Link>
165+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
169166
</None>
170167
</ItemGroup>
171168
<ItemGroup>
@@ -189,6 +186,7 @@
189186
<ItemGroup>
190187
<None Include="..\deployer.raspberry\core\tools\etcher-cli\x86\etcher.exe">
191188
<Link>Core\Tools\Etcher-Cli\x86\etcher.exe</Link>
189+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
192190
</None>
193191
</ItemGroup>
194192
<ItemGroup>

Source/Deployer.Raspberry.Console/Options/NonWindowsDeploymentCmdOptions.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ namespace Deployment.Console.Options
55
[Verb("execute", HelpText = "Executes a script that doesn't deploy Windows")]
66
public class NonWindowsDeploymentCmdOptions
77
{
8+
[Option("disk", Required = true, HelpText = "The disk number of the SD Card to deploy to")]
9+
public int DiskNumber { get; set; }
10+
811
[Option("script", Required = true, HelpText = "Script to execute")]
912
public string Script { get; set; }
1013
}

Source/Deployer.Raspberry.Console/Options/WindowsDeploymentCmdOptions.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ namespace Deployment.Console.Options
55
[Verb("deploy", HelpText = "Executes a Windows deployment script")]
66
public class WindowsDeploymentCmdOptions
77
{
8+
[Option("disk", Required = true, HelpText = "The disk number of the SD Card to deploy to")]
9+
public int DiskNumber { get; set; }
10+
811
[Option("wim", Required = true, HelpText = "Windows Image (.wim) to deploy")]
912
public string WimImage { get; set; }
1013

1114
[Option("index", Default = 1, HelpText = "Index of the image to deploy")]
1215
public int Index { get; set; }
1316

14-
[Option("windows-size", Default = 18, HelpText = "Size reserved for Windows partitions in GB")]
15-
public double ReservedSizeForWindowsInGb { get; set; }
16-
1717
[Option("compact", Default = false, HelpText = "Enable Compact deployment. Slower, but saves phone disk space")]
1818
public bool UseCompact { get; set; }
1919
}

Source/Deployer.Raspberry.Console/Program.cs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using ByteSizeLib;
77
using CommandLine;
88
using Deployer;
9+
using Deployer.FileSystem;
910
using Deployer.Lumia.NetFx;
1011
using Deployer.Raspberry;
1112
using Deployer.Tasks;
@@ -44,8 +45,6 @@ private static async Task Execute(IEnumerable<string> args, Subject<double> subj
4445
{
4546
var optionsProvider = new WindowsDeploymentOptionsProvider();
4647

47-
var deployer = GetDeployer(optionsProvider, subject);
48-
4948
var parserResult = Parser.Default
5049
.ParseArguments<WindowsDeploymentCmdOptions,
5150
NonWindowsDeploymentCmdOptions>(args);
@@ -54,26 +53,31 @@ await parserResult
5453
.MapResult(
5554
(WindowsDeploymentCmdOptions opts) =>
5655
{
56+
var deployer = GetDeployer(optionsProvider, opts.DiskNumber, subject);
5757
optionsProvider.Options = new WindowsDeploymentOptions
5858
{
5959
ImageIndex = opts.Index,
6060
ImagePath = opts.WimImage,
61-
SizeReservedForWindows = ByteSize.FromGigaBytes(opts.ReservedSizeForWindowsInGb),
6261
UseCompact = opts.UseCompact,
6362
};
6463
return deployer.Deploy();
6564
},
66-
(NonWindowsDeploymentCmdOptions opts) => deployer.Deploy(),
65+
(NonWindowsDeploymentCmdOptions opts) =>
66+
{
67+
var deployer = GetDeployer(optionsProvider, opts.DiskNumber, subject);
68+
return deployer.Deploy();
69+
},
6770
HandleErrors);
6871
}
6972

70-
private static IWoaDeployer GetDeployer(WindowsDeploymentOptionsProvider op, Subject<double> progress)
73+
private static IWoaDeployer GetDeployer(WindowsDeploymentOptionsProvider op, int diskNumber, Subject<double> progress)
7174
{
7275
var container = new DependencyInjectionContainer();
7376

7477
container.Configure(x =>
7578
{
7679
x.Configure(op);
80+
x.ExportFactory((ILowLevelApi lla) => new DeviceProvider() { Device = new RaspberryPi(lla, diskNumber)}).As<IDeviceProvider>().Lifestyle.Singleton();
7781
x.Export<ConsoleMarkdownDisplayer>().As<IMarkdownDisplayer>();
7882
x.ExportInstance(progress).As<IObserver<double>>();
7983
});

Source/Deployer.Raspberry.Gui/Deployer.Raspberry.Gui.csproj

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -169,10 +169,6 @@
169169
<Link>Core\gpt.zip</Link>
170170
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
171171
</None>
172-
<None Include="..\Deployer.Raspberry\Core\license.md">
173-
<Link>Core\license.md</Link>
174-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
175-
</None>
176172
<None Include="..\Deployer.Raspberry\Core\Tools\Etcher-Cli\x64\node_modules\drivelist\build\Release\drivelist.node">
177173
<Link>Core\Tools\Etcher-Cli\x64\node_modules\drivelist\build\Release\drivelist.node</Link>
178174
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>

Source/Deployer.Raspberry.Gui/Locator.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ public Locator()
3838
container.Configure(x =>
3939
{
4040
x.Configure(optionsProvider);
41+
x.Export<DeviceProvider>().As<IDeviceProvider>().Lifestyle.Singleton();
4142
x.Export<WpfMarkdownDisplayer>().As<IMarkdownDisplayer>();
4243
x.ExportFactory(() => new BehaviorSubject<double>(double.NaN))
4344
.As<IObserver<double>>()

Source/Deployer.Raspberry.NetFx/ContainerConfigurator.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ where type.GetTypeInfo().ImplementedInterfaces.Contains(typeof(IDeploymentTask))
4545
block.Export<BcdInvokerFactory>().As<IBcdInvokerFactory>();
4646
block.Export<WindowsDeployer>().As<IWindowsDeployer>();
4747
block.Export<GitHubDownloader>().As<IGitHubDownloader>();
48-
block.Export<DeviceProvider>().As<IDeviceProvider>().Lifestyle.Singleton();
4948
block.Export<RaspberryDisklayoutPreparer>().As<IDisklayoutPreparer>();
5049
block.Export<ImageFlasher>().As<IImageFlasher>();
5150
block.Export<DismImageService>().As<IWindowsImageService>();

Source/Deployer.Raspberry/Core/license.md

Lines changed: 0 additions & 43 deletions
This file was deleted.

Source/Deployer.Raspberry/RaspberryPi.cs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System;
1+
using System.Linq;
22
using System.Threading.Tasks;
33
using Deployer.FileSystem;
44
using Serilog;
@@ -7,16 +7,28 @@ namespace Deployer.Raspberry
77
{
88
public class RaspberryPi : Device
99
{
10+
private readonly int diskNumber;
1011
private readonly Disk disk;
1112

13+
public RaspberryPi(ILowLevelApi lowLevelApi, int diskNumber) : base(lowLevelApi)
14+
{
15+
this.diskNumber = diskNumber;
16+
}
17+
1218
public RaspberryPi(ILowLevelApi lowLevelApi, Disk disk) : base(lowLevelApi)
1319
{
1420
this.disk = disk;
1521
}
1622

17-
public override Task<Disk> GetDeviceDisk()
23+
public override async Task<Disk> GetDeviceDisk()
1824
{
19-
return Task.FromResult(disk);
25+
if (disk == null)
26+
{
27+
var disks = await LowLevelApi.GetDisks();
28+
return disks.First(x => x.Number == diskNumber);
29+
}
30+
31+
return disk;
2032
}
2133

2234
public override async Task<Volume> GetBootVolume()

0 commit comments

Comments
 (0)