From 37ff36402e43b7c375e790b048c165caf6f8a00c Mon Sep 17 00:00:00 2001 From: Yohanth Shetty Date: Fri, 24 Mar 2023 16:39:54 -0700 Subject: [PATCH] Symlink and Performance fix --- ebcli/core/fileoperations.py | 31 +++----------------------- tests/unit/core/test_fileoperations.py | 4 ++-- 2 files changed, 5 insertions(+), 30 deletions(-) diff --git a/ebcli/core/fileoperations.py b/ebcli/core/fileoperations.py index 3a2f88c0a..79e319cdf 100644 --- a/ebcli/core/fileoperations.py +++ b/ebcli/core/fileoperations.py @@ -18,13 +18,13 @@ import shutil import stat import sys -import zipfile -import yaml import warnings -from pathspec import PathSpec +import yaml +import zipfile from cement.utils.misc import minimal_logger from ebcli.objects.buildconfiguration import BuildConfiguration +from pathspec import PathSpec from six import StringIO from yaml import safe_load, safe_dump from yaml.parser import ParserError @@ -110,12 +110,6 @@ def _get_option(config, section, key, default): def is_git_directory_present(): return os.path.isdir('.git') -def is_parent_directory_in_ignore_list(filepath, ignore_list): - for directory in ignore_list: - if os.path.abspath(filepath).startswith(os.path.abspath(directory)): - return True - return False - def clean_up(): cwd = os.getcwd() try: @@ -437,24 +431,6 @@ def _zipdir(path, zipf, ignore_list=None): if '.elasticbeanstalk' in root: io.log_info(' -skipping: {}'.format(root)) continue - for d in dirs: - cur_dir = os.path.join(root, d) - if os.path.islink(cur_dir): - # It is probably safe to remove this code since os.walk seems to categorize - # symlinks-to-directories as files. This doesn't matter as far as creation - # of the zip is concerned, but just having the code around is confusing. - zipInfo = zipfile.ZipInfo() - zipInfo.filename = os.path.join(root, d) - - # 2716663808L is the "magic code" for symlinks - if sys.version_info > (3,): - zipInfo.external_attr = 2716663808 - else: - zipInfo.external_attr = long(2716663808) - if not is_parent_directory_in_ignore_list(cur_dir, ignore_list): - zipf.writestr(zipInfo, os.readlink(cur_dir)) - else: - io.log_info(' -skipping: {}'.format(cur_dir)) for f in files: cur_file = os.path.join(root, f) @@ -462,7 +438,6 @@ def _zipdir(path, zipf, ignore_list=None): cur_file.endswith('~') or cur_file in ignore_list or not _validate_file_for_archive(cur_file) - or is_parent_directory_in_ignore_list(cur_file, ignore_list) ): # Ignore editor backup files (like file.txt~) # Ignore anything in the .ebignore file diff --git a/tests/unit/core/test_fileoperations.py b/tests/unit/core/test_fileoperations.py index b15bc9693..1204641cd 100644 --- a/tests/unit/core/test_fileoperations.py +++ b/tests/unit/core/test_fileoperations.py @@ -756,7 +756,7 @@ def test_zip_up_project(self, _validate_file_for_archive_mock): fileoperations.zip_up_project( 'app.zip', - ignore_list=[os.path.join('src', 'lib', 'ignore-this-file.py'), os.path.join('ignore-me/')] + ignore_list=[os.path.join('src', 'lib', 'ignore-this-file.py'), os.path.join('ignore-me/'), os.path.join('src', 'lib', 'api-copy')] ) os.mkdir('tmp') @@ -765,7 +765,7 @@ def test_zip_up_project(self, _validate_file_for_archive_mock): self.assertTrue(os.path.exists(os.path.join('tmp', 'src', 'lib', 'app.py'))) self.assertTrue(os.path.exists(os.path.join('tmp', 'src', 'lib', 'api'))) self.assertTrue(os.path.exists(os.path.join('tmp', 'src', 'lib', 'app.py-copy'))) - self.assertTrue(os.path.exists(os.path.join('tmp', 'src', 'lib', 'api-copy'))) + self.assertFalse(os.path.exists(os.path.join('tmp', 'src', 'lib', 'api-copy'))) self.assertFalse(os.path.exists(os.path.join('tmp', 'src', 'lib', 'app.py~'))) self.assertFalse(os.path.exists(os.path.join('tmp', 'src', 'lib', 'ignore-this-file.py'))) self.assertFalse(os.path.exists(os.path.join('tmp', 'src', 'lib', 'test.sock')))