def _insert_changelog_entry(self, message): """Insert changelog entry.""" if self.data['history_file'] is None: return insert = self.data['history_insert_line_here'] # Hopefully the inserted data matches the existing encoding. orig_encoding = self.data['history_encoding'] try: message.encode(orig_encoding) except UnicodeEncodeError: logger.warning( 'Changelog entry does not have the same encoding (%s) as ' 'the existing file. This might give problems.', orig_encoding ) config = self.setup_cfg.config fallback_encodings = [] if config.has_option('zest.releaser', 'encoding'): encoding = config.get('zest.releaser', 'encoding') if encoding != orig_encoding: fallback_encodings.append(encoding) encoding = 'utf-8' if encoding != orig_encoding: fallback_encodings.append(encoding) for encoding in fallback_encodings: try: # Note: we do not change the message at this point, # we only check if an encoding can work. message.encode(encoding) except UnicodeEncodeError: # Let's continue. There might be a chance that it works. logger.warning( 'Changelog entry is also not %s. ', encoding) else: logger.debug('Forcing new history_encoding %s', encoding) self.data['history_encoding'] = encoding break else: logger.warning( 'No correct encoding could be determined for writing. ' 'This will probably fail in a moment.' ) lines = [] prefix = utils.get_list_item(self.data['history_lines']) for index, line in enumerate(message.splitlines()): if index == 0: line = '{} {}'.format(prefix, line) else: line = '{} {}'.format(' ' * len(prefix), line) lines.append(line) lines.append('') self.data['history_lines'][insert:insert] = lines
def _insert_changelog_entry(self, message): """Insert changelog entry.""" if self.data['history_file'] is None: return insert = self.data['history_insert_line_here'] lines = [] prefix = utils.get_list_item(self.data['history_lines']) for index, line in enumerate(message.splitlines()): if index == 0: line = '{} {}'.format(prefix, line) else: line = '{} {}'.format(' ' * len(prefix), line) lines.append(line) lines.append('') self.data['history_lines'][insert:insert] = lines