in reply to Pragmatic project automation

I've built one of these, and it was a lot of fun.

The interesting thing was, to me, how this automation script blossomed over time into what now stands as a utility very much like ant and nant. To give you an idea of how far I went, here is the list of "modules" that I could batch together and configure for the many different flavours of "build" I had on my plate at the time:

  • Check_For_Missing_Interfaces.pl
  • Check_Valid_Build_Number.pl
  • CompareBuilds.pl
  • CopyFile.pl
  • CopyFiles.pl
  • Create_Database.pl
  • Create_Dir.pl
  • Create_Readme.pl
  • Create_Zip.pl
  • DelDir.pl
  • DelFile.pl
  • Detach_Database.pl
  • Detach_db_and_zip.pl
  • Encrypt_Prod_Files.pl
  • Expand_Top_Level_DB_Script.pl
  • GatherModules.pl
  • GetArchiveRevisionNumbers.pl
  • Log_Message.pl
  • MSSQL_Attach_db.pl
  • MSSQL_Autofix_Users.pl
  • PVCS_Get.pl
  • PVCS_Get_Lock.pl
  • PVCS_Unlock.pl
  • Restore_Test_DB.pl
  • Run_SQL_Command.pl
  • Run_SQL_Script.pl
  • ShowErrorsAndFail.pl
  • Unzip.pl
  • Unzip_Attach_DB.pl
  • Update_DB_Script_Files.pl
  • Update_Version_and_Model_Number.pl
  • VSS_Get_Project_Files.pl
  • VSS_Get_DB_Scripts.pl
  • VSS_Label_Tip.pl
  • VSS_Remove_Project_Label.pl
  • VSS_Set_Project_Label.pl
  • WriteToControlFile.pl
  • WriteToLog.pl

I controlled builds by composing INI files (guess which platform I was on ;-), and I had a simple GUI I used to check/uncheck different steps in each. I was about to launch into writing a miniature scripting language, or perhaps just a mechanism for passing state information between steps, when I realised that I was reinventing the wheel in a major way and it was time to stop. Soon after, I changed jobs and the need for such a tool diminished.