diff --git a/NadekoBot/Modules/Programming/Commands/HaskellRepl.cs b/NadekoBot/Modules/Programming/Commands/HaskellRepl.cs new file mode 100644 index 00000000..567d9b84 --- /dev/null +++ b/NadekoBot/Modules/Programming/Commands/HaskellRepl.cs @@ -0,0 +1,60 @@ +using Discord; +using Discord.Commands; +using NadekoBot.Classes; +using System.Collections.Generic; +using System.Diagnostics; +using System.Threading; +using System.Threading.Tasks; + +/// +/// I have no idea what am i doing +/// +namespace NadekoBot.Modules.Programming.Commands +{ + class HaskellRepl : DiscordCommand + { + Queue> commandQueue = new Queue>(); + + Thread haskellThread; + + public HaskellRepl(DiscordModule module) : base(module) + { + //start haskell interpreter + + haskellThread = new Thread(new ThreadStart(() => + { + Process.Start(new ProcessStartInfo + { + FileName = "stack", //shouldn't use repl, but a Language.Haskell.Interpreter somehow + Arguments = "repl" + }); + + })); + + + Task.Run(() => + { + //read from queue + + //send the command to the process + + //wait 50 ms for execution + + //read everything from the output + + //send to chanenl + }); + + } + + internal override void Init(CommandGroupBuilder cgb) + { + cgb.CreateCommand(Module.Prefix + "hs") + .Description("Executes a haskell express with LAMBDABOT") + .Do(async e => + { + //send a command and a channel to the queue + }); + } + } +} diff --git a/NadekoBot/Modules/Programming/ProgrammingModule.cs b/NadekoBot/Modules/Programming/ProgrammingModule.cs new file mode 100644 index 00000000..feb3c4e2 --- /dev/null +++ b/NadekoBot/Modules/Programming/ProgrammingModule.cs @@ -0,0 +1,26 @@ +using Discord.Modules; +using NadekoBot.Extensions; +using NadekoBot.Modules.Permissions.Classes; +using NadekoBot.Modules.Programming.Commands; + +namespace NadekoBot.Modules.Programming +{ + class ProgrammingModule : DiscordModule + { + public override string Prefix => NadekoBot.Config.CommandPrefixes.Programming; + + public ProgrammingModule() + { + commands.Add(new HaskellRepl(this)); + } + + public override void Install(ModuleManager manager) + { + manager.CreateCommands("", cgb => + { + cgb.AddCheck(PermissionChecker.Instance); + commands.ForEach(c => c.Init(cgb)); + }); + } + } +}