#!/usr/bin/env python # # Remove the given apt repository. # # Exit with: # 0: if it worked # 1: if not # 2: on other error import os import sys from aptsources import distro, sourceslist from softwareproperties import ppa from softwareproperties.SoftwareProperties import SoftwareProperties def remove_if_empty(file_name): with open(file_name, 'r') as f: if f.read().strip(): return os.unlink(file_name) def remove_repository(repository): #print 'repository:', repository codename = distro.get_distro().codename #print 'codename:', codename (line, file) = ppa.expand_ppa_line(repository.strip(), codename) #print 'line:', line #print 'file:', file deb_source_entry = sourceslist.SourceEntry(line, file) src_source_entry = sourceslist.SourceEntry('deb-src{}'.format(line[3:]), file) try: sp = SoftwareProperties() sp.remove_source(deb_source_entry) try: # If there's a deb-src entry, remove that too sp.remove_source(src_source_entry) except: pass remove_if_empty(file) return True except ValueError: print >> sys.stderr, "Error: '%s' doesn't exists in a sourcelist file" % line return False if __name__ == '__main__': if (len(sys.argv) != 2): print >> sys.stderr, 'Error: need a repository as argument' sys.exit(2) repository = sys.argv[1] if remove_repository(repository): sys.exit(0) else: sys.exit(1)