Esempio n. 1
0
def test_log(mock_stdout):
    Logger.log(Level.HEADER, 'message')
    mock_stdout.assert_called_once_with('{}{}{}'.format(
        Level.HEADER,
        'message',
        Level.END,
    ))
Esempio n. 2
0
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)
Esempio n. 3
0
    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), )
Esempio n. 4
0
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
Esempio n. 5
0
 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, ))
Esempio n. 6
0
 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)
Esempio n. 7
0
def test_header(mock_log):
    Logger.header('message')
    mock_log.assert_called_once_with(Level.HEADER, 'message')
Esempio n. 8
0
def test_info(mock_log):
    Logger.info('message')
    mock_log.assert_called_once_with(Level.INFO, 'message')
Esempio n. 9
0
def test_success(mock_log):
    Logger.success('message')
    mock_log.assert_called_once_with(Level.SUCCESS, 'message')
Esempio n. 10
0
def test_warning(mock_log):
    Logger.warning('message')
    mock_log.assert_called_once_with(Level.WARNING, 'message')
Esempio n. 11
0
def test_error(mock_log):
    Logger.error('message')
    mock_log.assert_called_once_with(Level.ERROR, 'message')
Esempio n. 12
0
def test_normal(mock_log):
    Logger.normal('message')
    mock_log.assert_called_once_with(Level.NORMAL, 'message')