示例#1
0
def _pearl(pearl_env: PearlEnvironment, args):
    command = PearlCommand.from_string(args.command)
    if hasattr(args, 'packages'):
        args.packages = _extract_packages(pearl_env, command, args)

    if command == PearlCommand.INIT:
        syst.init_pearl(pearl_env, args)
    elif command == PearlCommand.INSTALL:
        pack.install_packages(pearl_env, args)
    elif command == PearlCommand.UPDATE:
        if not args.packages:
            syst.update_pearl(pearl_env, args)
        else:
            pack.update_packages(pearl_env, args)
    elif command == PearlCommand.REMOVE:
        if not args.packages:
            syst.remove_pearl(pearl_env, args)
        else:
            pack.remove_packages(pearl_env, args)
    elif command == PearlCommand.EMERGE:
        pack.emerge_packages(pearl_env, args)
    elif command == PearlCommand.INFO:
        pack.info_packages(pearl_env, args)
    elif command == PearlCommand.LIST:
        pack.list_packages(pearl_env, args)
    elif command == PearlCommand.SEARCH:
        pack.list_packages(pearl_env, args)
    elif command == PearlCommand.CREATE:
        pack.create_package(pearl_env, args)
    else:
        raise ValueError(
            'No command specified. Run "pearl --help" for list of commands.')
示例#2
0
def test_list_packages_not_matching(tmp_path):
    home_dir = create_pearl_home(tmp_path)
    (home_dir / 'packages/repo-test/pkg-a-test').mkdir(parents=True)

    pearl_env = mock.Mock()
    pearl_env.packages = {
        'repo-test': {
            'pkg-a-test': Package(home_dir, 'repo-test', 'pkg-a-test', 'url', 'descr'),
            'pkg-b-test': Package(home_dir, 'repo-test', 'pkg-b-test', 'url', 'descr'),
        }
    }
    result = list_packages(pearl_env, PackageArgs(pattern='pkg2'))
    assert result == []
示例#3
0
def test_list_packages_match_keyword(tmp_path):
    home_dir = create_pearl_home(tmp_path)
    (home_dir / 'packages/repo-test/pkg-a-test').mkdir(parents=True)

    pearl_env = mock.Mock()
    pearl_env.packages = {
        'repo-test': {
            'pkg-a-test': Package(home_dir, 'repo-test', 'pkg-a-test', 'url', 'descr', keywords=('pkg', 'pkg-manager')),
            'pkg-b-test': Package(home_dir, 'repo-test', 'pkg-b-test', 'url', 'descr', keywords=('pkg',)),
        }
    }
    result = list_packages(pearl_env, PackageArgs(pattern='pkg-manager'))
    assert ['pkg-a-test'] == [pkg.name for pkg in result]
示例#4
0
def test_list_packages_installed_only(tmp_path):
    home_dir = create_pearl_home(tmp_path)
    (home_dir / 'packages/repo-test/pkg-a-test').mkdir(parents=True)

    pearl_env = mock.Mock()
    pearl_env.packages = {
        'repo-test': {
            'pkg-a-test': Package(home_dir, 'repo-test', 'pkg-a-test', 'url', 'descr'),
            'pkg-b-test': Package(home_dir, 'repo-test', 'pkg-b-test', 'url', 'descr'),
        }
    }
    result = list_packages(pearl_env, PackageArgs(pattern='pkg', installed_only=True))
    assert ['pkg-a-test'] == [pkg.name for pkg in result]
示例#5
0
def test_list_packages(tmp_path):
    home_dir = create_pearl_home(tmp_path)
    (home_dir / 'packages/repo-test/pkg-a-test').mkdir(parents=True)

    pearl_env = mock.Mock()
    pearl_env.packages = {
        'repo-test': {
            'pkg-a-test': Package(home_dir, 'repo-test', 'pkg-a-test', 'url', 'descr'),
            'pkg-b-test': Package(home_dir, 'repo-test', 'pkg-b-test', 'url', 'descr'),
        }
    }
    result = list_packages(pearl_env, PackageArgs(pattern='pkg'))
    assert len(result) == 2
    assert 'pkg-a-test' in [pkg.name for pkg in result]
    assert 'pkg-b-test' in [pkg.name for pkg in result]
示例#6
0
def test_list_packages_dependency_tree(tmp_path):
    home_dir = create_pearl_home(tmp_path)
    (home_dir / 'packages/repo-test/pkg-a-test').mkdir(parents=True)

    pearl_env = mock.Mock()
    pkg_a = Package(home_dir, 'repo-test', 'pkg-a-test', 'url', 'descr')
    pkg_b = Package(home_dir, 'repo-test', 'pkg-b-test', 'url', 'descr', depends=(pkg_a,))
    pkg_c = Package(home_dir, 'repo-test', 'pkg-c-test', 'url', 'descr', depends=(pkg_b,))
    pearl_env.packages = {
        'repo-test': {
            'pkg-a-test': pkg_a,
            'pkg-b-test': pkg_b,
            'pkg-c-test': pkg_c,
        }
    }
    result = list_packages(pearl_env, PackageArgs(pattern='pkg', dependency_tree=True))
    assert ['pkg-a-test', 'pkg-b-test', 'pkg-c-test'] == [pkg.name for pkg in result]