69 lines
1.9 KiB
Python
69 lines
1.9 KiB
Python
from subprocess import run
|
|
|
|
|
|
def get_installed_extensions():
|
|
process = run("code --list-extensions".split(), check=True, capture_output=True)
|
|
return set(process.stdout.decode("utf-8").strip().split("\n"))
|
|
|
|
|
|
def main():
|
|
print("starting vscode extension manager")
|
|
|
|
extensions = {
|
|
# vscode
|
|
"ms-azuretools.vscode-docker",
|
|
"ms-vscode-remote.remote-containers",
|
|
"ms-vscode-remote.remote-ssh-edit",
|
|
"ms-vscode-remote.remote-ssh",
|
|
"ms-vscode.hexeditor",
|
|
"ms-vscode.remote-explorer",
|
|
"ms-vsliveshare.vsliveshare",
|
|
"oderwat.indent-rainbow",
|
|
"usernamehw.errorlens",
|
|
# git
|
|
"codezombiech.gitignore",
|
|
"eamodio.gitlens",
|
|
"gitHub.vscode-github-actions",
|
|
# python
|
|
"charliermarsh.ruff",
|
|
"ms-python.python",
|
|
"ms-python.vscode-pylance",
|
|
"ms-python.debugpy",
|
|
# rust
|
|
"rust-lang.rust-analyzer",
|
|
# MD
|
|
"davidanson.vscode-markdownlint",
|
|
"yzhang.markdown-all-in-one",
|
|
# configs
|
|
"redhat.vscode-yaml",
|
|
"tamasfe.even-better-toml",
|
|
# shell
|
|
"timonwong.shellcheck",
|
|
"foxundermoon.shell-format",
|
|
# nix
|
|
"jnoortheen.nix-ide",
|
|
# database
|
|
"mtxr.sqltools-driver-pg",
|
|
"mtxr.sqltools",
|
|
# other
|
|
"esbenp.prettier-vscode",
|
|
"mechatroner.rainbow-csv",
|
|
"streetsidesoftware.code-spell-checker",
|
|
"supermaven.supermaven",
|
|
}
|
|
|
|
installed_extensions = get_installed_extensions()
|
|
|
|
missing_extensions = extensions.difference(installed_extensions)
|
|
for extension in missing_extensions:
|
|
run(f"code --install-extension {extension} --force".split(), check=True)
|
|
|
|
if extra_extensions := installed_extensions.difference(extensions):
|
|
print(f"Extra extensions installed: {extra_extensions}")
|
|
|
|
print("vscode extension manager finished")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|