using System; using Console.Waterworks.Core.Attributes; using Console.Waterworks.Core; namespace CW_Core_Console { public class ConsoleCommands { #region Demo-Methods // These command-methods are to show how a Console.Waterworks program typically looks. [ListCommand()] [Description("Displays the Help section at run-time")] [Parameters("None")] [Usage("CW_Console> Help")] public static string Help() { CW_Liaison liaison = new CW_Liaison(); return liaison.RequestHelpDocumentation("CW_Core_Console"); } [ListCommand()] [Description("Outputs a message indicating this program is running okay.")] [Parameters("None")] [Usage("CW_Console> Test")] public static string Test() => "Test complete."; [ListCommand()] [Description("Repeats back to the user the string they entered.")] [Parameters(" input")] [Usage("CW_Console> Say \"Hello, World.\"")] public static string Say(string input) => $"{input}"; [ListCommand()] [Description("Displays the date and time at the moment the command is entered")] [Parameters("None")] [Usage("CW_Console> GetDate")] public static string GetDate() => $"{DateTime.Now}"; [ListCommand()] [Description("Takes the two ints and adds them together.")] [Parameters(" int, int2")] [Usage("CW_Console> Add 31 10")] public static string Add(int int1, int int2) => $"{int1} + {int2} = {int1 + int2}"; [ListCommand()] [Description("Terminates the program.")] [Parameters("None")] [Usage("CW_Console> Quit")] public static void Quit() => Environment.Exit(-1); #endregion #region Alias-Methods /* * A NOTE ABOUT ALIAS-METHODS - DELETE AFTER READING * ========================================================= * These methods are shorthand versions of the ones above. * For the most part, this is a hack. * But, it is a useful one. * When new users start using your console program, they need help getting started. * This is why I recommend using descriptive names for your command-methods. * But, when your users become more familiar with the program, they will want terser commands. * They will no longer need their hand holding. This is where these alias-commands come in. */ [ListCommand(false)] // change to true or delete "false" for it to show at run-time. [Description("Alias for \"Test\". See \"Test\" for details.")] [Parameters("None")] [Usage("CW_Console> test")] public static string test() => Test(); [ListCommand(false)] [Description("Alias for \"Say\". See \"Say\" for details.")] [Parameters("None")] [Usage("CW_Console> say \"Hello, World.\"")] public static string say(string input) => Say(input); [ListCommand(false)] [Description("Alias for \"GetDate\". See \"GetDate\" for details.")] [Parameters("None")] [Usage("CW_Console> date")] public static string date() => GetDate(); [ListCommand(false)] [Description("Alias for \"Add\". See \"Add\" for details.")] [Parameters("None")] [Usage("CW_Console> add 24 67")] public static string add(int int1, int int2) => Add(int1, int2); [ListCommand(false)] [Description("Alias for Quit. See Quit for details.")] [Parameters("None")] [Usage("CW_Console> quit")] public static void quit() => Quit(); #endregion #region Test-Methods // The command-methods are for testing purposes only. // You can use them at run-time but they will not appear in the help section. // The template // public static string paramTest(int param1) => $"Param: {param1}"; public static string StringTest(String param1) => $"{param1}"; public static string Int16Test(Int16 param1) => $"{param1}"; public static string Int32Test(Int32 param1) => $"{param1}"; public static string Int64Test(Int64 param1) => $"{param1}"; public static string BooleanTest(Boolean param1) => $"{param1}"; public static string ByteTest(Byte param1) => $"{param1}"; public static string CharTest(Char param1) => $"{param1}"; public static string DateTimeTest(DateTime param1) => $"{param1}"; public static string DecimalTest(Decimal param1) => $"{param1}"; public static string SingleTest(Single param1) => $"{param1}"; public static string UInt16Test(UInt16 param1) => $"{param1}"; public static string UInt32Test(UInt32 param1) => $"{param1}"; public static string UInt64Test(UInt64 param1) => $"{param1}"; #endregion } }