{"action":"created","issue":{"url":"https://api.github.com/repos/hangoutsbot/hangoutsbot/issues/190","labels_url":"https://api.github.com/repos/hangoutsbot/hangoutsbot/issues/190/labels{/name}","comments_url":"https://api.github.com/repos/hangoutsbot/hangoutsbot/issues/190/comments","events_url":"https://api.github.com/repos/hangoutsbot/hangoutsbot/issues/190/events","html_url":"https://github.com/hangoutsbot/hangoutsbot/issues/190","id":89862040,"number":190,"title":"[framework] Plugin submodules to load recursively instead","user":{"login":"nylonee","id":4732553,"avatar_url":"https://avatars.githubusercontent.com/u/4732553?v=3","gravatar_id":"","url":"https://api.github.com/users/nylonee","html_url":"https://github.com/nylonee","followers_url":"https://api.github.com/users/nylonee/followers","following_url":"https://api.github.com/users/nylonee/following{/other_user}","gists_url":"https://api.github.com/users/nylonee/gists{/gist_id}","starred_url":"https://api.github.com/users/nylonee/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nylonee/subscriptions","organizations_url":"https://api.github.com/users/nylonee/orgs","repos_url":"https://api.github.com/users/nylonee/repos","events_url":"https://api.github.com/users/nylonee/events{/privacy}","received_events_url":"https://api.github.com/users/nylonee/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/hangoutsbot/hangoutsbot/labels/bug","name":"bug","color":"fc2929"},{"url":"https://api.github.com/repos/hangoutsbot/hangoutsbot/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"open","locked":false,"assignee":{"login":"endofline","id":1592553,"avatar_url":"https://avatars.githubusercontent.com/u/1592553?v=3","gravatar_id":"","url":"https://api.github.com/users/endofline","html_url":"https://github.com/endofline","followers_url":"https://api.github.com/users/endofline/followers","following_url":"https://api.github.com/users/endofline/following{/other_user}","gists_url":"https://api.github.com/users/endofline/gists{/gist_id}","starred_url":"https://api.github.com/users/endofline/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/endofline/subscriptions","organizations_url":"https://api.github.com/users/endofline/orgs","repos_url":"https://api.github.com/users/endofline/repos","events_url":"https://api.github.com/users/endofline/events{/privacy}","received_events_url":"https://api.github.com/users/endofline/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/hangoutsbot/hangoutsbot/milestones/5","html_url":"https://github.com/hangoutsbot/hangoutsbot/milestones/The%20Near%20Future!","labels_url":"https://api.github.com/repos/hangoutsbot/hangoutsbot/milestones/5/labels","id":1191851,"number":5,"title":"The Near Future!","description":"Maybe... ;P\r\n\r\n(the milestone formerly known as \"2.4.3 organization organizing\")","creator":{"login":"nylonee","id":4732553,"avatar_url":"https://avatars.githubusercontent.com/u/4732553?v=3","gravatar_id":"","url":"https://api.github.com/users/nylonee","html_url":"https://github.com/nylonee","followers_url":"https://api.github.com/users/nylonee/followers","following_url":"https://api.github.com/users/nylonee/following{/other_user}","gists_url":"https://api.github.com/users/nylonee/gists{/gist_id}","starred_url":"https://api.github.com/users/nylonee/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nylonee/subscriptions","organizations_url":"https://api.github.com/users/nylonee/orgs","repos_url":"https://api.github.com/users/nylonee/repos","events_url":"https://api.github.com/users/nylonee/events{/privacy}","received_events_url":"https://api.github.com/users/nylonee/received_events","type":"User","site_admin":false},"open_issues":3,"closed_issues":0,"state":"open","created_at":"2015-07-03T03:15:00Z","updated_at":"2015-07-13T05:20:46Z","due_on":null,"closed_at":null},"comments":1,"created_at":"2015-06-21T04:20:15Z","updated_at":"2015-07-26T08:35:55Z","closed_at":null,"body":"In fixing #189, it was noted that the same family of plugins should be in the same subfolder. For example syncrooms:\r\n```\r\nplugins\r\n    --> syncrooms\r\n        --> __init__.py\r\n        --> syncrooms_config\r\n            --> __init__.py\r\n        --> syncrooms_autotranslate\r\n            --> __init__.py\r\n``` \r\n\r\nHowever, the current framework does not support submodules with a depth > 1, so this current structure is not possible."},"comment":{"url":"https://api.github.com/repos/hangoutsbot/hangoutsbot/issues/comments/124957752","html_url":"https://github.com/hangoutsbot/hangoutsbot/issues/190#issuecomment-124957752","issue_url":"https://api.github.com/repos/hangoutsbot/hangoutsbot/issues/190","id":124957752,"user":{"login":"endofline","id":1592553,"avatar_url":"https://avatars.githubusercontent.com/u/1592553?v=3","gravatar_id":"","url":"https://api.github.com/users/endofline","html_url":"https://github.com/endofline","followers_url":"https://api.github.com/users/endofline/followers","following_url":"https://api.github.com/users/endofline/following{/other_user}","gists_url":"https://api.github.com/users/endofline/gists{/gist_id}","starred_url":"https://api.github.com/users/endofline/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/endofline/subscriptions","organizations_url":"https://api.github.com/users/endofline/orgs","repos_url":"https://api.github.com/users/endofline/repos","events_url":"https://api.github.com/users/endofline/events{/privacy}","received_events_url":"https://api.github.com/users/endofline/received_events","type":"User","site_admin":false},"created_at":"2015-07-26T08:35:55Z","updated_at":"2015-07-26T08:35:55Z","body":"interestingly enough, this was already supported for manual configurations:\r\n```\r\nplugins: [\"example\", \"example.example_subplugin1\", \"example.example_subplugin2]\r\n```\r\n\r\nThe above would load the following plugins:\r\n```\r\n+ plugins\r\n  + example\r\n    + __init__.py  # loaded by \"example\"\r\n    + example_subplugin1.py  # loaded by \"example_subplugin1\"\r\n    + example_subplugin2.py  # loaded by \"example_subplugin2\"\r\n```\r\n\r\n82ee165 simply extends this facility if `config.plugins` is blank/unset"}}