class ReviewHelper(object): def __init__(self): self.bug = None self.checks = None self.log = Settings.get_logger() self.verbose = False self.outfile = None self.prebuilt = False def __download_sources(self): sources = self.checks.spec.get_sources('Source') self.sources = Sources(self.checks.spec) self.sources.extract_all() return True def __do_report(self): ''' Create a review report''' self.log.info('Getting .spec and .srpm Urls from : ' + self.bug.get_location()) Settings.dump() if not self.bug.find_urls(): self.log.error('Cannot find .spec or .srpm URL(s)') raise HandledError() if not ReviewDirs.is_inited: wd = self.bug.get_dirname() ReviewDirs.workdir_setup(wd) if not self.bug.download_files(): self.log.error('Cannot download .spec and .srpm') raise HandledError() Settings.name = self.bug.get_name() self.__run_checks(self.bug.spec_file, self.bug.srpm_file) def __list_checks(self): """ List all the checks available. """ ChecksLister().list() def __print_version(self): print('fedora-review version ' + __version__ + ' ' + build_full) def __run_checks(self, spec, srpm): self.checks = Checks(spec, srpm) if Settings.no_report: self.outfile = '/dev/null' else: self.outfile = ReviewDirs.report_path(self.checks.spec.name) with open(self.outfile, "w") as output: if Settings.nobuild: self.checks.srpm.is_build = True self.log.info('Running checks and generate report\n') self.checks.run_checks(output=output, writedown=not Settings.no_report) output.close() if not os.path.exists('BUILD'): os.symlink(Mock.get_builddir('BUILD'), 'BUILD') if not Settings.no_report: print "Review in: " + self.outfile def run(self): self.log.debug("Command line: " + ' '.join(sys.argv)) try: Settings.init() make_report = True if Settings.list_checks: self.__list_checks() make_report = False elif Settings.version: self.__print_version() make_report = False elif Settings.url: self.log.info("Processing bug on url: " + Settings.url) self.bug = UrlBug(Settings.url) elif Settings.bug: self.log.info("Processing bugzilla bug: " + Settings.bug) self.bug = BugzillaBug(Settings.bug, user=Settings.user) elif Settings.name: self.log.info("Processing local files: " + Settings.name) self.bug = NameBug(Settings.name) if make_report: self.__do_report() return 0 except BugException as err: print str(err) return 2 except HandledError as err: print str(err) return 2 except SettingsError as err: self.log.error("Incompatible settings: " + str(err)) return 2 except ReviewDirExistsError as err: print("The directory %s is in the way, please remove." % err.value) return 4 except CleanExitError as err: self.log.debug('Processing CleanExit') return 2 except: self.log.debug("Exception down the road...", exc_info=True) self.log.error("Exception down the road...") return 1 return 0
class ReviewHelper(object): def __init__(self): self.bug = None self.checks = None self.log = Settings.get_logger() self.verbose = False self.outfile = None self.prebuilt = False def __download_sources(self): sources = self.checks.spec.get_sources('Source') self.sources = Sources(self.checks.spec) self.sources.extract_all() return True def __do_report(self): ''' Create a review report''' self.log.info('Getting .spec and .srpm Urls from : ' + self.bug.get_location()) Settings.dump() if not self.bug.find_urls(): self.log.error( 'Cannot find .spec or .srpm URL(s)') raise HandledError() if not ReviewDirs.is_inited: wd = self.bug.get_dirname() ReviewDirs.workdir_setup(wd) if not self.bug.download_files(): self.log.error('Cannot download .spec and .srpm') raise HandledError() Settings.name = self.bug.get_name() self.__run_checks(self.bug.spec_file, self.bug.srpm_file) def __list_checks(self): """ List all the checks available. """ ChecksLister().list() def __print_version(self): print('fedora-review version ' + __version__ + ' ' + build_full) def __run_checks(self, spec, srpm): self.checks = Checks(spec, srpm ) if Settings.no_report: self.outfile = '/dev/null' else: self.outfile = ReviewDirs.report_path(self.checks.spec.name) with open(self.outfile,"w") as output: if Settings.nobuild: self.checks.srpm.is_build = True self.log.info('Running checks and generate report\n') self.checks.run_checks(output=output, writedown=not Settings.no_report) output.close() if not os.path.exists('BUILD'): os.symlink(Mock.get_builddir('BUILD'), 'BUILD') if not Settings.no_report: print "Review in: " + self.outfile def run(self): self.log.debug( "Command line: " + ' '.join(sys.argv)) try: Settings.init() make_report = True if Settings.list_checks: self.__list_checks() make_report = False elif Settings.version: self.__print_version() make_report = False elif Settings.url: self.log.info("Processing bug on url: " + Settings.url ) self.bug = UrlBug(Settings.url) elif Settings.bug: self.log.info("Processing bugzilla bug: " + Settings.bug ) self.bug = BugzillaBug(Settings.bug, user=Settings.user) elif Settings.name: self.log.info("Processing local files: " + Settings.name ) self.bug = NameBug(Settings.name) if make_report: self.__do_report() return 0 except BugException as err: print str(err) return 2 except HandledError as err: print str(err) return 2 except SettingsError as err: self.log.error("Incompatible settings: " + str(err)) return 2 except ReviewDirExistsError as err: print("The directory %s is in the way, please remove." % err.value) return 4 except CleanExitError as err: self.log.debug('Processing CleanExit') return 2 except: self.log.debug("Exception down the road...", exc_info=True) self.log.error("Exception down the road...") return 1 return 0