Commit aeed5d1a authored by Éric Araujo's avatar Éric Araujo

Fix usage of dry-run in packaging bdist_wininst and install_distinfo.

In dry-run mode, packaging commands should log the same info as in real
operation and should collect the same files in self.outputs, so that
users can run a command in verbose and dry-run mode to see exactly what
operations will be done in the real run.
parent ca4eac2f
...@@ -186,9 +186,8 @@ class bdist_wininst(Command): ...@@ -186,9 +186,8 @@ class bdist_wininst(Command):
os.remove(arcname) os.remove(arcname)
if not self.keep_temp: if not self.keep_temp:
if self.dry_run: logger.info('removing %s', self.bdist_dir)
logger.info('removing %s', self.bdist_dir) if not self.dry_run:
else:
rmtree(self.bdist_dir) rmtree(self.bdist_dir)
def get_inidata(self): def get_inidata(self):
......
...@@ -28,7 +28,7 @@ class install_distinfo(Command): ...@@ -28,7 +28,7 @@ class install_distinfo(Command):
('no-record', None, ('no-record', None,
"do not generate a RECORD file"), "do not generate a RECORD file"),
('no-resources', None, ('no-resources', None,
"do not generate a RESSOURCES list installed file") "do not generate a RESSOURCES list installed file"),
] ]
boolean_options = ['requested', 'no-record', 'no-resources'] boolean_options = ['requested', 'no-record', 'no-resources']
...@@ -70,56 +70,56 @@ class install_distinfo(Command): ...@@ -70,56 +70,56 @@ class install_distinfo(Command):
self.distinfo_dir = os.path.join(self.distinfo_dir, basename) self.distinfo_dir = os.path.join(self.distinfo_dir, basename)
def run(self): def run(self):
# FIXME dry-run should be used at a finer level, so that people get target = self.distinfo_dir
# useful logging output and can have an idea of what the command would
# have done
if not self.dry_run:
target = self.distinfo_dir
if os.path.isdir(target) and not os.path.islink(target): if os.path.isdir(target) and not os.path.islink(target):
if not self.dry_run:
rmtree(target) rmtree(target)
elif os.path.exists(target): elif os.path.exists(target):
self.execute(os.unlink, (self.distinfo_dir,), self.execute(os.unlink, (self.distinfo_dir,),
"removing " + target) "removing " + target)
self.execute(os.makedirs, (target,), "creating " + target) self.execute(os.makedirs, (target,), "creating " + target)
metadata_path = os.path.join(self.distinfo_dir, 'METADATA') metadata_path = os.path.join(self.distinfo_dir, 'METADATA')
logger.info('creating %s', metadata_path) self.execute(self.distribution.metadata.write, (metadata_path,),
self.distribution.metadata.write(metadata_path) "creating " + metadata_path)
self.outfiles.append(metadata_path) self.outfiles.append(metadata_path)
installer_path = os.path.join(self.distinfo_dir, 'INSTALLER') installer_path = os.path.join(self.distinfo_dir, 'INSTALLER')
logger.info('creating %s', installer_path) logger.info('creating %s', installer_path)
if not self.dry_run:
with open(installer_path, 'w') as f: with open(installer_path, 'w') as f:
f.write(self.installer) f.write(self.installer)
self.outfiles.append(installer_path) self.outfiles.append(installer_path)
if self.requested: if self.requested:
requested_path = os.path.join(self.distinfo_dir, 'REQUESTED') requested_path = os.path.join(self.distinfo_dir, 'REQUESTED')
logger.info('creating %s', requested_path) logger.info('creating %s', requested_path)
if not self.dry_run:
open(requested_path, 'wb').close() open(requested_path, 'wb').close()
self.outfiles.append(requested_path) self.outfiles.append(requested_path)
if not self.no_resources:
if not self.no_resources: install_data = self.get_finalized_command('install_data')
install_data = self.get_finalized_command('install_data') if install_data.get_resources_out() != []:
if install_data.get_resources_out() != []: resources_path = os.path.join(self.distinfo_dir,
resources_path = os.path.join(self.distinfo_dir, 'RESOURCES')
'RESOURCES') logger.info('creating %s', resources_path)
logger.info('creating %s', resources_path) if not self.dry_run:
with open(resources_path, 'wb') as f: with open(resources_path, 'wb') as f:
writer = csv.writer(f, delimiter=',', writer = csv.writer(f, delimiter=',',
lineterminator='\n', lineterminator='\n',
quotechar='"') quotechar='"')
for tuple in install_data.get_resources_out(): for row in install_data.get_resources_out():
writer.writerow(tuple) writer.writerow(row)
self.outfiles.append(resources_path) self.outfiles.append(resources_path)
if not self.no_record: if not self.no_record:
record_path = os.path.join(self.distinfo_dir, 'RECORD') record_path = os.path.join(self.distinfo_dir, 'RECORD')
logger.info('creating %s', record_path) logger.info('creating %s', record_path)
if not self.dry_run:
with open(record_path, 'w', encoding='utf-8') as f: with open(record_path, 'w', encoding='utf-8') as f:
writer = csv.writer(f, delimiter=',', writer = csv.writer(f, delimiter=',',
lineterminator='\n', lineterminator='\n',
...@@ -141,7 +141,7 @@ class install_distinfo(Command): ...@@ -141,7 +141,7 @@ class install_distinfo(Command):
# add the RECORD file itself # add the RECORD file itself
writer.writerow((record_path, '', '')) writer.writerow((record_path, '', ''))
self.outfiles.append(record_path) self.outfiles.append(record_path)
def get_outputs(self): def get_outputs(self):
return self.outfiles return self.outfiles
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment