{"action":"created","issue":{"url":"https://api.github.com/repos/Codegyre/Robo/issues/96","labels_url":"https://api.github.com/repos/Codegyre/Robo/issues/96/labels{/name}","comments_url":"https://api.github.com/repos/Codegyre/Robo/issues/96/comments","events_url":"https://api.github.com/repos/Codegyre/Robo/issues/96/events","html_url":"https://github.com/Codegyre/Robo/issues/96","id":53232126,"number":96,"title":"Refactoring for 0.5.0. Comments needed!","user":{"login":"DavertMik","id":220264,"avatar_url":"https://avatars.githubusercontent.com/u/220264?v=3","gravatar_id":"","url":"https://api.github.com/users/DavertMik","html_url":"https://github.com/DavertMik","followers_url":"https://api.github.com/users/DavertMik/followers","following_url":"https://api.github.com/users/DavertMik/following{/other_user}","gists_url":"https://api.github.com/users/DavertMik/gists{/gist_id}","starred_url":"https://api.github.com/users/DavertMik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DavertMik/subscriptions","organizations_url":"https://api.github.com/users/DavertMik/orgs","repos_url":"https://api.github.com/users/DavertMik/repos","events_url":"https://api.github.com/users/DavertMik/events{/privacy}","received_events_url":"https://api.github.com/users/DavertMik/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/Codegyre/Robo/labels/question","name":"question","color":"cc317c"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/Codegyre/Robo/milestones/1","labels_url":"https://api.github.com/repos/Codegyre/Robo/milestones/1/labels","id":743066,"number":1,"title":"0.5.0","description":"Pipes","creator":{"login":"DavertMik","id":220264,"avatar_url":"https://avatars.githubusercontent.com/u/220264?v=3","gravatar_id":"","url":"https://api.github.com/users/DavertMik","html_url":"https://github.com/DavertMik","followers_url":"https://api.github.com/users/DavertMik/followers","following_url":"https://api.github.com/users/DavertMik/following{/other_user}","gists_url":"https://api.github.com/users/DavertMik/gists{/gist_id}","starred_url":"https://api.github.com/users/DavertMik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DavertMik/subscriptions","organizations_url":"https://api.github.com/users/DavertMik/orgs","repos_url":"https://api.github.com/users/DavertMik/repos","events_url":"https://api.github.com/users/DavertMik/events{/privacy}","received_events_url":"https://api.github.com/users/DavertMik/received_events","type":"User","site_admin":false},"open_issues":2,"closed_issues":1,"state":"open","created_at":"2014-08-05T05:41:21Z","updated_at":"2015-01-22T02:53:57Z","due_on":null,"closed_at":null},"comments":14,"created_at":"2015-01-01T23:53:18Z","updated_at":"2015-01-23T01:28:08Z","closed_at":null,"body":"# Robo Changes\r\n\r\n1. **Tasks are located by following PSR-4 standard**\r\n2. **Task loading by traits are removed** - this is done to simplify loading of tasks. Instead of declaring tasks in traits you can just call them with static initialization methods. Also you won't need to include lots of traits into RoboFile. Usage of static class calls instead of traits is aimed for simplicity. One task = one class = one file.\r\n3. **Tasks initialization syntax changed to**\r\n\r\n```php\r\n<?php\r\n\r\ntaskChangelog::init()\r\n    ->change('refactored Robo')\r\n    ->version('0.5.0')\r\n    ->run();\r\n?>\r\n```\r\n\r\nFor one-line tasks are simplified to:\r\n\r\n```php\r\n<?php\r\ntaskExec::_run('cap production deploy');\r\n\r\n// equal to \r\ntaskExec::init()\r\n    ->exec('cap production deploy')\r\n    ->run();\r\n\r\n// also\r\ntaskCopyDir::_run(['/var/log', '/backup/log']);\r\ntaskCleanDir::_run(['web/assets','tmp/','log/']);\r\ntaskRename::_run('Dockerfile', 'tmpDockerfile');\r\n?>\r\n```\r\n\r\nThose commands will initializa and invoke tasks;\r\n\r\n4 **Stack tasks changes**\r\n\r\n```php\r\n<?php\r\n// performs actions one by one\r\ntaskGit::stack()\r\n    ->add('-A')\r\n    ->commit(\"auto-update\")\r\n    ->pull()\r\n    ->push()\r\n    ->run();\r\n\r\n// clones repo\r\ntaskGit::_clone('git@github.com:php-vcr/php-vcr.git');\r\n\r\n// equal to\r\ntaskGit::stack()\r\n    ->clone('git@github.com:php-vcr/php-vcr.git')\r\n    ->run();\r\n?>\r\n```\r\n\r\nThis goes far well for **Exec**:\r\n\r\n```php\r\n<?php\r\n// run 1 command\r\ntaskExec::_run('grunt test');\r\n\r\n// run 2 commands\r\ntaskExec::stack()\r\n    ->exec('grunt test')\r\n    ->exec('phpunit')\r\n    ->run();\r\n?>\r\n```\r\n\r\n5 **RoboFile must contain a namespace** so FQNs could be simplified by IDE to proposed variants. Namespace can be either:\r\n\r\n* robo\r\n* Robo\r\n* ????\r\n* Robo;\r\n\r\n\r\n6 **Directory Structure would be following:**\r\n\r\n```\r\nsrc/\r\n  Command\r\n    RoboUpdate\r\n    RoboGlobalInstall\r\n  \r\n  Interfaces\r\n    TaskInterface\r\n    RunnableInterface\r\n\r\n  Exception\r\n    TaskException\r\n\r\n  Commons\r\n    Executable\r\n    DynamicConfig\r\n    CommandStack\r\n    Output\r\n\r\n  Task\r\n    BaseTask\r\n    FileSystem\r\n        taskCleanDir\r\n        taskDeleteDir\r\n        task....\r\n    Codeception\\\r\n        taskCodeceptRun\r\n    PhpUnit\\\r\n        taskPhpUnit\r\n    Minify\\\r\n        taskMinify\r\n    Docker\\\r\n        task....\r\n    Npm\\\r\n        taskNpmInstall\r\n        taskNpmUpdate\r\n    Rsync\\\r\n        taskRsync\r\n    Svn\\\r\n        taskSvnStack\r\n    Watch\\\r\n        taskWatch\r\n    Exec\\\r\n        taskExec\r\n        taskExecStack\r\n```"},"comment":{"url":"https://api.github.com/repos/Codegyre/Robo/issues/comments/71133080","html_url":"https://github.com/Codegyre/Robo/issues/96#issuecomment-71133080","issue_url":"https://api.github.com/repos/Codegyre/Robo/issues/96","id":71133080,"user":{"login":"boedah","id":1183125,"avatar_url":"https://avatars.githubusercontent.com/u/1183125?v=3","gravatar_id":"","url":"https://api.github.com/users/boedah","html_url":"https://github.com/boedah","followers_url":"https://api.github.com/users/boedah/followers","following_url":"https://api.github.com/users/boedah/following{/other_user}","gists_url":"https://api.github.com/users/boedah/gists{/gist_id}","starred_url":"https://api.github.com/users/boedah/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/boedah/subscriptions","organizations_url":"https://api.github.com/users/boedah/orgs","repos_url":"https://api.github.com/users/boedah/repos","events_url":"https://api.github.com/users/boedah/events{/privacy}","received_events_url":"https://api.github.com/users/boedah/received_events","type":"User","site_admin":false},"created_at":"2015-01-23T01:28:08Z","updated_at":"2015-01-23T01:28:08Z","body":"Some comments on latest version:\r\n\r\n1. is this a left-over? https://github.com/Codegyre/Robo/blob/master/src/Task/Development/PhpServer.php#L39\r\n1. maybe you should run some automated code-style fixer, since formatting in the whole codebase diverges sometimes"}}