예제 #1
0
파일: run.py 프로젝트: dstufft/distutils2
def _metadata(dispatcher, args, **kw):
    opts = _parse_args(args[1:], 'f:', [])
    if opts['args']:
        name = opts['args'][0]
        dist = get_distribution(name, use_egg_info=True)
        if dist is None:
            logger.warning('%r not installed', name)
            return 1
    elif os.path.isfile('setup.cfg'):
        logger.info('searching local dir for metadata')
        dist = Distribution()  # XXX use config module
        dist.parse_config_files()
    else:
        logger.warning('no argument given and no local setup.cfg found')
        return 1

    metadata = dist.metadata

    if 'f' in opts:
        keys = (k for k in opts['f'] if k in metadata)
    else:
        keys = metadata.keys()

    for key in keys:
        if key in metadata:
            print metadata._convert_name(key) + ':'
            value = metadata[key]
            if isinstance(value, list):
                for v in value:
                    print '   ', v
            else:
                print '   ', value.replace('\n', '\n    ')
예제 #2
0
파일: run.py 프로젝트: dstufft/distutils2
def _run(dispatcher, args, **kw):
    parser = dispatcher.parser
    args = args[1:]

    # Find and parse the config file(s): they will override options from
    # the setup script, but be overridden by the command line.
    # XXX call the functions from config and kill the Distribution class
    # (merging it into Dispatcher)
    dist = Distribution()
    dist.parse_config_files()

    commands = STANDARD_COMMANDS  # FIXME display extra commands

    if args == ['--list-commands']:
        print 'List of available commands:'
        for cmd in commands:
            cls = dispatcher.cmdclass.get(cmd) or get_command_class(cmd)
            desc = getattr(cls, 'description', '(no description available)')
            print '  %s: %s' % (cmd, desc)
        return

    while args:
        args = dispatcher._parse_command_opts(parser, args)
        if args is None:
            return

    for cmd in dispatcher.commands:
        # FIXME need to catch MetadataMissingError here (from the check command
        # e.g.)--or catch any exception, print an error message and exit with 1
        dist.run_command(cmd, dispatcher.command_options[cmd])

    return 0
예제 #3
0
    def test_cfg_to_args(self):
        opts = {'description-file': 'README', 'extra-files': '',
                'setup-hooks': 'distutils2.tests.test_config.version_hook'}
        self.write_file('setup.cfg', SETUP_CFG % opts, encoding='utf-8')
        self.write_file('README', 'loooong description')

        args = cfg_to_args()
        # use Distribution to get the contents of the setup.cfg file
        dist = Distribution()
        dist.parse_config_files()
        metadata = dist.metadata

        self.assertEqual(args['name'], metadata['Name'])
        # + .dev1 because the test SETUP_CFG also tests a hook function in
        # test_config.py for appending to the version string
        self.assertEqual(args['version'] + '.dev1', metadata['Version'])
        self.assertEqual(args['author'], metadata['Author'])
        self.assertEqual(args['author_email'], metadata['Author-Email'])
        self.assertEqual(args['maintainer'], metadata['Maintainer'])
        self.assertEqual(args['maintainer_email'],
                         metadata['Maintainer-Email'])
        self.assertEqual(args['description'], metadata['Summary'])
        self.assertEqual(args['long_description'], metadata['Description'])
        self.assertEqual(args['classifiers'], metadata['Classifier'])
        self.assertEqual(args['requires'], metadata['Requires-Dist'])
        self.assertEqual(args['provides'], metadata['Provides-Dist'])

        self.assertEqual(args['package_dir'].get(''), dist.package_dir)
        self.assertEqual(args['packages'], dist.packages)
        self.assertEqual(args['scripts'], dist.scripts)
        self.assertEqual(args['py_modules'], dist.py_modules)
예제 #4
0
def _run(dispatcher, args, **kw):
    parser = dispatcher.parser
    args = args[1:]

    # Find and parse the config file(s): they will override options from
    # the setup script, but be overridden by the command line.
    # XXX call the functions from config and kill the Distribution class
    # (merging it into Dispatcher)
    dist = Distribution()
    dist.parse_config_files()

    commands = STANDARD_COMMANDS  # FIXME display extra commands

    if args == ['--list-commands']:
        print('List of available commands:')
        for cmd in commands:
            cls = dispatcher.cmdclass.get(cmd) or get_command_class(cmd)
            desc = getattr(cls, 'description', '(no description available)')
            print('  %s: %s' % (cmd, desc))
        return

    while args:
        args = dispatcher._parse_command_opts(parser, args)
        if args is None:
            return

    for cmd in dispatcher.commands:
        # FIXME need to catch MetadataMissingError here (from the check command
        # e.g.)--or catch any exception, print an error message and exit with 1
        dist.run_command(cmd, dispatcher.command_options[cmd])

    return 0
예제 #5
0
def _metadata(dispatcher, args, **kw):
    opts = _parse_args(args[1:], 'f:', [])
    if opts['args']:
        name = opts['args'][0]
        dist = get_distribution(name, use_egg_info=True)
        if dist is None:
            logger.warning('%r not installed', name)
            return 1
    elif os.path.isfile('setup.cfg'):
        logger.info('searching local dir for metadata')
        dist = Distribution()  # XXX use config module
        dist.parse_config_files()
    else:
        logger.warning('no argument given and no local setup.cfg found')
        return 1

    metadata = dist.metadata

    if 'f' in opts:
        keys = (k for k in opts['f'] if k in metadata)
    else:
        keys = metadata.keys()

    for key in keys:
        if key in metadata:
            print(metadata._convert_name(key) + ':')
            value = metadata[key]
            if isinstance(value, list):
                for v in value:
                    print('   ', v)
            else:
                print('   ', value.replace('\n', '\n    '))
예제 #6
0
def _run_packaging_install(path, dest):
    # XXX check for a valid setup.cfg?
    dist = Distribution()
    dist.parse_config_files()
    try:
        dist.run_command('install_dist', {'prefix': (None, dest)})
        name = dist.metadata['Name']
        return database.get_distribution(name) is not None
    except (IOError, os.error, PackagingError, CCompilerError) as msg:
        raise ValueError("Failed to install, " + str(msg))
예제 #7
0
def _run_packaging_install(path, dest):
    # XXX check for a valid setup.cfg?
    dist = Distribution()
    dist.parse_config_files()
    try:
        dist.run_command('install_dist', {'prefix': (None, dest)})
        name = dist.metadata['Name']
        return database.get_distribution(name) is not None
    except (IOError, os.error, PackagingError, CCompilerError), msg:
        raise ValueError("Failed to install, " + str(msg))
예제 #8
0
 def get_dist(self):
     dist = Distribution()
     dist.parse_config_files()
     return dist
예제 #9
0
 def get_dist(self):
     dist = Distribution()
     dist.parse_config_files()
     return dist