diff --git a/.vscode/settings.json b/.vscode/settings.json index 9ca5d67..edc48c7 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -49,6 +49,7 @@ "davidanson", "dbus", "dearrow", + "debugpy", "devicemap", "dialout", "direnv", @@ -127,6 +128,7 @@ "mousewheel", "mpris", "msbc", + "mtxr", "ncdu", "nemo", "neofetch", @@ -210,6 +212,7 @@ "sonarr", "sponsorblock", "spotifyd", + "sqltools", "sshconfig", "subresource", "substituters", diff --git a/users/richie/home/gui/vscode/extension_installer.py b/users/richie/home/gui/vscode/extension_manager.py similarity index 57% rename from users/richie/home/gui/vscode/extension_installer.py rename to users/richie/home/gui/vscode/extension_manager.py index 54f6196..8a4162c 100644 --- a/users/richie/home/gui/vscode/extension_installer.py +++ b/users/richie/home/gui/vscode/extension_manager.py @@ -1,26 +1,34 @@ 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(): - extensions = ( + 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", - "streetsidesoftware.code-spell-checker", - "supermaven.supermaven", "usernamehw.errorlens", # git "codezombiech.gitignore", "eamodio.gitlens", - "GitHub.vscode-github-actions", + "gitHub.vscode-github-actions", # python "charliermarsh.ruff", "ms-python.python", "ms-python.vscode-pylance", + "ms-python.debugpy", # rust "rust-lang.rust-analyzer", # MD @@ -34,14 +42,27 @@ def main(): "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", + } - for extension in extensions: + 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()