Skip to content

Commit 12275a8

Browse files
authored
Fix the encoding issue (#127)
Signed-off-by: Jiyeong Seok <[email protected]>
1 parent 0138c52 commit 12275a8

File tree

2 files changed

+31
-41
lines changed

2 files changed

+31
-41
lines changed

.github/workflows/publish-release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ jobs:
7070
7171
- name: Build exe with PyInstaller for windows
7272
run: |
73-
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
73+
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
7474
mkdir out
7575
move dist/cli.exe fosslight_dependency_windows.exe
7676

src/fosslight_dependency/_package_manager.py

Lines changed: 30 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@ def parse_direct_dependencies(self):
8282
pass
8383

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

@@ -91,15 +90,20 @@ def run_gradle_task(self):
9190
if not ret:
9291
return
9392

94-
ret = self.exeucte_gradle_task(dependency_tree_fname)
93+
if os.path.isfile('gradlew') or os.path.isfile('gradlew.bat'):
94+
if self.platform == const.WINDOWS:
95+
cmd_gradle = "gradlew.bat"
96+
else:
97+
cmd_gradle = "./gradlew"
98+
else:
99+
return 1
100+
cmd = f"{cmd_gradle} allDeps"
101+
ret = subprocess.check_output(cmd, shell=True, encoding='utf-8')
95102
if ret != 0:
103+
self.parse_dependency_tree(ret)
104+
else:
96105
self.set_direct_dependencies(False)
97106
logger.warning("Failed to run allDeps task.")
98-
else:
99-
self.parse_dependency_tree(dependency_tree_fname)
100-
101-
if os.path.isfile(dependency_tree_fname):
102-
os.remove(dependency_tree_fname)
103107

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

129133
return ret
130134

131-
def exeucte_gradle_task(self, dependency_tree_fname):
132-
if os.path.isfile('gradlew') or os.path.isfile('gradlew.bat'):
133-
if self.platform == const.WINDOWS:
134-
cmd_gradle = "gradlew.bat"
135-
else:
136-
cmd_gradle = "./gradlew"
137-
else:
138-
return 1
139-
cmd = f"{cmd_gradle} allDeps > {dependency_tree_fname}"
140-
141-
ret = subprocess.call(cmd, shell=True)
142-
return ret
143-
144-
def parse_dependency_tree(self, f_name):
135+
def parse_dependency_tree(self, dependency_tree_fname):
145136
config = android_config if self.package_manager_name == 'android' else gradle_config
146-
with open(f_name, 'r', encoding='utf8') as input_fp:
147-
packages_in_config = False
148-
for i, line in enumerate(input_fp.readlines()):
149-
try:
150-
line_bk = copy.deepcopy(line)
151-
if not packages_in_config:
152-
filtered = next(filter(lambda c: re.findall(rf'^{c}\s\-', line), config), None)
153-
if filtered:
154-
packages_in_config = True
155-
else:
156-
if line == '':
157-
packages_in_config = False
158-
re_result = re.findall(r'\-\-\-\s([^\:\s]+\:[^\:\s]+)\:([^\:\s]+)', line)
159-
if re_result:
160-
self.total_dep_list.append(re_result[0][0])
161-
if re.match(r'^[\+|\\]\-\-\-\s([^\:\s]+\:[^\:\s]+)\:([^\:\s]+)', line_bk):
162-
self.direct_dep_list.append(re_result[0][0])
163-
except Exception as e:
164-
logger.error(f"Failed to parse dependency tree: {e}")
137+
packages_in_config = False
138+
for line in dependency_tree_fname.split('\n'):
139+
try:
140+
line_bk = copy.deepcopy(line)
141+
if not packages_in_config:
142+
filtered = next(filter(lambda c: re.findall(rf'^{c}\s\-', line), config), None)
143+
if filtered:
144+
packages_in_config = True
145+
else:
146+
if line == '':
147+
packages_in_config = False
148+
re_result = re.findall(r'\-\-\-\s([^\:\s]+\:[^\:\s]+)\:([^\:\s]+)', line)
149+
if re_result:
150+
self.total_dep_list.append(re_result[0][0])
151+
if re.match(r'^[\+|\\]\-\-\-\s([^\:\s]+\:[^\:\s]+)\:([^\:\s]+)', line_bk):
152+
self.direct_dep_list.append(re_result[0][0])
153+
except Exception as e:
154+
logger.error(f"Failed to parse dependency tree: {e}")
165155

166156

167157
def version_refine(oss_version):

0 commit comments

Comments
 (0)