def test_log(mock_stdout): Logger.log(Level.HEADER, 'message') mock_stdout.assert_called_once_with('{}{}{}'.format( Level.HEADER, 'message', Level.END, ))
def install(options): with io.open(options['conf'], 'r') as f: packages = yaml.load(f) for package in packages.keys(): if options['prompt']: Logger.header('\nInstall {} (Y/n)? '.format(package)) if input().strip().lower() == 'n': continue else: Logger.header('\nInstalling {}\n'.format(package)) data = parser.parse_data(packages[package], package) for plugin in plugins: plugin.execute(options, data, pkg_manager)
def execute(self, options, data, pkg_manager): if data['clean']: folders = set() for link_location in data['linkLocations']: for pattern, dest_path in link_location.items(): location = path.expand_path(dest_path) folders.add(location) for folder in folders: for pattern in ['.*', '*']: for filename in glob.iglob(os.path.join(folder, pattern)): if path.is_broken_symlink(filename): path.clean(filename) Logger.info( "Removed broken symlink: '{}'\n".format( filename), )
def parse_data(package, package_name): ret = { 'linkLocations': [], 'overwrite': True, 'clean': True, 'prelink': [], 'postlink': [], 'dependencies': [], 'symlinkedFiles': set(), 'package': package_name, } if 'link' not in package: Logger.error('No link attribute set.\n') exit(1) elif isinstance(package['link'], list): ret['linkLocations'] = package['link'] else: ret['linkLocations'] = [ { '*': package['link'] }, { '.*': package['link'] }, ] if 'overwrite' in package: ret['overwrite'] = package['overwrite'] if 'prelink' in package: ret['prelink'] = package['prelink'] if 'postlink' in package: ret['postlink'] = package['postlink'] if 'dependencies' in package: ret['dependencies'] = package['dependencies'] if 'clean' in package: ret['clean'] = package['clean'] return ret
def install(self, dependency): if self._is_installed(dependency): Logger.info("'{}' is already installed.\n".format(dependency, )) elif self._install(dependency): Logger.success("'{}' has been successfully installed.\n".format( dependency, )) else: Logger.error("'{}' could not be installed.\n".format(dependency, ))
def execute(self, options, data, pkg_manager): if not options['update']: for script in data['prelink']: Logger.info('prelink: ' + script + '\n') subprocess.call(script, shell=True)
def test_header(mock_log): Logger.header('message') mock_log.assert_called_once_with(Level.HEADER, 'message')
def test_info(mock_log): Logger.info('message') mock_log.assert_called_once_with(Level.INFO, 'message')
def test_success(mock_log): Logger.success('message') mock_log.assert_called_once_with(Level.SUCCESS, 'message')
def test_warning(mock_log): Logger.warning('message') mock_log.assert_called_once_with(Level.WARNING, 'message')
def test_error(mock_log): Logger.error('message') mock_log.assert_called_once_with(Level.ERROR, 'message')
def test_normal(mock_log): Logger.normal('message') mock_log.assert_called_once_with(Level.NORMAL, 'message')