|
|
|
@ -1,15 +1,16 @@
|
|
|
|
|
using Console.Waterworks; |
|
|
|
|
using Console.Waterworks.Attributes; |
|
|
|
|
using Microsoft.FSharp.Control; |
|
|
|
|
using Microsoft.FSharp.Core; |
|
|
|
|
using System; |
|
|
|
|
using static WetPancake.Pancake; |
|
|
|
|
using static System.Environment; |
|
|
|
|
using System.Diagnostics; |
|
|
|
|
using System.IO; |
|
|
|
|
using System.Threading.Tasks; |
|
|
|
|
using Microsoft.FSharp.Control; |
|
|
|
|
using Microsoft.FSharp.Core; |
|
|
|
|
using System.Threading; |
|
|
|
|
using System.IO; |
|
|
|
|
using System.Windows.Forms; |
|
|
|
|
using static System.Environment; |
|
|
|
|
using static System.Console; |
|
|
|
|
using static WetPancake.Pancake; |
|
|
|
|
|
|
|
|
|
namespace WetPancakeCLI |
|
|
|
|
{ |
|
|
|
@ -17,36 +18,38 @@ namespace WetPancakeCLI
|
|
|
|
|
{ |
|
|
|
|
// Pass these in when running an FSharpAsync task. |
|
|
|
|
// Examples are within the command-methods. |
|
|
|
|
static FSharpOption<TaskCreationOptions> _taskCreationOptions = FSharpOption<TaskCreationOptions>.None; |
|
|
|
|
static FSharpOption<CancellationToken> _cancellationToken = FSharpOption<CancellationToken>.None; |
|
|
|
|
static readonly FSharpOption<TaskCreationOptions> _taskCreationOptions = FSharpOption<TaskCreationOptions>.None; |
|
|
|
|
static readonly FSharpOption<CancellationToken> _cancellationToken = FSharpOption<CancellationToken>.None; |
|
|
|
|
|
|
|
|
|
static void CopyToClipboard(string text) => Clipboard.SetText(text); |
|
|
|
|
|
|
|
|
|
#region Console Utilities |
|
|
|
|
[ListCommand] |
|
|
|
|
[Description("Prints a test message to the console.")] |
|
|
|
|
[Parameters("None")] |
|
|
|
|
[Description("Prints a test message to the console.")] |
|
|
|
|
[Usage("> Test")] |
|
|
|
|
public static string Test() => "SUCCESS: Console.Waterworks is wired into Wet Pancake CLI."; |
|
|
|
|
|
|
|
|
|
[ListCommand] |
|
|
|
|
[Description("Lists out the commands this program offers.")] |
|
|
|
|
[Parameters("None")] |
|
|
|
|
[Description("Lists out the commands this program offers.")] |
|
|
|
|
[Usage("> Help")] |
|
|
|
|
public static string Help() => new CW_Liaison().RequestHelpDocumentation("WetPancakeCLI"); |
|
|
|
|
|
|
|
|
|
[ListCommand] |
|
|
|
|
[Description("Exits out of the program.")] |
|
|
|
|
[Parameters("None")] |
|
|
|
|
[Description("Exits out of the program.")] |
|
|
|
|
[Usage("> Exit")] |
|
|
|
|
public static void Exit() => Environment.Exit(ExitCode); |
|
|
|
|
#endregion |
|
|
|
|
|
|
|
|
|
#region Wet Pancake Utilities |
|
|
|
|
[ListCommand] |
|
|
|
|
[Parameters("sentences: int, text: string")] |
|
|
|
|
[Description( |
|
|
|
|
"Checks to see if the string matches the desired sentence count and removes any over that limit.\n" + |
|
|
|
|
"If the string has less sentences than the number requested, it will not change.\n" + |
|
|
|
|
"Sentences must be greater than 0 and text must contain at least 1 \".\" \"?\" \"!\"")] |
|
|
|
|
[Parameters("sentences: int, text: string")] |
|
|
|
|
[Usage("> CleanText 1 \"This is a test sentence. And, this one needs to be removed.\"")] |
|
|
|
|
public static string CleanText(int sentences, string text) |
|
|
|
|
{ |
|
|
|
@ -65,8 +68,8 @@ namespace WetPancakeCLI
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[ListCommand] |
|
|
|
|
[Description("Returns a list of all the available .txt files built-in to Wet Pancake.")] |
|
|
|
|
[Parameters("None")] |
|
|
|
|
[Description("Returns a list of all the available .txt files built-in to Wet Pancake.")] |
|
|
|
|
[Usage("> RequestAllTemplateFiles")] |
|
|
|
|
public static string RequestAllTemplateFiles() |
|
|
|
|
{ |
|
|
|
@ -90,10 +93,10 @@ namespace WetPancakeCLI
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[ListCommand] |
|
|
|
|
[Parameters("filePath: string")] |
|
|
|
|
[Description( |
|
|
|
|
"Checks the text in the specified .txt file to see if it is compatible with this program.\n" + |
|
|
|
|
"For a file to be compatible, it must be a .txt file and contain at least one '.', '!' or '?'.")] |
|
|
|
|
[Parameters("filePath: string")] |
|
|
|
|
[Usage("> ValidateFile \"C:/your-file.txt\"")] |
|
|
|
|
public static string ValidateFile(string filePath) |
|
|
|
|
{ |
|
|
|
@ -121,15 +124,21 @@ namespace WetPancakeCLI
|
|
|
|
|
|
|
|
|
|
#region Text Generation |
|
|
|
|
[ListCommand] |
|
|
|
|
[Parameters("gibberish-level: int, sentences: int, copy-to-clipboard: bool")] |
|
|
|
|
[Description( |
|
|
|
|
"Generates text using the gibberish-level and number of sentences specified by the user.\n" + |
|
|
|
|
"The result goes through an extra \"cleaning\" process to remove any artefact sentences.\n" + |
|
|
|
|
"Use this if you cannot tolerate the odd extra sentence.\n" + |
|
|
|
|
"With that said, it does mean it is slower than its GenerateText counterpart.\n" + |
|
|
|
|
"Gibberish-level must be between 2 and 20.")] |
|
|
|
|
[Parameters("gibberish-level: int, sentences: int")] |
|
|
|
|
[Usage("> GenerateCleanText 5 10")] |
|
|
|
|
public static string GenerateCleanText(int gibberishLevel, int sentences) |
|
|
|
|
"Gibberish-level must be between 2 and 20.\n" + |
|
|
|
|
"Sentences must be greater than 0.\n" + |
|
|
|
|
"Pass in \"true\" to copy the result straight to the clipboard.\n" + |
|
|
|
|
"Pass in \"false\" or leave blank to not copy the result.")] |
|
|
|
|
[Usage("\n" + // Added because Console.Waterworks' rendering makes it look weird. |
|
|
|
|
"> GenerateCleanText 5 10 true\n" + |
|
|
|
|
"> GenerateCleanText 3 7 false \n" + |
|
|
|
|
"> GenerateCleanText 9 12")] |
|
|
|
|
public static string GenerateCleanText(int gibberishLevel, int sentences, bool copyToClipboard = false) |
|
|
|
|
{ |
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
@ -139,8 +148,11 @@ namespace WetPancakeCLI
|
|
|
|
|
if (sentences < 1) |
|
|
|
|
throw new ArgumentException |
|
|
|
|
("Invalid argument. Must be greater than 0.", "sentences"); |
|
|
|
|
return FSharpAsync.StartAsTask |
|
|
|
|
(RequestCleanTextAsync(gibberishLevel, sentences), _taskCreationOptions, _cancellationToken).Result; |
|
|
|
|
var result = FSharpAsync.StartAsTask( |
|
|
|
|
RequestCleanTextAsync(gibberishLevel, sentences), _taskCreationOptions, _cancellationToken) |
|
|
|
|
.Result; |
|
|
|
|
if (copyToClipboard == true) CopyToClipboard(result); |
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
catch (Exception e) |
|
|
|
|
{ |
|
|
|
@ -150,16 +162,23 @@ namespace WetPancakeCLI
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[ListCommand] |
|
|
|
|
[Description( |
|
|
|
|
"Loads the specified .txt file and generates text based on it," + |
|
|
|
|
[Parameters("gibberish-level: int, sentences: int, file path: string, copy-to-clipboard: bool")] |
|
|
|
|
[Description("\n" + |
|
|
|
|
"Loads the specified .txt file and generates text based on it,\n" + |
|
|
|
|
"using the gibberish-level and number of sentences specified by the user.\n" + |
|
|
|
|
"The result goes through an extra \"cleaning\" process to remove any artefact sentences.\n" + |
|
|
|
|
"Use this if you cannot tolerate the odd extra sentence.\n" + |
|
|
|
|
"With that said, it does mean it is slower than its GenerateTextFromFile counterpart.\n" + |
|
|
|
|
"Gibberish-level must be between 2 and 20.")] |
|
|
|
|
[Parameters("gibberish-level: int, sentences: int, file path: string")] |
|
|
|
|
[Usage("> GenerateCleanTextFromFile 3 6 C:/yourfile.txt")] |
|
|
|
|
public static string GenerateCleanTextFromFile(int gibberishLevel, int sentences, string filePath) |
|
|
|
|
"Gibberish-level must be between 2 and 20.\n" + |
|
|
|
|
"Sentences must be greater than 0.\n" + |
|
|
|
|
"Pass in \"true\" to copy the result straight to the clipboard.\n" + |
|
|
|
|
"Pass in \"false\" or leave blank to not copy the result.")] |
|
|
|
|
[Usage("\n" + // Added because Console.Waterworks' rendering makes it look weird. |
|
|
|
|
"> GenerateCleanTextFromFile 3 6 C:/yourfile.txt true \n" + |
|
|
|
|
"> GenerateCleanTextFromFile 5 9 C:/yourfile.txt false\n" + |
|
|
|
|
"> GenerateCleanTextFromFile 7 15 C:/ yourfile.txt")] |
|
|
|
|
public static string GenerateCleanTextFromFile( |
|
|
|
|
int gibberishLevel, int sentences, string filePath, bool copyToClipboard = false) |
|
|
|
|
{ |
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
@ -173,8 +192,12 @@ namespace WetPancakeCLI
|
|
|
|
|
if (string.Equals(extension, ".txt") != true) |
|
|
|
|
throw new FileLoadException |
|
|
|
|
("The file entered is not a plain text (.txt) file.", filePath); |
|
|
|
|
return FSharpAsync.StartAsTask |
|
|
|
|
(RequestCleanTextFromFileAsync(gibberishLevel, sentences, filePath), _taskCreationOptions, _cancellationToken).Result; |
|
|
|
|
var result = FSharpAsync.StartAsTask( |
|
|
|
|
RequestCleanTextFromFileAsync(gibberishLevel, sentences, filePath), |
|
|
|
|
_taskCreationOptions, _cancellationToken) |
|
|
|
|
.Result; |
|
|
|
|
if (copyToClipboard == true) CopyToClipboard(result); |
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
catch (Exception e) |
|
|
|
|
{ |
|
|
|
@ -184,15 +207,23 @@ namespace WetPancakeCLI
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[ListCommand] |
|
|
|
|
[Description("Generates random text, the number of sentences generated is randomly determined.")] |
|
|
|
|
[Parameters("None")] |
|
|
|
|
[Usage("> GenerateRandomText")] |
|
|
|
|
public static string GenerateRandomText() |
|
|
|
|
[Parameters("copy-to-clipboard: bool")] |
|
|
|
|
[Description( |
|
|
|
|
"Generates random text, the number of sentences generated is randomly determined.\n" + |
|
|
|
|
"Pass in true to copy result straight to clipboard.\n" + |
|
|
|
|
"Pass in \"false\" or leave blank to not copy the result.")] |
|
|
|
|
[Usage("\n" + // Added because Console.Waterworks' rendering makes it look weird. |
|
|
|
|
"> GenerateRandomText true\n" + |
|
|
|
|
"> GenerateRandomText false\n" + |
|
|
|
|
"> GenerateRandomText")] |
|
|
|
|
public static string GenerateRandomText(bool copyToClipboard = false) |
|
|
|
|
{ |
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
|
return FSharpAsync.StartAsTask |
|
|
|
|
var result = FSharpAsync.StartAsTask |
|
|
|
|
(RequestRandomTextAsync(), _taskCreationOptions, _cancellationToken).Result; |
|
|
|
|
if (copyToClipboard == true) CopyToClipboard(result); |
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
catch (Exception e) |
|
|
|
|
{ |
|
|
|
@ -202,15 +233,21 @@ namespace WetPancakeCLI
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[ListCommand] |
|
|
|
|
[Parameters("gibberish-level: int, sentences: int, copy-to-clipboard: bool")] |
|
|
|
|
[Description( |
|
|
|
|
"Generates text using the gibberish-level and number of sentences specified by the user.\n" + |
|
|
|
|
"This command does not run the result through the extra \"cleaning\" process like GenerateCleanText.\n" + |
|
|
|
|
"This means this command is faster but it might produce an extra sentence on the odd occasion.\n" + |
|
|
|
|
"Use this if you prefer speed over accuracy.\n" + |
|
|
|
|
"Gibberish-level must be between 2 and 20.")] |
|
|
|
|
[Parameters("gibberish-level: int, sentences: int")] |
|
|
|
|
[Usage("> GenerateText 5 10")] |
|
|
|
|
public static string GenerateText(int gibberishLevel, int sentences) |
|
|
|
|
"Gibberish-level must be between 2 and 20.\n" + |
|
|
|
|
"Sentences must be greater than 0.\n" + |
|
|
|
|
"Pass in \"true\" to copy the result straight to the clipboard.\n" + |
|
|
|
|
"Pass in \"false\" or leave blank to not copy the result.")] |
|
|
|
|
[Usage("\n" + // Added because Console.Waterworks' rendering makes it look weird. |
|
|
|
|
"> GenerateText 5 10 true\n" + |
|
|
|
|
"> GenerateText 7 15 false\n" + |
|
|
|
|
"> GenerateText 10 5")] |
|
|
|
|
public static string GenerateText(int gibberishLevel, int sentences, bool copyToClipboard = false) |
|
|
|
|
{ |
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
@ -220,8 +257,10 @@ namespace WetPancakeCLI
|
|
|
|
|
if (sentences < 1) |
|
|
|
|
throw new ArgumentException |
|
|
|
|
("Invalid argument. Must be greater than 0.", "sentences"); |
|
|
|
|
return FSharpAsync.StartAsTask |
|
|
|
|
var result = FSharpAsync.StartAsTask |
|
|
|
|
(RequestTextAsync(gibberishLevel, sentences), _taskCreationOptions, _cancellationToken).Result; |
|
|
|
|
if (copyToClipboard == true) CopyToClipboard(result); |
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
catch (Exception e) |
|
|
|
|
{ |
|
|
|
@ -231,15 +270,22 @@ namespace WetPancakeCLI
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[ListCommand] |
|
|
|
|
[Parameters("gibberish-level: int, sentences: int, file path: string")] |
|
|
|
|
[Description( |
|
|
|
|
"Loads the specified .txt file and generates text based on it using the gibberish-level and number of sentencesspecifiedby the user.\n" + |
|
|
|
|
"Loads the specified .txt file and generates text based on it,\n" + |
|
|
|
|
"using the gibberish-level and number of sentencesspecifiedby the user.\n" + |
|
|
|
|
"This command does not run the result through the extra \"cleaning\" process like GenerateCleanTextFromFile.\n" + |
|
|
|
|
"This means this command is faster but it might produce an extra sentence on the odd occasion.\n" + |
|
|
|
|
"Use this if you prefer speed over accuracy.\n" + |
|
|
|
|
"Gibberish-level must be between 2 and 20.")] |
|
|
|
|
[Parameters("gibberish-level: int, sentences: int, file path: string")] |
|
|
|
|
[Usage("> GenerateTextFromFile 3 6 C:/yourfile.txt")] |
|
|
|
|
public static string GenerateTextFromFile(int gibberishLevel, int sentences, string filePath) |
|
|
|
|
"Gibberish-level must be between 2 and 20.\n" + |
|
|
|
|
"Sentences must be greater than 0.\n" + |
|
|
|
|
"Pass in \"true\" to copy the result straight to the clipboard.\n" + |
|
|
|
|
"Pass in \"false\" or leave blank to not copy the result.")] |
|
|
|
|
[Usage("\n" + // Added because Console.Waterworks' rendering makes it look weird. |
|
|
|
|
"> GenerateTextFromFile 3 6 C:/yourfile.txt true\n" + |
|
|
|
|
"> GenerateTextFromFile 6 13 C:/yourfile.txt false \n" + |
|
|
|
|
"> GenerateTextFromFile 12 8 C:/yourfile.txt")] |
|
|
|
|
public static string GenerateTextFromFile(int gibberishLevel, int sentences, string filePath, bool copyToClipboard = false) |
|
|
|
|
{ |
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
@ -258,8 +304,12 @@ namespace WetPancakeCLI
|
|
|
|
|
_taskCreationOptions, _cancellationToken).Result; |
|
|
|
|
if (fileIsValid == false) |
|
|
|
|
throw new Exception("The .txt does not contain a vaild end token ('.', '!' or '?')."); |
|
|
|
|
return FSharpAsync.StartAsTask |
|
|
|
|
(RequestTextFromFileAsync(gibberishLevel, sentences, filePath), _taskCreationOptions, _cancellationToken).Result; |
|
|
|
|
var result = FSharpAsync.StartAsTask( |
|
|
|
|
RequestTextFromFileAsync(gibberishLevel, sentences, filePath), |
|
|
|
|
_taskCreationOptions, _cancellationToken) |
|
|
|
|
.Result; |
|
|
|
|
if (copyToClipboard == true) CopyToClipboard(result); |
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
catch (Exception e) |
|
|
|
|
{ |
|
|
|
|