Exemplo n.º 1
0
def install_modules(args):
    matching_names = au.search_remote(*args.modules)
    if len(matching_names) > 1 and args.version is not None:
        sys.exit('Version filter cannot be applied to multiple modules')
    selected_install = {}
    for module_name in matching_names:
        remote_info = au.get_remote_module_info(module_name)
        if args.version is None:
            local_info = au.get_local_module_info(module_name)
            if local_info is not None:
                local_ver = local_info.version
                remote_ver = remote_info.latest_version
                if not args.force and LooseVersion(local_ver) >= LooseVersion(remote_ver):
                    print(f'{module_name}: latest is already installed. ({local_ver})')
                    continue
            selected_install[module_name] = remote_info.latest_version
        elif remote_info.has_version(args.version):
            selected_install[module_name] = args.version
        else:
            continue
    if args.private:
        if args.version is None:
            sys.exit('--include-private cannot be used without specifying a version using -v/--version')
        for module_name in args.modules:
            if au.module_exists_remote(module_name, version=args.version, private=True):
                selected_install[module_name] = args.version
    # Add dependencies of selected modules
    dep_install = {}
    if not args.skip_dependencies:
        for module_name, version in selected_install.items():
            deps = au.get_install_deps(module_name, version=version)
            dep_install.update(deps)
    # If overlap between selected modules and dependency modules, use the dependency version
    to_install = selected_install
    to_install.update(dep_install)
    if len(to_install) == 0:
        print('No modules to install found')
    else:
        print('Installing: {:}'\
                .format(', '.join([name+':'+version for name, version in sorted(to_install.items())]))
                )
        if not(args.yes):
            while True:
                resp = input('Proceed? (y/n) > ')
                if resp == 'y':
                    break
                if resp == 'n':
                    exit()
                else:
                    print('Your response (\'{:}\') was not one of the expected responses: y, n'.format(resp))
                    continue
        for module_name, module_version in sorted(to_install.items()):
            stage_handler = InstallProgressStdout(module_name, module_version)
            au.install_module(module_name,
                                version=module_version,
                                force_data=args.force_data,
                                stage_handler=stage_handler,
                                force=args.force,
                                skip_data=args.skip_data,
                                )
Exemplo n.º 2
0
def install_module (request):
    queries = request.rel_url.query
    module_name = queries['name']
    if 'version' in queries:
        module_version = queries['version'][0]
    else:
        module_version = None
    au.install_module(module_name, version=module_version)
    content = 'success'
    return web.Response(text=content)
Exemplo n.º 3
0
def fetch_install_queue (install_queue, install_state):
    while True:
        try:
            data = install_queue.get()
            au.mic.update_local()
            module_name = data['module']
            module_version = data['version']
            install_state['kill_signal'] = False
            stage_handler = InstallProgressMpDict(module_name, module_version, install_state)
            au.install_module(module_name, version=module_version, stage_handler=stage_handler, stages=100)
            au.mic.update_local()
            time.sleep(1)
        except:
            sys.exit()
Exemplo n.º 4
0
def install_from_queue(queue, install_state, mp_signaler):
    print('Crawler started at pid %d' %os.getpid())
    while True:
        try:
            module = queue.get()
            au.refresh_cache()
            module_name = module['name']
            module_version = module['version']
            print('Crawler is installing %s:%s' %(module_name, module_version))
            stage_handler = InstallProgressMpDict(module_name, module_version, install_state, mp_signaler)
            au.install_module(module_name, version=module_version, stage_handler=stage_handler, stages=100)
            au.refresh_cache()
        except KeyboardInterrupt:
            raise
        except:
            traceback.print_exc()
Exemplo n.º 5
0
def fetch_install_queue(install_queue, install_state, local_modules_changed):
    while True:
        try:
            data = install_queue.get()
            au.mic.update_local()
            module_name = data['module']
            module_version = data['version']
            install_state['kill_signal'] = False
            stage_handler = InstallProgressMpDict(module_name, module_version,
                                                  install_state)
            au.install_module(module_name,
                              version=module_version,
                              stage_handler=stage_handler,
                              stages=100)
            au.mic.update_local()
            local_modules_changed.set()
            time.sleep(1)
        except KeyboardInterrupt:
            sys.exit()
        except:
            traceback.print_exc()
            local_modules_changed.set()
Exemplo n.º 6
0
 def install_modules(args):
     matching_names = au.search_remote(*args.modules)
     if len(matching_names) > 1 and args.version is not None:
         print('WARNING: Version filter applied to all matching modules')
     to_install = {}
     for module_name in matching_names:
         remote_info = au.get_remote_module_info(module_name)
         if args.version is None:
             to_install[module_name] = remote_info.latest_version
         elif remote_info.has_version(args.version):
             to_install[module_name] = args.version
         else:
             continue
     if len(to_install) > 0:
         print('Installing: {:}'\
               .format(', '.join([name+':'+version for name, version in sorted(to_install.items())]))
               )
         if not (args.yes):
             while True:
                 resp = input('Proceed? (y/n) > ')
                 if resp == 'y':
                     break
                 if resp == 'n':
                     exit()
                 else:
                     print(
                         'Your response (\'{:}\') was not one of the expected responses: y, n'
                         .format(resp))
                     continue
         for module_name, module_version in sorted(to_install.items()):
             stage_handler = InstallProgressStdout(module_name,
                                                   module_version)
             au.install_module(module_name,
                               version=module_version,
                               force_data=args.force_data,
                               stage_handler=stage_handler)
     else:
         print('No modules found')
Exemplo n.º 7
0
def install_module(request):
    module = request.json()
    module_name = module['name']
    version = module['version']
    au.install_module(module_name, version=version, verbose=False)
    return web.Response()