Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
elif level == 'W':
lvl_color = Color.Yellow
else:
lvl_color = Color.Bold
# raise the counters
self.score += badness
self.printed_messages[level] += 1
# compile the message
line = f'{package.current_linenum}:' if package.current_linenum else ''
arch = f'.{package.arch}' if package.arch else ''
bad_output = f' (Badness: {badness})' if badness else ''
detail_output = ''
for detail in details:
if detail:
detail_output += f' {detail}'
result = f'{Color.Bold}{filename}{arch}:{line}{Color.Reset} {lvl_color}{level}: {reason}{Color.Reset}'
result += bad_output
result += detail_output
self.results.append(result)
def _print_header(self):
"""
Print out header information about the state of the
rpmlint prior printing out the check report.
"""
intro = string_center('rpmlint session starts', '=')
print(f'{Color.Bold}{intro}{Color.Reset}')
print(f'rpmlint: {__version__}')
print('configuration:')
for config in self.config.conf_files:
print(f' {config}')
if self.options['rpmlintrc']:
rpmlintrc = self.options['rpmlintrc']
print(f'rpmlintrc: {rpmlintrc}')
no_checks = len(self.config.configuration['Checks'])
no_pkgs = len(self.options['installed']) + len(self.options['rpmfile'])
print(f'{Color.Bold}checks: {no_checks}, packages: {no_pkgs}{Color.Reset}')
print('')
print('')
def print_warning(message):
"""
Print warning message to stderr.
"""
print(f'{Color.Red}{message}{Color.Reset}', file=sys.stderr)
self.print_config()
return retcode
# just explain the error and abort too
if self.options['explain']:
self.print_explanation(self.options['explain'])
return retcode
# if there are installed arguments just load them up as extra
# items to the rpmfile option
if self.options['installed']:
self.validate_installed_packages(self._load_installed_rpms(self.options['installed']))
# if no exclusive option is passed then just loop over all the
# arguments that are supposed to be either rpm or spec files
self.validate_files(self.options['rpmfile'])
self._print_header()
print(self.output.print_results(self.output.results))
quit_color = Color.Bold
if self.output.printed_messages['W'] > 0:
quit_color = Color.Yellow
if self.output.badness_threshold > 0 and self.output.score > self.output.badness_threshold:
msg = string_center(f'Badness {self.output.score} exceeeds threshold {self.output.badness_threshold}, aborting.', '-')
print(f'{Color.Red}{msg}{Color.Reset}')
quit_color = Color.Red
retcode = 66
elif self.output.printed_messages['E'] > 0 and not self.config.permissive:
quit_color = Color.Red
retcode = 64
msg = string_center('{} packages and {} specfiles checked; {} errors, {} warnings'.format(self.packages_checked, self.specfiles_checked, self.output.printed_messages['E'], self.output.printed_messages['W']), '=')
print(f'{quit_color}{msg}{Color.Reset}')
return retcode
# if there are installed arguments just load them up as extra
# items to the rpmfile option
if self.options['installed']:
self.validate_installed_packages(self._load_installed_rpms(self.options['installed']))
# if no exclusive option is passed then just loop over all the
# arguments that are supposed to be either rpm or spec files
self.validate_files(self.options['rpmfile'])
self._print_header()
print(self.output.print_results(self.output.results))
quit_color = Color.Bold
if self.output.printed_messages['W'] > 0:
quit_color = Color.Yellow
if self.output.badness_threshold > 0 and self.output.score > self.output.badness_threshold:
msg = string_center(f'Badness {self.output.score} exceeeds threshold {self.output.badness_threshold}, aborting.', '-')
print(f'{Color.Red}{msg}{Color.Reset}')
quit_color = Color.Red
retcode = 66
elif self.output.printed_messages['E'] > 0 and not self.config.permissive:
quit_color = Color.Red
retcode = 64
msg = string_center('{} packages and {} specfiles checked; {} errors, {} warnings'.format(self.packages_checked, self.specfiles_checked, self.output.printed_messages['E'], self.output.printed_messages['W']), '=')
print(f'{quit_color}{msg}{Color.Reset}')
return retcode
badness = 0
if reason in self.badness:
badness = int(self.badness[reason])
# If we have any badness configured then we 'stricten' and call the
# result Error. Otherwise we downgrade the error to Warn.
if badness > 0:
level = 'E'
elif level == 'E':
level = 'W'
# allow strict reporting where we override levels and treat everything
# as an error
if self.strict:
level = 'E'
# set coloring
if level == 'E':
lvl_color = Color.Red
elif level == 'W':
lvl_color = Color.Yellow
else:
lvl_color = Color.Bold
# raise the counters
self.score += badness
self.printed_messages[level] += 1
# compile the message
line = f'{package.current_linenum}:' if package.current_linenum else ''
arch = f'.{package.arch}' if package.arch else ''
bad_output = f' (Badness: {badness})' if badness else ''
detail_output = ''
for detail in details:
if detail:
detail_output += f' {detail}'
result = f'{Color.Bold}{filename}{arch}:{line}{Color.Reset} {lvl_color}{level}: {reason}{Color.Reset}'