using Spectre.Console; namespace Recyclarr.Cli.Migration.Steps; public interface IMigrationStep { /// /// Determines the order in which this migration step will run. /// int Order { get; } /// /// A description printed to the user so that they understand the purpose of this migration step, and /// what it does. /// string Description { get; } /// /// One or more strings that individually represent a distinct manual solution that a user can attempt /// when this migration step fails. /// IReadOnlyCollection Remediation { get; } /// /// Determines if this migration step is required. If so, it must be executed before the program may be /// used normally. /// bool Required { get; } /// /// Run logic to determine if this migration step is necessary /// /// /// Return true if this migration step is needed and should be run. False means the migration step is /// not needed and Execute() will not be called. /// bool CheckIfNeeded(); /// /// Execute the logic necessary for this migration step. /// /// /// Use the console to print additional debug diagnostics. If this parameter is null, that means those /// diagnostics should not be printed. /// void Execute(IAnsiConsole? console); }