Exemple #1
0
    def get_license_parser(self, vague=False):
        '''Get license parser with definitions obtained from a given directory
        :param path: License definitions directory
        '''
        conf_path = helper.path(get_dir(helper.prepend_cwd(config.METADATA_DIR)))
        text_path = helper.path(get_dir(helper.prepend_cwd(config.DEFINITIONS_DIR)))

        (licenses, keywords) = self.get_all_licenses_and_keywords(conf_path, text_path)
        logger.info('Loaded {} licenses'.format(len(licenses)))
        return LicenseParser(keywords, licenses, vague)
Exemple #2
0
def get_license_parser(path, vague):
    logger.info("Loading license definitions:")
    parser = None
    try:
        parser = loaders.MainLicenseLoader().get_license_parser(vague)
        logger.debug('Keywords selected: {}'.format(' '.join(parser.file_locations.keys())))
    except OSError as e:
        logger.error("Loading licenses failed with this error: {0}".format(str(e)))
        sys.exit(1)
    logger.debug([f.short_name for f in parser.licenses])
    return parser
Exemple #3
0
def get_project(paths):
    if not paths:
        logger.error("You must specify files to be analysed")
        sys.exit(1)
    project = None
    try:
        logger.info("Loading project")
        if isinstance(paths, str): paths = [paths]
        project = loaders.ProjectLoader.load_project(list(map(helper.path, paths)))
        logger.info("Loading complete, {0} files loaded.".format(len(project.files)))
        return project
    except Exception as e:
        logger.error("Loading project failed with this error: {0}".format(str(e)))
        sys.exit(1)
Exemple #4
0
def run():
    args = argument.construct_argparser().parse_args() # Parse arguments
    argument.handle_args(args)

    logger.print_splash() # Header output

    parser = workflow.get_license_parser(get_dir(config.DEFINITIONS_DIR), vague=args.vague)
    project = workflow.get_project(args.file_list)

    project.licenses, project.online_result = workflow.get_projects_licenses(args, parser, project.files)
    logger.info('Found licenses: {}'.format(', '.join([l.name for l in project.licenses])))
    workflow.display_results(args, project)

    if args.detect_problems:
        workflow.detect_problems(project)
Exemple #5
0
def get_projects_licenses(args, parser, filelist):
    licenses_found = set()
    queried_online = dict()
    for f in filelist:
        if args.query_online and f.error_unpacking:
            try:
                logger.info('Querying online {}'.format(f.path))
                query = online.Query.query(f.path, parser.licenses)
                f.licenses = query.licenses
                queried_online[f] = query
            except Exception as e:
                logger.error('Can not connect to server {}'.format(str(e)))
        else:
            try:
                logger.info("Processing {}".format(f.path))
                f.licenses = parser.get_licenses(f.path)
            except UnicodeDecodeError:
                f.error_reading = True
                logger.error("Error reading {}".format(f.path))
        licenses_found |= set(f.licenses)
    return licenses_found, queried_online