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