Extensions/Git.FileOutput.UGit.Extension.ps1

<#
.Synopsis
    Git FileOutput Extension
.Description
    This extension runs on any command that includes the argument -o, followed by a single space.

    When the command is finished, this will attempt to file the argument provided after -o, and return it as a file.
.EXAMPLE
    git archive -o My.zip
#>

[Management.Automation.Cmdlet("Out","Git")]   # It's an extension for Out-Git
[ValidatePattern("-o\s{0}",Options='None')]   # that is run when the switch -o is used.
param(
)

end {
    # Walk over each argument
    for ($i = 0 ; $i -lt $GitArgument.Length; $i++) {
        if ($GitArgument[$i] -eq '-o' -and   # If the argument is -o
            $i -lt ($GitArgument.Length - 1) # and it's not the last argument
        ) {
            $fileName = $GitArgument[$i + 1] # treat the next argument as the filename
            if (Test-Path $fileName) {
                Get-Item $fileName -ErrorAction SilentlyContinue # and attempt to get the file.
            }
        }
    }
}