Go to the documentation of this file.00001
00002 import roslib
00003 from Cheetah.Template import Template
00004 import sys
00005 import os
00006 import string
00007
00008
00009 def split_lower_case(name):
00010 index = [i for i in range(len(name)) if name[i] in string.uppercase]
00011 parts = []
00012 for i in range(len(index)):
00013 if i == len(index) - 1:
00014 parts.append(name[index[i]:].lower())
00015 else:
00016 parts.append(name[index[i]:index[i+1]].lower())
00017 return parts
00018
00019
00020 def make_underscore(name):
00021 parts = split_lower_case(name)
00022 return '_'.join(parts)
00023
00024
00025 def make_caps(name):
00026 parts = split_lower_case(name)
00027 return '_'.join([x.upper() for x in parts])
00028
00029 if __name__=="__main__":
00030 if len(sys.argv) < 3:
00031 print "Usage %s action namespace [s]" % sys.argv[0], "(if 's' is given at the end a service action executor is created"
00032 sys.exit(1)
00033 action_pkg, action_name = sys.argv[1].split("/")
00034 namespace = sys.argv[2]
00035 action_underscored = make_underscore(action_name)
00036 action_caps = make_caps(action_name)
00037
00038
00039
00040
00041
00042
00043 tmpl_dir = roslib.packages.get_pkg_subdir("continual_planning_executive", "scripts", False)
00044 if not tmpl_dir:
00045 print "Could not find package://continual_planning_executive/scripts directory"
00046 sys.exit(1)
00047
00048 header_tmpl_name = "actionExecutor.h.tmpl"
00049 cpp_tmpl_name = "actionExecutor.cpp.tmpl"
00050 if len(sys.argv) >= 4 and sys.argv[3] == "s":
00051 header_tmpl_name = "actionExecutorService.h.tmpl"
00052 cpp_tmpl_name = "actionExecutorService.cpp.tmpl"
00053
00054 header_template = Template(file=os.path.join(tmpl_dir, header_tmpl_name),
00055 searchList=[{'PACKAGE' : action_pkg,
00056 'ACTION' : action_name,
00057 'ACTION_CAPS' : action_caps,
00058 'ACTION_UNDERSCORED' : action_underscored,
00059 'NAMESPACE' : namespace}])
00060 f = file("actionExecutor%s.h" % action_name, 'w')
00061 f.write(str(header_template))
00062 f.close()
00063
00064 cpp_template = Template(file=os.path.join(tmpl_dir, cpp_tmpl_name),
00065 searchList=[{'PACKAGE' : action_pkg,
00066 'ACTION' : action_name,
00067 'ACTION_CAPS' : action_caps,
00068 'ACTION_UNDERSCORED' : action_underscored,
00069 'NAMESPACE' : namespace}])
00070 f = file("actionExecutor%s.cpp" % action_name, 'w')
00071 f.write(str(cpp_template))
00072 f.close()
00073