From e6665a588bcca86b9c25ef4791274840bc65b4fa Mon Sep 17 00:00:00 2001 From: Scott Date: Thu, 6 Aug 2026 14:44:24 +1000 Subject: [PATCH] feat(git-provider): Add basic GitRepo provider --- src/PowershellModule/Git/GitProvider.cs | 52 +++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/PowershellModule/Git/GitProvider.cs diff --git a/src/PowershellModule/Git/GitProvider.cs b/src/PowershellModule/Git/GitProvider.cs new file mode 100644 index 0000000..5167ede --- /dev/null +++ b/src/PowershellModule/Git/GitProvider.cs @@ -0,0 +1,52 @@ +using System; +using System.Management.Automation; +using System.Management.Automation.Provider; + +namespace PowershellModule.Git; + +// https://learn.microsoft.com/en-us/powershell/scripting/developer/provider/accessdbprovidersample02?view=powershell-7.6 +[CmdletProvider(Name, ProviderCapabilities.None)] +public class GitProvider : NavigationCmdletProvider +{ + public const string Name = "GitRepo"; + + public GitProvider() + { + } + + protected override PSDriveInfo NewDrive(PSDriveInfo drive) + { + if (drive.Root != string.Empty) + { + throw new Exception("Drive root must be an empty string"); + } + return base.NewDrive(drive); + } + + protected override void NewItem(string path, string itemTypeName, object newItemValue) + { + base.NewItem(path, itemTypeName, newItemValue); + } + + protected override PSDriveInfo RemoveDrive(PSDriveInfo drive) + { + return base.RemoveDrive(drive); + } + + // I think this is needed to be able to cd into it + protected override bool IsItemContainer(string path) + { + return true; + } + + // I think this is needed to be able to cd into it + protected override bool ItemExists(string path) + { + return true; + } + + protected override bool IsValidPath(string path) + { + throw new System.NotImplementedException(); + } +} \ No newline at end of file