{"action":"opened","issue":{"url":"https://api.github.com/repos/exbuddha/pond/issues/69","repository_url":"https://api.github.com/repos/exbuddha/pond","labels_url":"https://api.github.com/repos/exbuddha/pond/issues/69/labels{/name}","comments_url":"https://api.github.com/repos/exbuddha/pond/issues/69/comments","events_url":"https://api.github.com/repos/exbuddha/pond/issues/69/events","html_url":"https://github.com/exbuddha/pond/issues/69","id":313402207,"number":69,"title":"Backlog","user":{"login":"exbuddha","id":6069517,"avatar_url":"https://avatars3.githubusercontent.com/u/6069517?v=4","gravatar_id":"","url":"https://api.github.com/users/exbuddha","html_url":"https://github.com/exbuddha","followers_url":"https://api.github.com/users/exbuddha/followers","following_url":"https://api.github.com/users/exbuddha/following{/other_user}","gists_url":"https://api.github.com/users/exbuddha/gists{/gist_id}","starred_url":"https://api.github.com/users/exbuddha/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/exbuddha/subscriptions","organizations_url":"https://api.github.com/users/exbuddha/orgs","repos_url":"https://api.github.com/users/exbuddha/repos","events_url":"https://api.github.com/users/exbuddha/events{/privacy}","received_events_url":"https://api.github.com/users/exbuddha/received_events","type":"User","site_admin":false},"labels":[{"id":748522696,"url":"https://api.github.com/repos/exbuddha/pond/labels/help%20wanted","name":"help wanted","color":"33aa3f","default":true}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2018-04-11T16:39:07Z","updated_at":"2018-04-11T16:39:07Z","closed_at":null,"author_association":"OWNER","body":"- make `search()` error-proof\r\n\r\n- complete `print()` options\r\n\r\n- design and implement `buffered()` for `print()`\r\n  buffered cmds delay all prints to the next unbuffered print\r\n\r\n    `buffered [name] print ...`\r\n    `print --flush [name]`\r\n\r\n- improvement ideas for prefix functions:\r\n  * `silent()` can take options `-1` and/or `-2` to only silent those specific consoles\r\n\r\n- option B for parsing json objects\r\n  use perl to generate a bash term that will be evaluated to create json obj\r\n  requires translating `json()` to perl and outputting the entire object array as bash-interpretable code\r\n  might end up not working with high probability\r\n\r\n- next iteration:\r\n\r\n    __lib/plugins/config__\r\n\r\n    support for managing config files in JSON format\r\n\r\n    adds a set of traverse functions for insert, remove, and replace\r\n    possibly defines some helper functions for regular operations\r\n\r\n    .config file includes sections for environment, run engine, libs, and scripts\r\n    it has binding section which defines defaults such as webdriver executable download links\r\n    supported scripts can have their own config section (install, scheduler, debugger)\r\n\r\n\r\n    __scripts/install__\r\n\r\n    support for all installations after code is cloned\r\n    sets config values\r\n\r\n      ./run install       #for bootstrap and repair, -i for interactive mode\r\n                          # ./run --install is a good choice too\r\n\r\n      ./run install chrome|firefox|ie|safari|phantom [version]\r\n\r\n    __lib/wait__\r\n\r\n      retry() - retries up to count until 0 is returned\r\n                if fail codes are passed, until a different code is returned\r\n                if retry fails after specified count, 5 is returned\r\n\r\n      retry $count [fail codes] cmd [args]\r\n\r\n    __lib/plugins/node__\r\n\r\n    design a simple and solid way to evaluate javascript code in node.js server\r\n\r\n    use simple API to check status of server, receive metadata, and make post calls to evaluate code\r\n\r\n    make sure to code so that simultaneous processes won't start two node servers\r\n\r\n    requires finding the bottle-neck in OS process mechanism so it can work as locking mechanism for attempting to start a process only once across multiple threads\r\n\r\n    make sure all server `eval()` actions have a hard upper limit runtime\r\n\r\n    provide a single function for evaluating javascript code and returning a result json obj or error\r\n\r\n        js \"$cmd\"\r\n        js --file cmd.js    # dynamic content replacement like call()\r\n                            # returns 0 for success\r\n                            #         6 for meaningful fail\r\n                            #         7 for engine failure (non-meaningful fail)\r\n\r\n        js() internally uses call() to communicate with the running node server\r\n        request data of this API call looks like:\r\n\r\n        {\r\n          \"code\": \"javascript snippet\"\r\n        }\r\n\r\n        response data (if any) looks like:\r\n\r\n        {\r\n          \"return\": $return,\r\n          \"out\": [],\r\n          \"err\": [],\r\n          \"data\": ...\r\n        }\r\n\r\n        where $.return (optional) represents the equivalent of bash function return code which js() returns\r\n              $.out (optional) represents OUT[@] in framework which js() sets (array of strings)\r\n              $.err (optional) represents ERR[@] in framework which js() sets (array of strings)\r\n              $.data (optional) represents the function's return data\r\n              missing $.data represents javascript undefined\r\n\r\n    __lib/plugins/selenium__\r\n\r\n    design an interface to port selenium full functionality to shell environment\r\n    define functions to cover the entire range of functionality\r\n\r\n    __lib/proc__\r\n\r\n    support for forks, processes, and multithreading\r\n\r\n    __scripts/scheduler__\r\n\r\n    multi-threaded engine with sophisticated communication pipes between threads\r\n    ability to schedule in the future\r\n\r\n      ./run scheduler   # starts a scheduler process in current working directory\r\n                        # schedule() can be used to queue/run the main process\r\n\r\n    __scripts/debugger__\r\n\r\n    an interactive debugger (monitor) with the ability to connect to scheduler sessions and provide information such as progress, pipe status, resource stats\r\n\r\n      ./run debugger    # attaches to scheduler running in current working directory\r\n                        # returns 3 if scheduler has finished\r\n\r\n    __add XPath capibility__\r\n      see https://stackoverflow.com/questions/15461737/how-to-execute-xpath-one-liners-from-shell\r\n\r\n    __support for true multithreading with effective waiting strategies__"}}
{"actor":{"display_login":"exbuddha"}}