misc.py
Go to the documentation of this file.
1 import os
2 import re
3 import yaml
4 
5 from ros_introspection.rviz_config import dictionary_subtract
6 from ros_introspection.util import get_sibling_packages
7 
8 from .util import PKG_PATH, make_executable, roscompile
9 
10 MAINPAGE_S = r'/\*\*\s+\\mainpage\s+\\htmlinclude manifest.html\s+\\b %s\s+<!--\s+' + \
11  r'Provide an overview of your package.\s+-->\s+-->\s+[^\*]*\*/'
12 
13 RVIZ_CLASS_DEFAULTS = yaml.safe_load(open(PKG_PATH + '/data/rviz_class_defaults.yaml'))
14 RVIZ_GLOBAL_DEFAULTS = yaml.safe_load(open(PKG_PATH + '/data/rviz_global_defaults.yaml'))
15 ROBOT_MODEL_LINK_DEFAULTS = {'Alpha': 1, 'Show Axes': False, 'Show Trail': False, 'Value': True}
16 
17 
18 @roscompile
20  cfgs = package.dynamic_reconfigs
21  if len(cfgs) == 0:
22  return
23  pkg_list = {'dynamic_reconfigure'}
24  package.manifest.add_packages(pkg_list, pkg_list)
25  package.cmake.section_check(cfgs, 'generate_dynamic_reconfigure_options', '')
26  package.cmake.section_check(pkg_list, 'find_package', 'COMPONENTS')
27 
28  for fn in cfgs:
29  make_executable(os.path.join(package.root, fn))
30 
31 
32 @roscompile
33 def remove_useless_files(package):
34  mainpage_pattern = re.compile(MAINPAGE_S % package.name)
35  for fn in package.misc_files:
36  if 'mainpage.dox' in fn:
37  full_path = os.path.join(package.root, fn)
38  s = open(full_path).read()
39  if mainpage_pattern.match(s):
40  os.remove(full_path)
41 
42 
43 @roscompile
44 def update_metapackage(package, sibling_packages=None, require_matching_name=False):
45  # Check if there is indication in package.xml or CMake of being a metapackage
46  if not package.is_metapackage():
47  return False
48 
49  if require_matching_name:
50  parent_path = os.path.abspath(os.path.join(package.root, '..'))
51 
52  if os.path.split(parent_path)[1] != package.name:
53  return False
54 
55  if sibling_packages is None:
56  sibling_packages = get_sibling_packages(package)
57 
58  existing_sub_packages = package.manifest.get_packages('run')
59  package.manifest.add_packages(set(), sibling_packages, prefer_depend_tag=False)
60 
61  if package.manifest.format == 1:
62  pkg_type = 'run_depend'
63  else:
64  pkg_type = 'exec_depend'
65 
66  package.manifest.remove_dependencies(pkg_type, existing_sub_packages - sibling_packages)
67 
68  # Ensure proper commands in CMake
69  package.cmake.section_check([], 'catkin_metapackage', zero_okay=True)
70 
71  # Ensure proper tags in package.xml
72  if not package.manifest.is_metapackage():
73  export_tag = package.manifest.get_export_tag()
74  meta_tag = package.manifest.tree.createElement('metapackage')
75  package.manifest.insert_new_tag_inside_another(export_tag, meta_tag)
76 
77 
78 @roscompile
79 def misc_xml_formatting(package):
80  package.manifest.changed = True
81  for config in package.plugin_configs:
82  config.changed = True
83 
84 
85 @roscompile
86 def clean_up_rviz_configs(package):
87  for rviz_config in package.rviz_configs:
88  for config in rviz_config.get_class_dicts():
89  the_defaults = RVIZ_CLASS_DEFAULTS.get(config['Class'], {})
90  if dictionary_subtract(config, the_defaults):
91  rviz_config.changed = True
92 
93  # Special Case(s)
94  if config['Class'] == 'rviz_default_plugins/RobotModel':
95  for k, v in list(config.get('Links', {}).items()):
96  if not isinstance(v, dict):
97  continue
98  if dictionary_subtract(config['Links'][k], ROBOT_MODEL_LINK_DEFAULTS):
99  rviz_config.changed = True
100  if not config['Links'][k]:
101  del config['Links'][k]
102 
103  if config['Class'] == 'rviz/Camera' and 'Visibility' in config:
104  visibility = config['Visibility']
105  for key in list(visibility.keys()):
106  if visibility[key]:
107  rviz_config.changed = True
108  del visibility[key]
109  if not visibility:
110  del config['Visibility']
111  if dictionary_subtract(rviz_config.contents, RVIZ_GLOBAL_DEFAULTS):
112  rviz_config.changed = True
ros_introspection::util
roscompile.util.make_executable
def make_executable(fn)
Definition: util.py:47
roscompile.misc.update_metapackage
def update_metapackage(package, sibling_packages=None, require_matching_name=False)
Definition: misc.py:44
roscompile.misc.misc_xml_formatting
def misc_xml_formatting(package)
Definition: misc.py:79
roscompile.misc.clean_up_rviz_configs
def clean_up_rviz_configs(package)
Definition: misc.py:86
ros_introspection::rviz_config
roscompile.misc.remove_useless_files
def remove_useless_files(package)
Definition: misc.py:33
roscompile.misc.check_dynamic_reconfigure
def check_dynamic_reconfigure(package)
Definition: misc.py:19


roscompile
Author(s):
autogenerated on Tue Jun 21 2022 03:01:39