mirror of
https://github.com/Tyrrrz/CliFx.git
synced 2025-10-25 15:19:17 +00:00
Refactor with C# 12 features
This commit is contained in:
@@ -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>
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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++)
|
||||
{
|
||||
|
||||
@@ -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.");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user