Skip to content

Commit

Permalink
deploy-ng: Create zip installers without first creating a temporary d…
Browse files Browse the repository at this point in the history
…irectory
  • Loading branch information
Moguri committed Jul 15, 2018
1 parent 7a00041 commit f3e87a0
Showing 1 changed file with 23 additions and 1 deletion.
24 changes: 23 additions & 1 deletion direct/src/showutil/dist.py
Original file line number Diff line number Diff line change
Expand Up @@ -1073,6 +1073,26 @@ def finalize_options(self):
for key, value in _parse_dict(self.installers).items()
}

def _get_archive_basedir(self):
return self.distribution.get_name()

def create_zip(self, basename, build_dir):
import zipfile

base_dir = self._get_archive_basedir()

with zipfile.ZipFile(basename+'.zip', 'w', compression=zipfile.ZIP_DEFLATED) as zf:
zf.write(build_dir, base_dir)

for dirpath, dirnames, filenames in os.walk(build_dir):
for name in sorted(dirnames):
path = os.path.normpath(os.path.join(dirpath, name))
zf.write(path, path.replace(build_dir, base_dir, 1))
for name in filenames:
path = os.path.normpath(os.path.join(dirpath, name))
if os.path.isfile(path):
zf.write(path, path.replace(build_dir, base_dir, 1))

def run(self):
build_cmd = self.get_finalized_command('build_apps')
if not build_cmd.platforms:
Expand All @@ -1092,7 +1112,9 @@ def run(self):
for installer in installers:
self.announce('\nBuilding {} for platform: {}'.format(installer, platform), distutils.log.INFO)

if installer in ('zip', 'gztar', 'bztar', 'xztar'):
if installer == 'zip':
self.create_zip(basename, build_dir)
elif installer in ('gztar', 'bztar', 'xztar'):
base_dir = self.distribution.get_name()
temp_dir = os.path.join(build_base, base_dir)
if (os.path.exists(temp_dir)):
Expand Down

0 comments on commit f3e87a0

Please sign in to comment.