Allow listing devices from remote.

This commit is contained in:
2019-10-12 23:12:39 +01:00
parent 58b2b84f0a
commit 580b8e0981
3 changed files with 60 additions and 27 deletions

View File

@@ -40,9 +40,9 @@ using Mono.Options;
namespace DiscImageChef.Commands
{
class ListDevicesCommand : Command
internal class ListDevicesCommand : Command
{
bool showHelp;
private bool showHelp;
public ListDevicesCommand() : base("list-devices", "Lists all connected devices.")
{
@@ -51,7 +51,7 @@ namespace DiscImageChef.Commands
$"{MainClass.AssemblyTitle} {MainClass.AssemblyVersion?.InformationalVersion}",
$"{MainClass.AssemblyCopyright}",
"",
$"usage: DiscImageChef {Name}",
$"usage: DiscImageChef {Name} [dic-remote-host]",
"",
Help,
{"help|h|?", "Show this message and exit.", v => showHelp = v != null}
@@ -60,46 +60,53 @@ namespace DiscImageChef.Commands
public override int Invoke(IEnumerable<string> arguments)
{
List<string> extra = Options.Parse(arguments);
var extra = Options.Parse(arguments);
if(showHelp)
if (showHelp)
{
Options.WriteOptionDescriptions(CommandSet.Out);
return (int)ErrorNumber.HelpRequested;
return (int) ErrorNumber.HelpRequested;
}
MainClass.PrintCopyright();
if(MainClass.Debug) DicConsole.DebugWriteLineEvent += System.Console.Error.WriteLine;
if(MainClass.Verbose) DicConsole.VerboseWriteLineEvent += System.Console.WriteLine;
if (MainClass.Debug) DicConsole.DebugWriteLineEvent += System.Console.Error.WriteLine;
if (MainClass.Verbose) DicConsole.VerboseWriteLineEvent += System.Console.WriteLine;
Statistics.AddCommand("list-devices");
if(extra.Count > 0)
string dicRemote = null;
if (extra.Count > 1)
{
DicConsole.ErrorWriteLine("Too many arguments.");
return (int)ErrorNumber.UnexpectedArgumentCount;
return (int) ErrorNumber.UnexpectedArgumentCount;
}
DicConsole.DebugWriteLine("List-Devices command", "--debug={0}", MainClass.Debug);
if (extra.Count == 1) dicRemote = extra[0];
DicConsole.DebugWriteLine("List-Devices command", "--debug={0}", MainClass.Debug);
DicConsole.DebugWriteLine("List-Devices command", "--verbose={0}", MainClass.Verbose);
DeviceInfo[] devices = Device.ListDevices();
var devices = Device.ListDevices(dicRemote);
if(devices == null || devices.Length == 0) DicConsole.WriteLine("No known devices attached.");
if (devices == null || devices.Length == 0)
{
DicConsole.WriteLine("No known devices attached.");
}
else
{
devices = devices.OrderBy(d => d.Path).ToArray();
DicConsole.WriteLine("{0,-22}|{1,-16}|{2,-24}|{3,-24}|{4,-10}|{5,-10}", "Path", "Vendor", "Model",
"Serial", "Bus", "Supported?");
"Serial", "Bus", "Supported?");
DicConsole.WriteLine("{0,-22}+{1,-16}+{2,-24}+{3,-24}+{4,-10}+{5,-10}", "----------------------",
"----------------", "------------------------", "------------------------",
"----------", "----------");
foreach(DeviceInfo dev in devices)
"----------------", "------------------------", "------------------------",
"----------", "----------");
foreach (var dev in devices)
DicConsole.WriteLine("{0,-22}|{1,-16}|{2,-24}|{3,-24}|{4,-10}|{5,-10}", dev.Path, dev.Vendor,
dev.Model, dev.Serial, dev.Bus, dev.Supported);
dev.Model, dev.Serial, dev.Bus, dev.Supported);
}
return (int)ErrorNumber.NoError;
return (int) ErrorNumber.NoError;
}
}
}