package_control icon indicating copy to clipboard operation
package_control copied to clipboard

Install packages programmatically?

Open dbeckwith opened this issue 4 years ago • 2 comments

Is there any official way to install packages without having to use the sublime UI? I'd like to be able to write an external script that will install/uninstall packages by name. I had a look through the source code and couldn't find any registered sublime commands that directly install a package. There's InstallPackageCommand but it just opens a separate window which eventually calls PackageManager, and the actual install code is located there. Is there a way to expose some of the functionality of PackageManager directly as sublime commands? If there isn't but you think this is a useful thing to have, I might be willing to contribute a patch. Thanks for the great package!

dbeckwith avatar Sep 22 '21 21:09 dbeckwith

Hmm so I found #883 which has some tips on running the provided commands. I'm able to install packages with something like window.run_command('advanced_install_package', {'packages':['my package']}), but there's no equivalent I can find for removing packages.

dbeckwith avatar Sep 22 '21 21:09 dbeckwith

Something like #1361 would also be useful for my purposes.

dbeckwith avatar Sep 22 '21 21:09 dbeckwith

Source code to handle installations is bundled with ST's API and thus can't be run in a dedicated shell.

All relevant commands to handle installation, upgrade, removal, enabling or disabling packages will be available in PC 4.0 and can be executed using subl.

Install Packages

subl -b --command 'install_packages {"packages": ["package1", "package2"]}'

Upgrade Packages

subl -b --command 'upgrade_packages {"packages": ["package1", "package2"]}'

Upgrade All Packages

subl -b --command 'upgrade_all_packages'

Remove Packages

subl -b --command 'remove_packages {"packages": ["package1", "package2"]}'

Enable Packages

subl -b --command 'enable_packages {"packages": ["package1", "package2"]}'

Disable Packages

subl -b --command 'disable_packages {"packages": ["package1", "package2"]}'

deathaxe avatar Feb 05 '23 20:02 deathaxe

That sounds perfect, thank you!

dbeckwith avatar Feb 07 '23 23:02 dbeckwith