functions/Convert-CodetoSnippet.ps1



Function Convert-CodetoSnippet {
    [cmdletbinding(SupportsShouldProcess)]
    [alias("ccs")]

    Param(
        [Parameter(Position = 0, Mandatory = $True,
            HelpMessage = "Enter some code text or break, select text in the ISE and try again.")]
        [ValidateNotNullorEmpty()]
        [string]$Text
    )

    Add-Type -AssemblyName "Microsoft.VisualBasic"

    $title = [Microsoft.VisualBasic.Interaction]::InputBox("Enter a title for your snippet", $MyInvocation.mycommand.name)

    if ($title) {
        $description = [Microsoft.VisualBasic.Interaction]::InputBox("Enter a description for your snippet", $MyInvocation.mycommand.name, "This is required")
        if ($description) {
            $author = [Microsoft.VisualBasic.Interaction]::InputBox("Enter an author for your snippet", $MyInvocation.mycommand.name, $env:username)
            if (!$author) {
                $author = " "
            } #if author
        } #if description
        else {
            #if no description assume user cancelled
            Write-Warning -Message "No description was specified. Operation cancelled."
            Return
        }

        if ($PSCmdlet.ShouldProcess($title) ) {
            Try {
                New-IseSnippet -Title $title -Text $Text -description $Description -author $Author
            }
            Catch {
                $message = ("There was an error creating the snippet. `n`n{0} `n`nDo you want to force an overwrite?" -f $_.exception.message)
                $returnValue = [microsoft.visualbasic.interaction]::Msgbox($message, "YesNo,Exclamation", $MyInvocation.MyCommand.name)
                if ($returnValue -eq "yes") {
                    #re-run the command but this time with -Force
                    New-IseSnippet -Title $title -Text $Text -description $Description -author $Author -Force
                }
            }
        } #shouldprocess
    }

} #end Convert-CodeToSnippet