56 lines
1.5 KiB
C#
56 lines
1.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using ApplicationServices;
|
|
using AudibleUtilities;
|
|
using CommandLine;
|
|
|
|
namespace LibationCli
|
|
{
|
|
[Verb("export", HelpText = "Must include path and flag for export file type: --xlsx , --csv , --json]")]
|
|
public class ExportOptions : OptionsBase
|
|
{
|
|
[Option(shortName: 'p', longName: "path", Required = true, HelpText = "Path to save file to.")]
|
|
public string FilePath { get; set; }
|
|
|
|
#region explanation of mutually exclusive options
|
|
/*
|
|
giving these SetName values makes them mutually exclusive. they are in different sets. eg:
|
|
class Options
|
|
{
|
|
[Option("username", SetName = "auth")]
|
|
public string Username { get; set; }
|
|
[Option("password", SetName = "auth")]
|
|
public string Password { get; set; }
|
|
|
|
[Option("guestaccess", SetName = "guest")]
|
|
public bool GuestAccess { get; set; }
|
|
}
|
|
*/
|
|
#endregion
|
|
[Option(shortName: 'x', longName: "xlsx", SetName = "xlsx", Required = true)]
|
|
public bool xlsx { get; set; }
|
|
|
|
[Option(shortName: 'c', longName: "csv", SetName = "csv", Required = true)]
|
|
public bool csv { get; set; }
|
|
|
|
[Option(shortName: 'j', longName: "json", SetName = "json", Required = true)]
|
|
public bool json { get; set; }
|
|
|
|
protected override Task ProcessAsync()
|
|
{
|
|
if (xlsx)
|
|
LibraryExporter.ToXlsx(FilePath);
|
|
if (csv)
|
|
LibraryExporter.ToCsv(FilePath);
|
|
if (json)
|
|
LibraryExporter.ToJson(FilePath);
|
|
|
|
Console.WriteLine($"Library exported to: {FilePath}");
|
|
|
|
return Task.CompletedTask;
|
|
}
|
|
}
|
|
}
|