#!/usr/local/apps/bin/python import os, sys, string # # Get the output of a command as a tuple of strings. # def GetFilenames(command): p = os.popen(command) files = p.readlines() p.close() return files # # Get a list of all files that have a .code extension and contain "CreateNode". # def GetCreateNodeFiles(): files = GetFilenames("grep -i CreateNode */*.code") retval = [] for f in files: index = string.find(f, ':') if(index != -1): astr = f[:index] if(astr not in retval): retval = retval + [astr] return retval # # Execute a command. It's wrapped for debugging. # def systemCommand(command): print command return os.system(command) ############################################################################### # # Purpose: This program regenerates all of the state objects in this directory # by first checking out the XML files and then calling xml2atts. # # Programmer: Brad Whitlock # Date: Tue May 20 10:00:56 PDT 2003 # # Modifications: # ############################################################################### def main(exeDir): # Get the names of the XML files in this directory. files = GetFilenames("ls */*.xml") # Check out each XML file and regenerate the C and h files. for f in files: index = string.find(f, "/") dirName = "" if(index == -1): continue else: dirName = f[:index] os.chdir(dirName) bname = f[index+1:-5] command = "%s/xml2atts -clobber %s.xml" % (exeDir,bname) systemCommand(command) # Go back up os.chdir("..") # Warn about files that have special CreateNode functions. cnfiles = GetCreateNodeFiles() if(len(cnfiles) > 0): print "***" print "*** The following code files have special CreateNode methods." print "*** These .code files may need to be updated:" print "***" for f in cnfiles: print f return 0 # # Call the main function # if len(sys.argv) > 1: main(sys.argv[1]) else: print "usage: regenerateatts.py /path/to/xml2atts"