Source code for ladybug_rhino.versioning.release
"""Functions specific to stable releases like changing component versions."""
[docs]
def update_component_version(components, version, year=None):
"""Update the version number and copyright year for a list of components.
Args:
components: A list of Grasshopper component objects which will have
their version updated. Typically, this should be the output of the
place_plugin_components method from ladybug_rhino.versioning.gather.
version: Text for the version of the components to update.
year: Text for the copyright year to update.
Returns:
A list of Ladybug Tools component objects that have had their version
and copyright year updated.
"""
new_components = []
for comp_obj in components:
try:
# get the code from inside the component
in_code = comp_obj.Code.split("\n")
code_length = len(in_code)
out_code = ''
# loop through the lines of code and replace the version + copyright
for line_count, line in enumerate(in_code):
# replace the mesage and copyright lines
if line.startswith('ghenv.Component.Message'):
line = "ghenv.Component.Message = '{}'".format(version)
elif line.startswith('# Copyright (c) ') and year is not None:
line = '# Copyright (c) {}, Ladybug Tools.'.format(year)
# append the code to the output lines
if line_count != code_length - 1:
out_code += line + "\n"
else:
out_code += line
comp_obj.Code = out_code # replace the old code with updated code
new_components.append(comp_obj)
except Exception: # not a Ladybug Tools component
print('Failed to update version in "{}".'.format(comp_obj.Name))
return new_components