{"action":"created","issue":{"url":"https://api.github.com/repos/killbill/killbill-cloud/issues/13","repository_url":"https://api.github.com/repos/killbill/killbill-cloud","labels_url":"https://api.github.com/repos/killbill/killbill-cloud/issues/13/labels{/name}","comments_url":"https://api.github.com/repos/killbill/killbill-cloud/issues/13/comments","events_url":"https://api.github.com/repos/killbill/killbill-cloud/issues/13/events","html_url":"https://github.com/killbill/killbill-cloud/issues/13","id":122837169,"number":13,"title":"Support uninstalling plugins outside of KPM","user":{"login":"pierre","id":51940,"avatar_url":"https://avatars.githubusercontent.com/u/51940?v=3","gravatar_id":"","url":"https://api.github.com/users/pierre","html_url":"https://github.com/pierre","followers_url":"https://api.github.com/users/pierre/followers","following_url":"https://api.github.com/users/pierre/following{/other_user}","gists_url":"https://api.github.com/users/pierre/gists{/gist_id}","starred_url":"https://api.github.com/users/pierre/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pierre/subscriptions","organizations_url":"https://api.github.com/users/pierre/orgs","repos_url":"https://api.github.com/users/pierre/repos","events_url":"https://api.github.com/users/pierre/events{/privacy}","received_events_url":"https://api.github.com/users/pierre/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/killbill/killbill-cloud/labels/bug","name":"bug","color":"fc2929"},{"url":"https://api.github.com/repos/killbill/killbill-cloud/labels/KPM","name":"KPM","color":"0052cc"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/killbill/killbill-cloud/milestones/1","html_url":"https://github.com/killbill/killbill-cloud/milestones/Release-0.2.0","labels_url":"https://api.github.com/repos/killbill/killbill-cloud/milestones/1/labels","id":1631956,"number":1,"title":"Release-0.2.0","description":"","creator":{"login":"sbrossie","id":246910,"avatar_url":"https://avatars.githubusercontent.com/u/246910?v=3","gravatar_id":"","url":"https://api.github.com/users/sbrossie","html_url":"https://github.com/sbrossie","followers_url":"https://api.github.com/users/sbrossie/followers","following_url":"https://api.github.com/users/sbrossie/following{/other_user}","gists_url":"https://api.github.com/users/sbrossie/gists{/gist_id}","starred_url":"https://api.github.com/users/sbrossie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sbrossie/subscriptions","organizations_url":"https://api.github.com/users/sbrossie/orgs","repos_url":"https://api.github.com/users/sbrossie/repos","events_url":"https://api.github.com/users/sbrossie/events{/privacy}","received_events_url":"https://api.github.com/users/sbrossie/received_events","type":"User","site_admin":false},"open_issues":8,"closed_issues":7,"state":"open","created_at":"2016-03-09T02:27:44Z","updated_at":"2016-03-26T01:52:31Z","due_on":null,"closed_at":null},"comments":5,"created_at":"2015-12-17T22:30:36Z","updated_at":"2016-03-30T16:58:14Z","closed_at":null,"body":"If the operator `rm -rf` a plugin, the sha1 and identifiers files will still contain entries. They should be cleaned up instead."},"comment":{"url":"https://api.github.com/repos/killbill/killbill-cloud/issues/comments/203526404","html_url":"https://github.com/killbill/killbill-cloud/issues/13#issuecomment-203526404","issue_url":"https://api.github.com/repos/killbill/killbill-cloud/issues/13","id":203526404,"user":{"login":"sbrossie","id":246910,"avatar_url":"https://avatars.githubusercontent.com/u/246910?v=3","gravatar_id":"","url":"https://api.github.com/users/sbrossie","html_url":"https://github.com/sbrossie","followers_url":"https://api.github.com/users/sbrossie/followers","following_url":"https://api.github.com/users/sbrossie/following{/other_user}","gists_url":"https://api.github.com/users/sbrossie/gists{/gist_id}","starred_url":"https://api.github.com/users/sbrossie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sbrossie/subscriptions","organizations_url":"https://api.github.com/users/sbrossie/orgs","repos_url":"https://api.github.com/users/sbrossie/repos","events_url":"https://api.github.com/users/sbrossie/events{/privacy}","received_events_url":"https://api.github.com/users/sbrossie/received_events","type":"User","site_admin":false},"created_at":"2016-03-30T16:58:14Z","updated_at":"2016-03-30T16:58:14Z","body":"Note that i recently implement a new verb `inspect` to display the current state:\r\n\r\n\r\nThe flow of operations would then be:\r\n1. User can use `kpm inspect ` to display current state (and visualize things that are broken if any)\r\n2. User can decide to remove such broken plugin using the command listed above `kpm uninstall <plugin_name>|<plugin_key>`. However, to make it both simple and useful:\r\n\r\n1. The new verb `uninstall` remove everything (cleanup `plugin_identifiers.json`, `sha1.yml` and remove binary from file system. No soft uninstall using `disabled.txt`.\r\n2.  `uninstall` should allow to remove all entries for a specific plugin or also target a specific plugin version\r\n"}}