Refactor with C# 12 features

This commit is contained in:
Tyrrrz
2023-12-10 22:51:57 +02:00
parent 5854f36756
commit 490398f773
68 changed files with 371 additions and 622 deletions

View File

@@ -7,7 +7,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="CSharpier.MsBuild" Version="0.26.1" PrivateAssets="all" />
<PackageReference Include="CSharpier.MsBuild" Version="0.26.5" PrivateAssets="all" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
</ItemGroup>

View File

@@ -9,10 +9,8 @@ using CliFx.Infrastructure;
namespace CliFx.Demo.Commands;
[Command("book add", Description = "Adds a book to the library.")]
public partial class BookAddCommand : ICommand
public partial class BookAddCommand(LibraryProvider libraryProvider) : ICommand
{
private readonly LibraryProvider _libraryProvider;
[CommandParameter(0, Name = "title", Description = "Book title.")]
public required string Title { get; init; }
@@ -25,18 +23,13 @@ public partial class BookAddCommand : ICommand
[CommandOption("isbn", 'n', Description = "Book ISBN.")]
public Isbn Isbn { get; init; } = CreateRandomIsbn();
public BookAddCommand(LibraryProvider libraryProvider)
{
_libraryProvider = libraryProvider;
}
public ValueTask ExecuteAsync(IConsole console)
{
if (_libraryProvider.TryGetBook(Title) is not null)
if (libraryProvider.TryGetBook(Title) is not null)
throw new CommandException("Book already exists.", 10);
var book = new Book(Title, Author, Published, Isbn);
_libraryProvider.AddBook(book);
libraryProvider.AddBook(book);
console.Output.WriteLine("Book added.");
console.Output.WriteBook(book);

View File

@@ -8,21 +8,14 @@ using CliFx.Infrastructure;
namespace CliFx.Demo.Commands;
[Command("book", Description = "Retrieves a book from the library.")]
public class BookCommand : ICommand
public class BookCommand(LibraryProvider libraryProvider) : ICommand
{
private readonly LibraryProvider _libraryProvider;
[CommandParameter(0, Name = "title", Description = "Title of the book to retrieve.")]
public required string Title { get; init; }
public BookCommand(LibraryProvider libraryProvider)
{
_libraryProvider = libraryProvider;
}
public ValueTask ExecuteAsync(IConsole console)
{
var book = _libraryProvider.TryGetBook(Title);
var book = libraryProvider.TryGetBook(Title);
if (book is null)
throw new CommandException("Book not found.", 10);

View File

@@ -7,18 +7,11 @@ using CliFx.Infrastructure;
namespace CliFx.Demo.Commands;
[Command("book list", Description = "Lists all books in the library.")]
public class BookListCommand : ICommand
public class BookListCommand(LibraryProvider libraryProvider) : ICommand
{
private readonly LibraryProvider _libraryProvider;
public BookListCommand(LibraryProvider libraryProvider)
{
_libraryProvider = libraryProvider;
}
public ValueTask ExecuteAsync(IConsole console)
{
var library = _libraryProvider.GetLibrary();
var library = libraryProvider.GetLibrary();
for (var i = 0; i < library.Books.Count; i++)
{

View File

@@ -7,26 +7,19 @@ using CliFx.Infrastructure;
namespace CliFx.Demo.Commands;
[Command("book remove", Description = "Removes a book from the library.")]
public class BookRemoveCommand : ICommand
public class BookRemoveCommand(LibraryProvider libraryProvider) : ICommand
{
private readonly LibraryProvider _libraryProvider;
[CommandParameter(0, Name = "title", Description = "Title of the book to remove.")]
public required string Title { get; init; }
public BookRemoveCommand(LibraryProvider libraryProvider)
{
_libraryProvider = libraryProvider;
}
public ValueTask ExecuteAsync(IConsole console)
{
var book = _libraryProvider.TryGetBook(Title);
var book = libraryProvider.TryGetBook(Title);
if (book is null)
throw new CommandException("Book not found.", 10);
_libraryProvider.RemoveBook(book);
libraryProvider.RemoveBook(book);
console.Output.WriteLine($"Book {Title} removed.");