예제 #1
0
def get_available_packages():
    """Get available packages and update packages list if it is not done

    Returns:
        list(package.AvailablePackage): The list of available packages
    """
    try:
        available_packages = package.get_available_packages()
    except:
        update_index()
        available_packages = package.get_available_packages()

    return available_packages
예제 #2
0
 def get_packages(self):
     if self.table_content == self.TableContent.AVAILABLE:
         return package.get_available_packages()
     elif self.table_content == self.TableContent.INSTALLED:
         return package.get_installed_packages()
     else:
         raise Exception("Invalid table content")
예제 #3
0
def search_packages(args):
    """Display packages from remote index."""
    available_packages = package.get_available_packages()
    for pkg in available_packages:
        if args.from_lang and args.from_lang != pkg.from_code:
            continue
        if args.to_lang and args.to_lang != pkg.to_code:
            continue
        print("{0}: {1.from_code} -> {1.to_code}".format(
            package.argospm_package_name(pkg), pkg))
예제 #4
0
def main():
    commands = ['update', 'install', 'list', 'remove']

    # Parse args
    parser = argparse.ArgumentParser()
    parser.add_argument('command', help=', '.join(commands))
    parser.add_argument('argument', nargs='?', help='Argument for command')
    args = parser.parse_args()

    # Parse command
    command = args.command
    if command not in commands:
        print(f'Unrecognized command {args.command}')
        print(f'Valid commands {commands}')
        exit(1)

    if command == 'update':
        package.update_package_index()

    elif command == 'install':
        available_packages = package.get_available_packages()
        package_name = args.argument
        package_found = False
        for available_package in available_packages:
            name = name_of_package(available_package)
            if name == package_name:
                download_path = available_package.download()
                package.install_from_path(download_path)
                print(f'Installed package to path {download_path}')
                package_found = True
                break
        if not package_found:
            print('Package not found')

    elif command == 'list':
        installed_packages = package.get_installed_packages()
        for installed_package in installed_packages:
            print(name_of_package(installed_package))

    elif command == 'remove':
        installed_packages = package.get_installed_packages()
        package_name = args.argument
        package_found = False
        for installed_package in installed_packages:
            name = name_of_package(installed_package)
            if name == package_name:
                installed_package.remove()
                print(f'Removed package {name}')
                package_found = True
                break
        if not package_found:
            print('Package not found')
예제 #5
0
def install_package(args):
    """Install package."""
    available_packages = package.get_available_packages()
    package_name = args.name
    for available_package in available_packages:
        name = package.argospm_package_name(available_package)
        if name == package_name:
            download_path = available_package.download()
            package.install_from_path(download_path)
            print(f"Installed package to path {download_path}")
            break
    else:
        print("Package not found")
예제 #6
0
    def __init__(self):
        super().__init__()

        # Update package definitions from remote
        package.update_package_index()

        # Load available packages from local package index
        available_packages = package.get_available_packages()

        # Packages table
        self.packages_table = PackagesTable(
            PackagesTable.TableContent.AVAILABLE,
            [PackagesTable.AvailableActions.INSTALL],
        )
        self.packages_table.packages_changed.connect(self.packages_changed.emit)
        self.packages_table.populate()
        self.packages_layout = QVBoxLayout()
        self.packages_layout.addWidget(self.packages_table)

        # Layout
        self.layout = QVBoxLayout()
        self.layout.addLayout(self.packages_layout)
        self.layout.addStretch()
        self.setLayout(self.layout)