wbond / package_control

The Sublime Text package manager
https://packagecontrol.io
4.77k stars 816 forks source link

Install packages programmatically? #1597

Closed dbeckwith closed 7 months ago

dbeckwith commented 2 years ago

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 commented 2 years ago

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 commented 2 years ago

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

deathaxe commented 1 year ago

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"]}'
dbeckwith commented 1 year ago

That sounds perfect, thank you!