예제 #1
0
def _main(args):
    input = getattr(__builtins__, 'raw_input', __builtins__.input)

    args = _argparse(args)
    sourceslist = aptsources.sourceslist.SourcesList(False)
    duplicates = get_duplicates(sourceslist)

    if duplicates:
        for dupe, orig in duplicates:
            print('Overlapping source entries:\n'
                  '  1. {0}: {1}\n'
                  '  2. {2}: {3}\n'
                  'I disabled the latter entry.'.format(
                      orig.file, orig, dupe.file, dupe),
                  end='\n\n')
            dupe.disabled = True

        print('\n{0} source entries were disabled:'.format(len(duplicates)),
              *[dupe for dupe, orig in duplicates],
              sep='\n  ',
              end='\n\n')

        if args.apply_changes is None:
            if input('Do you want to save these changes? (y/N) ').upper(
            ) != 'Y':
                return 2
        if args.apply_changes is not False:
            sourceslist.save()

    else:
        print('No duplicate entries were found.')

    return 0
예제 #2
0
def handle_duplicates(sourceslist,
                      apply_changes=None,
                      equivalent_schemes=None):
    """Interactive disablement of duplicate source entries"""

    stdout = termwrap.stdout()
    stdout_indent1 = stdout.copy(subsequent_indent=stdout.subsequent_indent +
                                 ' ' * 4)
    stdout_indent2 = stdout_indent1.copy(
        initial_indent=stdout_indent1.subsequent_indent)

    duplicates = tuple(
        get_duplicates(sourceslist, equivalent_schemes=equivalent_schemes))
    if duplicates:
        for dupe_set in duplicates:
            dupe_set = iter(
                sort_dupe_set_by_scheme_class(equivalent_schemes, dupe_set))
            orig = next(dupe_set)
            for dupe in dupe_set:
                stdout.print(_('Overlapping source entries:'))
                for i, se in enumerate((orig, dupe), 1):
                    stdout_indent1.print(
                        _("{ordinal:2d}. file {file!r}:").format(ordinal=i,
                                                                 file=se.file))
                    stdout_indent2.print(se.line)
                stdout.print(_("I disabled all but the first entry."),
                             end="\n\n")
                dupe.disabled = True

        stdout.print(
            _N('{nduplicates:d} source entry was disabled',
               '{nduplicates:d} source entries were disabled', len(
                   duplicates)).format(nduplicates=len(duplicates)) + ':')
        stdout_indent2.initial_indent = stdout_indent2.initial_indent[:-2]
        stdout_indent2.print_all(map(str, itertools.chain(*duplicates)),
                                 sep='\n')

        if apply_changes is None:
            stdout.file.write('\n')
            answer = (Choices(_U('yes'), _U('no'), default='no').ask(
                _('Do you want to save these changes?')))
            apply_changes = answer is not None and answer.orig == 'yes'
            if not apply_changes:
                termwrap.stderr().print(_('Aborted.'))
                return 2

        if apply_changes:
            sourceslist.save()

    else:
        stdout.print(_('No duplicate entries were found.'))

    return 0
def handle_duplicates(sourceslist, apply_changes=None):
	"""Interactive disablement of duplicate source entries"""

	stdout = termwrap.stdout()
	stdout_indent1 = stdout.copy(
		subsequent_indent=stdout.subsequent_indent + ' ' * 4)
	stdout_indent2 = stdout_indent1.copy(
		initial_indent=stdout_indent1.subsequent_indent)

	duplicates = tuple(get_duplicates(sourceslist))
	if duplicates:
		for dupe_set in duplicates:
			orig = dupe_set.pop(0)
			for dupe in dupe_set:
				stdout.print(_('Overlapping source entries:'))
				for i, se in enumerate((orig, dupe), 1):
					stdout_indent1.print(
						_("{ordinal:2d}. file '{file:s}':")
							.format(ordinal=i, file=se.file))
					stdout_indent2.print(se.line)
				stdout.print(_('I disabled the latter entry.'), end='\n\n')
				dupe.disabled = True

		stdout.print(
			_N('{nduplicates:d} source entry was disabled',
				'{nduplicates:d} source entries were disabled',
				len(duplicates)).format(nduplicates=len(duplicates)) + ':')
		stdout_indent2.initial_indent = stdout_indent2.initial_indent[:-2]
		stdout_indent2.print_all(map(str, itertools.chain(*duplicates)), sep='\n')

		if apply_changes is None:
			stdout.file.write('\n')
			answer = (
				Choices(_U('yes'), _U('no'), default='no')
					.ask(_('Do you want to save these changes?')))
			apply_changes = answer is not None and answer.orig == 'yes'
			if not apply_changes:
				termwrap.stderr().print(_('Aborted.'))
				return 2

		if apply_changes:
			sourceslist.save()

	else:
		stdout.print(_('No duplicate entries were found.'))

	return 0
