refactor: DRY up extension cleanup into base class
Move cleanup_heading, cleanup_items, and the common cleanup! pattern into Extension. Each extension now only defines uninstall_package! with its specific uninstall args. Go keeps its custom cleanup! since it does binary-level deletion rather than a package manager call.
M
Matt Van Horn committed
4aa23873d06f7558e9ac655024815bec10fde421
Parent: 033988d