Add version verb with option to check for upgrade Add Search verb to search the library Add export file type inference Add more set-status options Add console progress bar and ETA Add processable option to liberate specific book IDs Scan accounts by nickname or account ID Improve startup performance for halp and on parsing error More useful error messages
36 lines
1.2 KiB
C#
36 lines
1.2 KiB
C#
using CommandLine;
|
|
using DataLayer;
|
|
using FileLiberator;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace LibationCli
|
|
{
|
|
[Verb("liberate", HelpText = "Liberate: book and pdf backups. Default: download and decrypt all un-liberated titles and download pdfs. "
|
|
+ "Optional: use 'pdf' flag to only download pdfs.")]
|
|
public class LiberateOptions : ProcessableOptionsBase
|
|
{
|
|
[Option(shortName: 'p', longName: "pdf", Required = false, Default = false, HelpText = "Flag to only download pdfs")]
|
|
public bool PdfOnly { get; set; }
|
|
|
|
protected override Task ProcessAsync()
|
|
=> PdfOnly
|
|
? RunAsync(CreateProcessable<DownloadPdf>())
|
|
: RunAsync(CreateBackupBook());
|
|
|
|
private static Processable CreateBackupBook()
|
|
{
|
|
var downloadPdf = CreateProcessable<DownloadPdf>();
|
|
|
|
//Chain pdf download on DownloadDecryptBook.Completed
|
|
void onDownloadDecryptBookCompleted(object sender, LibraryBook e)
|
|
{
|
|
// this is fast anyway. run as sync for easy exception catching
|
|
downloadPdf.TryProcessAsync(e).GetAwaiter().GetResult();
|
|
}
|
|
|
|
var downloadDecryptBook = CreateProcessable<DownloadDecryptBook>(onDownloadDecryptBookCompleted);
|
|
return downloadDecryptBook;
|
|
}
|
|
}
|
|
}
|