Tuesday 2 April 2019

Refactoring PSM1 based modules into seperate ps1 files

A lot of my old powershell modules have grown to be quite big and unweildly.

At work we have now standardised on using PSAKE to create them and use a structure that has a public and private set of folders that contain ps1 files that make up the modules functions. These are automatically dot sourced when the module loads.

I'm not going to claim credit for doing it that way, its based on some complex googling, or maybe just plain luck.

In an effort to refactor and make some of these more readable, supportable, easier to test using pester etc etc.. I've knocked up a quick and dirty script for 'refactoring' the module into seperate files.

It's not perfect but it was spend a little time writing a script to do it, rather than spending the time manually in VSCode or Notepad++

The code uses powershell's Abstract Syntaxt Tree / Language Parser. it might help someone, it might not :)


Code is here: https://gist.github.com/davidwallis3101/58de8462bf37c8683b377cb0c7a5a95b