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.')
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 == []
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]
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]
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]
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]