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, )
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)
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()
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()
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()
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')
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()