VSoft Technologies Blogs

rss

VSoft Technologies Blogs - posts about our products and software development.


Using Python in FinalBuilder

Today FB 6.1 was released as a beta version. One of the major new features in this version is Python language support. We're leveraging Microsoft's IronPython project for this, and because version 2 of IronPython is built on the Dynamic Language Runtime, we're expecting that as other DLR languages become available, we'll be able to support them in FinalBuilder as well.

The Python language is pretty neat, and the fact that IronPython interacts seamlessly with the .NET Framework makes it pretty powerful by itself. It shares this feature with PowerShell.

However, what really makes Python awesome is the amount of extra library functionality that comes with the standard language distribution.

Example

This is a totally arbitrary example. Say your build process needs to calculate a SHA1 hash. FinalBuilder only supports MD5 at the moment. Can Python save the day?

Step One: Install Python Libraries

You need to install the Python standard libraries in order to get access to their many functions. You get this as part of the standard Windows Python distribution. Grab the "Windows Binary installer" from http://python.org/download/

Step Two: Tell FinalBuilder

You need to tell FinalBuilder where the Python library is installed. If you launch FinalBuilder and go to Tools -> Options -> FinalBuilder -> Script Options, as shown, you will see this options page:

Script Options Frame

Enter the path to the Python library directory, as shown here. The options page says you need to restart, but you actually only need to do this if you've run a Python script since you started FinalBuilder.

Step Three: Run Script Action

I use the Action filter to search for the all-purpose Run Script action, which I can then add to my project:

Actions Tab

Step Four: Type in Script

Here's my SHA1 script code. I entered this in the OnExecute event, under the Script Editor tab at the bottom of the main FinalBuilder IDE. Make sure you set the script language to "Python", as shown:

Script Editor view

Note that the FBVariables object behaves just like a normal Python dictionary.

Click here to download a sample project file.

Step Five: Run it!

Here's the log output from the SHA1 Run Script:

Log Output

Where do I go from here?

This was a pretty basic example, but the Python library provides you with literally hundreds of similar pieces of functionality. Take a look at the Python Library Reference for a complete list.

Can't I just use the .NET Framework?

Yes! The .NET Framework also provides you with a wealth of built-in functionality. Using it from IronPython is pretty simple, too. Here's Python code that performs the same functionality, written to use the .NET Framework instead of the Python library:

.NET Framework version

(It's a bit more complicated, mostly because I couldn't find a neat .NET-based way to convert a byte array to a hexadecimal string. Note that this approach does not require the Python libraries, it will work out of the box with FinalBuilder.)

Both sample scripts are included in the downloadable example.

It would also be possible to rewrite the .NET version to use PowerShell, instead. I'll leave that as an exercise.


Today FB 6.1 was released as a beta version. One of the major new features in this version is Python language support. We're leveraging Microsoft's IronPython project for this, and because version 2 of IronPython is built on the Dynamic Language Runtime, we're expecting that as other DLR languages become available, we'll be able to support them in FinalBuilder as well.

The Python language is pretty neat, and the fact that IronPython interacts seamlessly with the .NET Framework makes it pretty powerful by itself. It shares this feature with PowerShell.

However, what really makes Python awesome is the amount of extra library functionality that comes with the standard language distribution.

Example

This is a totally arbitrary example. Say your build process needs to calculate a SHA1 hash. FinalBuilder only supports MD5 at the moment. Can Python save the day?

Step One: Install Python Libraries

You need to install the Python standard libraries in order to get access to their many functions. You get this as part of the standard Windows Python distribution. Grab the "Windows Binary installer" from http://python.org/download/

Step Two: Tell FinalBuilder

You need to tell FinalBuilder where the Python library is installed. If you launch FinalBuilder and go to Tools -> Options -> FinalBuilder -> Script Options, as shown, you will see this options page:

Script Options Frame

Enter the path to the Python library directory, as shown here. The options page says you need to restart, but you actually only need to do this if you've run a Python script since you started FinalBuilder.

Step Three: Run Script Action

I use the Action filter to search for the all-purpose Run Script action, which I can then add to my project:

Actions Tab

Step Four: Type in Script

Here's my SHA1 script code. I entered this in the OnExecute event, under the Script Editor tab at the bottom of the main FinalBuilder IDE. Make sure you set the script language to "Python", as shown:

Script Editor view

Note that the FBVariables object behaves just like a normal Python dictionary.

Click here to download a sample project file.

Step Five: Run it!

Here's the log output from the SHA1 Run Script:

Log Output

Where do I go from here?

This was a pretty basic example, but the Python library provides you with literally hundreds of similar pieces of functionality. Take a look at the Python Library Reference for a complete list.

Can't I just use the .NET Framework?

Yes! The .NET Framework also provides you with a wealth of built-in functionality. Using it from IronPython is pretty simple, too. Here's Python code that performs the same functionality, written to use the .NET Framework instead of the Python library:

.NET Framework version

(It's a bit more complicated, mostly because I couldn't find a neat .NET-based way to convert a byte array to a hexadecimal string. Note that this approach does not require the Python libraries, it will work out of the box with FinalBuilder.)

Both sample scripts are included in the downloadable example.

It would also be possible to rewrite the .NET version to use PowerShell, instead. I'll leave that as an exercise.


Hate Team Foundation Server?

According to Google Analytics statistics for the past month, a number of people found the FinalBuilder web site in Google search results for the query hate "Team Foundation Server"

I didn't know so many people felt that way!

(For the record, we think that FinalBuilder complements Team Foundation Build in very productive ways.)


Hate Team Foundation Server?

According to Google Analytics statistics for the past month, a number of people found the FinalBuilder web site in Google search results for the query hate "Team Foundation Server"

I didn't know so many people felt that way!

(For the record, we think that FinalBuilder complements Team Foundation Build in very productive ways.)


According to Google Analytics statistics for the past month, a number of people found the FinalBuilder web site in Google search results for the query hate "Team Foundation Server"

I didn't know so many people felt that way!

(For the record, we think that FinalBuilder complements Team Foundation Build in very productive ways.)