A simple wrapper to allow CocoaScript to execute NSTask (Process) asynchronously.
Same arguments as Process
[Delegate] Executed when command receives data
[Delegate] Executed when command ends
@import"Debug/MochaJSDelegate.js"COScript.currentCOScript().setShouldKeepAround_(true)functionloadFramework(pluginRoot,pluginName,className){className=className ? `${pluginName}.${className}` : pluginNameif(NSClassFromString(className)==null){letmocha=Mocha.sharedRuntime()returnmocha.loadFrameworkWithName_inDirectory(pluginName,pluginRoot)}else{returntrue}}letresult=loadFramework("./","MochaAsyncTask","AsyncTask")if(result==0)log("Failed to load framework...")letAsyncTask=NSClassFromString("MochaAsyncTask.AsyncTask")lettask=AsyncTask.alloc().init()letdelegate=newMochaJSDelegate()delegate.setHandlerForSelector("onData:",(data)=>{log(data)})delegate.setHandlerForSelector("onEnd",(data)=>{log("ENDED")})task.setDelegate(delegate.getClassInstance())task.execWithLaunchPath_arguments("/usr/bin/curl",["https://google.com"])Make sure you pull its submodules first.
$ git submodule update --init