Source code for projspec.proj.ide

"""Code project container config within IDEs"""

from projspec.artifact import BaseArtifact
from projspec.proj import ProjectSpec


[docs] class NvidiaAIWorkbench(ProjectSpec): icon = "🧠" spec_doc = ( "https://docs.nvidia.com/ai-workbench/user-guide/latest/projects/spec.html" ) def match(self) -> bool: return self.proj.fs.exists(f"{self.proj.url}/.project/spec.yaml") def parse(self) -> None: from projspec.artifact.process import Process # "opens" the project in the sense that it is set as the current context. # Editing still happens in jupyter/vscode/etc self.artifacts["set_project"] = Process( self.proj, cmd=["nvwb", "open", self.proj.url] )
# create: # https://docs.nvidia.com/ai-workbench/user-guide/latest/reference/user-interface/cli.html#create-project
[docs] class JetbrainsIDE(ProjectSpec): icon = "🛩️" def match(self) -> bool: return self.proj.fs.exists(f"{self.proj.url}/.idea") def parse(self) -> None: from projspec.artifact.process import Process self.artifacts["launch"] = Process( self.proj, cmd=["pycharm", ".", "nosplash", "dontReopenProjects"] )
[docs] class VSCode(ProjectSpec): icon = "💻" spec_doc = ( "https://code.visualstudio.com/docs/configure/settings#_settings-json-file" ) def match(self) -> bool: return self.proj.fs.exists(f"{self.proj.url}/.vscode/settings.json") def parse(self) -> None: from projspec.artifact.process import Process self.artifacts["launch"] = Process(self.proj, cmd=["code", "."])
[docs] class Zed(ProjectSpec): icon = "⚡" spec_doc = "https://zed.dev/docs/configuring-zed#settings" def match(self) -> bool: return self.proj.fs.exists(f"{self.proj.url}/.zed/settings.json") def parse(self) -> None: from projspec.artifact.process import Process self.artifacts["launch"] = Process(self.proj, cmd=["zed", "."])