New distutils command: uninstall
This commit is contained in:
parent
a4f2cc37cc
commit
5c8bb29d78
|
@ -170,6 +170,46 @@ class build_i18n(distutils.cmd.Command):
|
||||||
_data_files_append(self.distribution, target, mo_file)
|
_data_files_append(self.distribution, target, mo_file)
|
||||||
|
|
||||||
|
|
||||||
|
class uninstall(distutils.cmd.Command):
|
||||||
|
description = 'remove all the installed files recorded at installation time'
|
||||||
|
user_options = [('record=', None, 'filename with list of files '
|
||||||
|
'(default: installed_files.txt)')]
|
||||||
|
|
||||||
|
def initialize_options(self):
|
||||||
|
self.record = None
|
||||||
|
|
||||||
|
def finalize_options(self):
|
||||||
|
if self.record is None:
|
||||||
|
self.record = 'installed_files.txt'
|
||||||
|
|
||||||
|
def remove_entry(self, entry):
|
||||||
|
if os.path.isfile(entry):
|
||||||
|
try:
|
||||||
|
info("removing file %s" % entry)
|
||||||
|
os.unlink(entry)
|
||||||
|
except OSError as e:
|
||||||
|
error(e)
|
||||||
|
|
||||||
|
directory = os.path.dirname(entry)
|
||||||
|
while os.listdir(directory) == []:
|
||||||
|
try:
|
||||||
|
info("removing empty directory %s" % directory)
|
||||||
|
os.rmdir(directory)
|
||||||
|
except OSError as e:
|
||||||
|
error(e)
|
||||||
|
directory = os.path.dirname(directory)
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
if not os.path.exists(self.record):
|
||||||
|
warn('Warning: No record file found!')
|
||||||
|
warn(' To make this command works you must add:')
|
||||||
|
warn(' "install": {"record": ("setup.py", "installed_files.txt")}')
|
||||||
|
warn(' to your command_options dict in setup.py')
|
||||||
|
return
|
||||||
|
for entry in open(self.record).read().split():
|
||||||
|
self.remove_entry(entry)
|
||||||
|
|
||||||
|
|
||||||
def _data_files_append(distribution, target, files):
|
def _data_files_append(distribution, target, files):
|
||||||
""" Tiny util to append to data_files, ensuring data_file is defined """
|
""" Tiny util to append to data_files, ensuring data_file is defined """
|
||||||
if not isinstance(files, (list, tuple)):
|
if not isinstance(files, (list, tuple)):
|
||||||
|
|
Loading…
Reference in New Issue