pyroma / pyroma / __init__.py

import sys
import os
from pyroma import projectdata, distributiondata, pypidata, ratings

import logging
logging.basicConfig(level=logging.DEBUG, stream=sys.stdout, format="%(message)s")

def zester(data):
    main_files = os.listdir(data['workingdir'])
    if 'setup.py' not in main_files and 'setup.cfg' not in main_files:
        return
    
    from zest.releaser.utils import ask
    if ask("Run pyroma on the package before tagging?"):
        result = run(data['workingdir'])
        if result != 9:
            if not ask("Continue?"):
                sys.exit(1)


def run(argument):
    logging.info('-'*30)
    logging.info('Checking ' + argument)
    
    if os.path.isdir(argument):
        data = projectdata.get_data(os.path.abspath(argument))
        logging.info('Found ' + data.get('name', 'nothing'))
    
    elif os.path.isfile(argument):
        data = distributiondata.get_data(os.path.abspath(argument))
        logging.info('Found ' + data.get('name', 'nothing'))
        
    else:
        # It's probably a package name
        data = pypidata.get_data(argument)
        logging.info('Found ' + data.get('name', 'nothing'))
    rating = ratings.rate(data)
        
    logging.info('-'*30)
    for problem in rating[1]:
        # XXX It would be nice with a * pointlist instead, but that requires
        # that we know how wide the terminal is and nice word-breaks, so that's
        # for later.
        logging.info(problem)
    if rating[1]:
        logging.info('-'*30)
    logging.info('Final rating: ' + str(rating[0]) + '/10')
    logging.info(ratings.LEVELS[rating[0]])
    logging.info('-'*30)
    return rating[0]


def main():
    if len(sys.argv) < 2:
        logging.info("Usage: pyroma <project directory|file|project name>")
        sys.exit(1)

    run(sys.argv[1])
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.