Generating a report of which channels use each shared module

Tip: Iguana 6 changed the back end of the source control to use GIT.  There is a port of this utility available in this Github repository:  https://github.com/interfaceware/iguana-programming

I just got back from visiting Botsford hospital where the folks from Xerox are about to go live with a large eGate migration. One of the questions that came up during discussions was how to see what channels are using a given shared module.

That functionality isn’t built into Iguana directly but because it’s easy to access the fossil source code repository (see Fossil repository layout) and the IguanaConfiguration.xml file it’s not a big job to write a script to generate such a report. So while I was down in Detroit that is exactly what I did.

The algorithm is quite straightforward:

  1. Open up the repository into a temporary directory – the script assumes that the Iguana instance is running on Windows with a C:\temp directory.
  2. Iterate through each of the GUID subdirectories and open their project.prg files.
  3. Iterate through the shared dependencies in those project.prg files and build up a list of which shared modules use which channels.
  4. Open the IguanaConfiguration.xml file, parse it and figure out which channels use which translator instances.

I put the report into a From HTTPS channel to make it easy to generate the report out as an HTML table so you get a header column which each shared module on the left. Then on the right you get a list of channels which use each module – with brackets indicating what component is using it – since there 5 possible translator components:

  • LLP Listeners with custom ACK translator instance. (LLP)
  • From HTTPS (H)
  • From Translator (S)
  • Filter (F)
  • To Translator (D)

The formatting of the report is quite rough – but the report is useful so I thought I would put it up and see if other customers find it useful. For the source code go and look at the next tip in this series which is when I added search capability to the example script.

You can see the output of this script there too.