Skip to content

Commit

Permalink
Fix the encoding issue (#127)
Browse files Browse the repository at this point in the history
Signed-off-by: Jiyeong Seok <[email protected]>
  • Loading branch information
dd-jy authored Mar 9, 2023
1 parent 0138c52 commit 12275a8
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 41 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/publish-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ jobs:
- name: Build exe with PyInstaller for windows
run: |
pyinstaller --onefile cli.py -n cli --additional-hooks-dir=hooks --add-binary "src/fosslight_dependency/third_party/askalono/askalono.exe;third_party/askalono" --add-binary "LICENSE;LICENSES" --add-binary "LICENSES\LicenseRef-3rd_party_licenses.txt;LICENSES" --collect-datas fosslight_util
pyinstaller --onefile cli.py -n cli --additional-hooks-dir=hooks --add-binary "src/fosslight_dependency/third_party/askalono/askalono.exe;third_party/askalono" --add-binary "LICENSE;LICENSES" --add-binary "LICENSES\LicenseRef-3rd_party_licenses.txt;LICENSES" --collect-datas fosslight_util --hidden-import=_cffi_backend
mkdir out
move dist/cli.exe fosslight_dependency_windows.exe
Expand Down
70 changes: 30 additions & 40 deletions src/fosslight_dependency/_package_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,6 @@ def parse_direct_dependencies(self):
pass

def run_gradle_task(self):
dependency_tree_fname = 'tmp_dependency_tree.txt'
if os.path.isfile(const.SUPPORT_PACKAE.get(self.package_manager_name)):
gradle_backup = f'{const.SUPPORT_PACKAE.get(self.package_manager_name)}_bk'

Expand All @@ -91,15 +90,20 @@ def run_gradle_task(self):
if not ret:
return

ret = self.exeucte_gradle_task(dependency_tree_fname)
if os.path.isfile('gradlew') or os.path.isfile('gradlew.bat'):
if self.platform == const.WINDOWS:
cmd_gradle = "gradlew.bat"
else:
cmd_gradle = "./gradlew"
else:
return 1
cmd = f"{cmd_gradle} allDeps"
ret = subprocess.check_output(cmd, shell=True, encoding='utf-8')
if ret != 0:
self.parse_dependency_tree(ret)
else:
self.set_direct_dependencies(False)
logger.warning("Failed to run allDeps task.")
else:
self.parse_dependency_tree(dependency_tree_fname)

if os.path.isfile(dependency_tree_fname):
os.remove(dependency_tree_fname)

if os.path.isfile(gradle_backup):
os.remove(const.SUPPORT_PACKAE.get(self.package_manager_name))
Expand Down Expand Up @@ -128,40 +132,26 @@ def add_allDeps_in_gradle(self):

return ret

def exeucte_gradle_task(self, dependency_tree_fname):
if os.path.isfile('gradlew') or os.path.isfile('gradlew.bat'):
if self.platform == const.WINDOWS:
cmd_gradle = "gradlew.bat"
else:
cmd_gradle = "./gradlew"
else:
return 1
cmd = f"{cmd_gradle} allDeps > {dependency_tree_fname}"

ret = subprocess.call(cmd, shell=True)
return ret

def parse_dependency_tree(self, f_name):
def parse_dependency_tree(self, dependency_tree_fname):
config = android_config if self.package_manager_name == 'android' else gradle_config
with open(f_name, 'r', encoding='utf8') as input_fp:
packages_in_config = False
for i, line in enumerate(input_fp.readlines()):
try:
line_bk = copy.deepcopy(line)
if not packages_in_config:
filtered = next(filter(lambda c: re.findall(rf'^{c}\s\-', line), config), None)
if filtered:
packages_in_config = True
else:
if line == '':
packages_in_config = False
re_result = re.findall(r'\-\-\-\s([^\:\s]+\:[^\:\s]+)\:([^\:\s]+)', line)
if re_result:
self.total_dep_list.append(re_result[0][0])
if re.match(r'^[\+|\\]\-\-\-\s([^\:\s]+\:[^\:\s]+)\:([^\:\s]+)', line_bk):
self.direct_dep_list.append(re_result[0][0])
except Exception as e:
logger.error(f"Failed to parse dependency tree: {e}")
packages_in_config = False
for line in dependency_tree_fname.split('\n'):
try:
line_bk = copy.deepcopy(line)
if not packages_in_config:
filtered = next(filter(lambda c: re.findall(rf'^{c}\s\-', line), config), None)
if filtered:
packages_in_config = True
else:
if line == '':
packages_in_config = False
re_result = re.findall(r'\-\-\-\s([^\:\s]+\:[^\:\s]+)\:([^\:\s]+)', line)
if re_result:
self.total_dep_list.append(re_result[0][0])
if re.match(r'^[\+|\\]\-\-\-\s([^\:\s]+\:[^\:\s]+)\:([^\:\s]+)', line_bk):
self.direct_dep_list.append(re_result[0][0])
except Exception as e:
logger.error(f"Failed to parse dependency tree: {e}")


def version_refine(oss_version):
Expand Down

0 comments on commit 12275a8

Please sign in to comment.