コード例 #1
0
def scan_missing(sdk, packages, verbose=False):
    # Re-scan SDK root to check for failed installs.
    print('Re-scanning {:s}...'.format(sdk))
    installed = scan(sdk, verbose=verbose)
    missing = [p for p in packages if p not in installed]
    if missing:
        print('Failed to install packages:', file=sys.stderr)
        for m in missing:
            print('   ', m, file=sys.stderr)
    return missing
コード例 #2
0
def updates_available(android, sdk, packages=None, options=None, verbose=False):
    print('Scanning', sdk, 'for installed packages...')
    installed = scan(sdk, verbose=verbose)
    print('   ', str(len(installed)), 'packages installed.')

    print('Querying update sites for available packages...')
    available = list_packages(android, options=options, verbose=verbose)
    print('   ', str(len(available)), 'packages available.')

    return compute_package_ops(packages, installed, available)
コード例 #3
0
def updates_available(android, sdk, packages=None, options=None, verbose=False):
    print('Scanning', sdk, 'for installed packages...')
    installed = scan(sdk, verbose=verbose)
    print('   ', str(len(installed)), 'packages installed.')

    print('Querying update sites for available packages...')
    available = list_packages(android, options=options, verbose=verbose)
    print('   ', str(len(available)), 'packages available.')

    return compute_package_ops(packages, installed, available)
コード例 #4
0
def main(sdk, req=None):
    if req is None:
        req = []

    android = os.path.join(sdk, 'tools', 'android')

    print('Scanning', sdk, 'for installed packages...')
    installed = scan(sdk)
    print('   ', str(len(installed)), 'packages installed.')

    # Remove requested package names we already have
    if len(req) > 0:
        remove_packages(installed, req)

    print('Querying update sites for available packages...')
    available = list_packages(android)
    print('   ', str(len(available)), 'packages available.')

    requests = compute_requests(req, available)
    updates = compute_updates(installed, available)

    for r in requests:
        print('Installing: {:s}'.format(str(r)))
    for u in updates:
        print('Updating:   {:s}'.format(str(u)))

    nums = combine_updates(requests, updates)
    if len(nums) == 0:
        print("All packages are up-to-date.")
        exit(0)

    package_filter = ','.join(nums)

    installer = pexpect.spawn('{:s} update sdk --no-ui --all --filter {:s}'.format(android, package_filter))
    installer.logfile = sys.stdout.buffer
    eof = False
    while not eof:
        i = installer.expect([r"Do you accept the license '.+' \[y/n\]:", pexpect.EOF])
        if i == 0:
            installer.sendline('y')
        else:
            eof = True

    print('Done; installed {:d} packages.'.format(len(nums)))
コード例 #5
0
def scan_missing(sdk, packages, verbose=False):
    # Re-scan SDK root to check for failed installs.
    print('Re-scanning {:s}...'.format(sdk))
    installed = scan(sdk, verbose=verbose)
    return [p for p in packages if p not in installed]