PowerShell Studio 2012 with GIT, Subversion and Mercurial Oh, my!

Similar to PrimalScript 2012, we received requests to add support for GIT, Mercurial, and Subversion in PowerShell Studio 2012. The difficulty of supporting all these various source control solutions is that they all have different APIs and change over time. The varying nature of these tools could potentially make the integration outdated fairly quickly. One thing in common all the source controls solutions previously mentioned have is command line tools. We’ve used this common factor to resolve the problem.

Our solution to the problem is the new custom tool menu:

Custom Tool Menu

The custom tool menu allows you to customize and execute command lines tools at the click of a button. The new feature enables you to integrate virtually any solution that provides a command line tool.

 

You can add a global set of commands to the custom tool menu by creating a INF file in PowerShell Studio’s application data folder:

Global CustomMenu inf

Folder Location (Windows 7 ):

C:\ProgramData\SAPIEN\PowerShell Studio 2012\CustomMenu.inf

 

CustomMenu.inf Format:

[Menu]
1=Command Name 1;command line 1
2=Command Name 2;command line 2

 

In this example GIT is used, but any command line tool will work including the command line tools you create with PowerShell Studio’s script to exe packager.

After creating or altering the CustomMenu.inf, you will need to restart PowerShell Studio in order to see the new commands:

Custom Tool Menu Global Commands

 

Another useful feature of the custom menu is the ability to create localized commands for specific folders. For example, you may use a particular source control solution for Folder A and another for Folder B. In addition, you could use the localized commands to replicate a source control solution’s repository to a remote location.

For example, the following CustomMenu.inf is added to the target folder “My Documents\SAPIEN\Scripts”:

image

 

When you open a file that is contained in the folder, the custom tools menu will display the localized folder commands as well as the global commands.

Custom Tool Menu Localized Commands

The custom commands allow you to react to files or folders. This way you can push files to an ftp site or simply make a backup copy to a remote location. Output from the command line tools will be displayed in PowerShell Studio’s Output panel.

The following is a list of macro variables that  can be used in custom menu command lines:

$ProjectFolder$ The folder the currently open project resides in, if any project is open.
$PowerShell$ The PowerShell version number currently selected in the ribbon (2 or 3).
$Platform$ The current platform selected in platform selector (32 or 64)
$WinDir$ The location of the Windows directory for PowerShell Studio’s process.
$WinSystem$ The location of the Windows System folder for PowerShell Studio’s process.
$Selection$ The content of the current selection in the active file, if any. (Warning: may contain carriage return/ linefeed)
$File$ The full path of the currently active file, if any.
$FileName$ The file name of the active document without path information.
$FileDir$ The folder location of the currently active document.
$Dir$ The current directory of PowerShell Studio’s process.
$Line$ The current line number in the active file.
$Col$ The current column in the active file.

 

The custom menu feature should make PowerShell Studio integration with external tools easier and customizable.

This article applies to PowerShell Studio v3.1.14 or later.

Related Article:

 http://www.sapien.com/blog/2012/12/11/using-git-subversion-and-mercurial-with-primalscript-2012/