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
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
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.')
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.')