using static InnovEnergy.FossilTui.FossilAction; namespace InnovEnergy.FossilTui; public record FossilState { public String Name { get; } public ConsoleColor Color { get; } public IReadOnlyList AvailableActions { get; } public static FossilState Parse(String state) => States.Single(s => s.Name == state); public static readonly FossilState Missing = new("MISSING" , ConsoleColor.Red, new[] { Ignore, Revert }); public static readonly FossilState Deleted = new("DELETED" , ConsoleColor.DarkRed, new[] { Ignore, Commit, Revert }); public static readonly FossilState Added = new("ADDED" , ConsoleColor.DarkGreen, new[] { Ignore, Commit, Delete }); public static readonly FossilState Edited = new("EDITED" , ConsoleColor.Yellow, new[] { Ignore, Commit, Delete }); // Revert will bring it back to not edited public static readonly FossilState Extra = new("EXTRA" , ConsoleColor.Green, new[] { Ignore, Add, Delete}); //public static readonly FossilState Unchanged = new("UNCHANGED", ConsoleColor.DarkGray, new[] { Ignore, Commit, Revert }); private static readonly IReadOnlyList States = new[] { Missing, Deleted, Added, Edited, Extra, // Unchanged, }; private FossilState(String name, ConsoleColor color, IReadOnlyList availableActions) { Name = name; Color = color; AvailableActions = availableActions; } public override String ToString() => Name; }