42 lines
No EOL
1.5 KiB
C#
42 lines
No EOL
1.5 KiB
C#
using System.Management.Automation;
|
|
using ModuleCore.Git;
|
|
|
|
namespace PowershellModule.Git.Commands;
|
|
|
|
[Cmdlet(VerbsCommon.Show, GitCommands.GitRepoRegistrationNoun)]
|
|
public class ShowGitRepoRegistrationCommand : PSCmdlet
|
|
{
|
|
[Parameter(
|
|
Position = 0,
|
|
ValueFromPipeline = true,
|
|
Mandatory = true,
|
|
HelpMessage = "Reference name for the repo")]
|
|
public string? Name { get; set; }
|
|
|
|
[Parameter(
|
|
Mandatory = false,
|
|
HelpMessage = "Changes directory directly instead of using Set-Location")]
|
|
[Alias("NoPushLocation")]
|
|
public SwitchParameter NoStack { get; set; }
|
|
|
|
protected override void BeginProcessing()
|
|
{
|
|
var location = GitRepoRegistrationManager.Instance.GetDirectoryForRegisteredRepo(Name);
|
|
|
|
// By default instead of doing the same as cd, we instead do pushd so a user can popd straight back to where
|
|
// they came from.
|
|
// TODO: incorporate this into the custom prompt when I develop that
|
|
if (!NoStack)
|
|
{
|
|
// Push the current location to the stack
|
|
// TODO: support named stacks. PowerShell *-Location commands support named stacks, but I don't personally
|
|
// use them myself so I haven't implemented them initially. I would like to in the future though, but right
|
|
// now it's low value to me.
|
|
// https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/set-location?view=powershell-7.6#example-4-set-the-current-location-to-a-named-stack
|
|
SessionState.Path.PushCurrentLocation(null);
|
|
}
|
|
|
|
SessionState.Path.SetLocation(location);
|
|
base.BeginProcessing();
|
|
}
|
|
} |