예제 #4
0
def main(*args):
    input = getattr(__builtins__, "raw_input", __builtins__.input)

    args = _argparse(args or None)
    sourceslist = aptsources.sourceslist.SourcesList(False)
    duplicates = tuple(get_duplicates(sourceslist))

    if duplicates:
        for dupe_set in duplicates:
            orig = dupe_set.pop(0)
            for dupe in dupe_set:
                print(
                    "Overlapping source entries:\n"
                    "  1. {0}: {1}\n"
                    "  2. {2}: {3}\n"
                    "I disabled the latter entry.".format(
                        orig.file, orig, dupe.file, dupe),
                    end="\n\n",
                )
                dupe.disabled = True

        print("\n{0} source entries were disabled:".format(len(duplicates)),
              *itertools.chain(*duplicates),
              sep="\n  ",
              end="\n\n")

        if args.apply_changes is None:
            if input("Do you want to save these changes? (y/N) ").upper(
            ) != "Y":
                return 2
        if args.apply_changes is not False:
            sourceslist.save()

    else:
        print("No duplicate entries were found.")

    return 0
    return duplicates


if __name__ == '__main__':
    try:
        input = raw_input
    except NameError:
        pass

    sourceslist = aptsources.sourceslist.SourcesList(False)
    duplicates = get_duplicates(sourceslist)

    if duplicates:
        for dupe, orig in duplicates:
            print(
                'Overlapping source entries:\n'
                '  1. {0}: {1}\n'
                '  2. {2}: {3}\n'
                'I disabled the latter entry.'.format(
                    orig.file, orig, dupe.file, dupe),
                end='\n\n')
            dupe.disabled = True

        print('\n{0} source entries were disabled:'.format(len(duplicates)),
            *[dupe for dupe, orig in duplicates], sep='\n  ', end='\n\n')
        if input('Do you want to save these changes? (y/N) ').upper() == 'Y':
            sourceslist.save()

    else:
        print('No duplicated entries were found.')
예제 #6
0
            for c in (se.comps or EMPTY_COMPONENT_LIST):
                key = (se.type, se.uri, se.dist, c)
                previous_se = sentry_map.setdefault(key, se)
                if previous_se is not se:
                    duplicates.append((se, previous_se))
                    break
    return duplicates
if __name__ == '__main__':
    try:
        input = raw_input
    except NameError:
        pass
    sourceslist = aptsources.sourceslist.SourcesList(False)
    duplicates = get_duplicates(sourceslist)
    if duplicates:
        for dupe, orig in duplicates:
            print(
                'Overlapping source entries:\n'
                '  1. {0}: {1}\n'
                '  2. {2}: {3}\n'
                'I disabled the latter entry.'.format(
                    orig.file, orig, dupe.file, dupe),
                end='\n\n')
            dupe.disabled = True
        print('\n{0} source entries were disabled:'.format(len(duplicates)),
            *[dupe for dupe, orig in duplicates], sep='\n  ', end='\n\n')
        if input('Do you want to save these changes? (y/N) ').upper() == 'Y':
            sourceslist.save()
    else:
        print('No duplicated entries were found.')