fosslight-util 2.1.26__tar.gz → 2.1.27__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/PKG-INFO +1 -1
  2. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/setup.py +1 -1
  3. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util/download.py +55 -10
  4. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util.egg-info/PKG-INFO +1 -1
  5. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/LICENSE +0 -0
  6. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/MANIFEST.in +0 -0
  7. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/README.md +0 -0
  8. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/requirements.txt +0 -0
  9. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/setup.cfg +0 -0
  10. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util/__init__.py +0 -0
  11. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util/_get_downloadable_url.py +0 -0
  12. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util/compare_yaml.py +0 -0
  13. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util/constant.py +0 -0
  14. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util/correct.py +0 -0
  15. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util/cover.py +0 -0
  16. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util/exclude.py +0 -0
  17. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util/help.py +0 -0
  18. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util/oss_item.py +0 -0
  19. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util/output_format.py +0 -0
  20. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util/parsing_yaml.py +0 -0
  21. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util/read_excel.py +0 -0
  22. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util/resources/frequentLicenselist.json +0 -0
  23. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util/resources/frequent_license_nick_list.json +0 -0
  24. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util/resources/licenses.json +0 -0
  25. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util/set_log.py +0 -0
  26. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util/spdx_licenses.py +0 -0
  27. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util/timer_thread.py +0 -0
  28. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util/write_cyclonedx.py +0 -0
  29. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util/write_excel.py +0 -0
  30. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util/write_opossum.py +0 -0
  31. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util/write_scancodejson.py +0 -0
  32. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util/write_spdx.py +0 -0
  33. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util/write_txt.py +0 -0
  34. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util/write_yaml.py +0 -0
  35. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util.egg-info/SOURCES.txt +0 -0
  36. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util.egg-info/dependency_links.txt +0 -0
  37. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util.egg-info/entry_points.txt +0 -0
  38. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util.egg-info/requires.txt +0 -0
  39. {fosslight_util-2.1.26 → fosslight_util-2.1.27}/src/fosslight_util.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fosslight_util
3
- Version: 2.1.26
3
+ Version: 2.1.27
4
4
  Summary: FOSSLight Util
5
5
  Home-page: https://github.com/fosslight/fosslight_util
6
6
  Download-URL: https://github.com/fosslight/fosslight_util
@@ -14,7 +14,7 @@ with open('requirements.txt', 'r', 'utf-8') as f:
14
14
  if __name__ == "__main__":
15
15
  setup(
16
16
  name='fosslight_util',
17
- version='2.1.26',
17
+ version='2.1.27',
18
18
  package_dir={"": "src"},
19
19
  packages=find_packages(where='src'),
20
20
  description='FOSSLight Util',
@@ -195,15 +195,60 @@ def get_ref_to_checkout(checkout_to, ref_list):
195
195
  return ref_to_checkout
196
196
 
197
197
 
198
- def decide_checkout(checkout_to="", tag="", branch=""):
199
- if checkout_to:
200
- ref_to_checkout = checkout_to
201
- else:
202
- if branch:
203
- ref_to_checkout = branch
204
- else:
205
- ref_to_checkout = tag
206
- return ref_to_checkout
198
+ def get_remote_refs(git_url: str):
199
+ if not git_url:
200
+ return {"tags": [], "branches": []}
201
+ tags = []
202
+ branches = []
203
+ try:
204
+ cp = subprocess.run(["git", "ls-remote", "--tags", "--heads", git_url], capture_output=True, text=True, timeout=30)
205
+ if cp.returncode == 0:
206
+ for line in cp.stdout.splitlines():
207
+ parts = line.split('\t')
208
+ if len(parts) != 2:
209
+ continue
210
+ ref = parts[1]
211
+ if ref.startswith('refs/tags/'):
212
+ tags.append(ref[len('refs/tags/'):])
213
+ elif ref.startswith('refs/heads/'):
214
+ branches.append(ref[len('refs/heads/'):])
215
+ except Exception as e:
216
+ logger.debug(f"get_remote_refs - failed: {e}")
217
+ return {"tags": tags, "branches": branches}
218
+
219
+
220
+ def decide_checkout(checkout_to="", tag="", branch="", git_url=""):
221
+ base = checkout_to or tag or branch
222
+ if not base:
223
+ return ""
224
+
225
+ ref_dict = get_remote_refs(git_url)
226
+ tag_set = set(ref_dict.get("tags", []))
227
+ branch_set = set(ref_dict.get("branches", []))
228
+
229
+ ver_re = re.compile(r'^(?:v\.? ?)?' + re.escape(base) + r'$', re.IGNORECASE)
230
+
231
+ # tag: exact -> prefix variant -> endswith
232
+ if base in tag_set:
233
+ return base
234
+ tag_candidates = [c for c in tag_set if ver_re.match(c)]
235
+ if tag_candidates:
236
+ return min(tag_candidates, key=lambda x: (len(x), x.lower()))
237
+ tag_ends = [n for n in tag_set if n.endswith(base)]
238
+ if tag_ends:
239
+ return min(tag_ends, key=len)
240
+
241
+ # branch: exact -> prefix variant -> endswith
242
+ if base in branch_set:
243
+ return base
244
+ branch_candidates = [c for c in branch_set if ver_re.match(c)]
245
+ if branch_candidates:
246
+ return min(branch_candidates, key=lambda x: (len(x), x.lower()))
247
+ branch_ends = [n for n in branch_set if n.endswith(base)]
248
+ if branch_ends:
249
+ return min(branch_ends, key=len)
250
+
251
+ return base
207
252
 
208
253
 
209
254
  def get_github_ossname(link):
@@ -263,7 +308,7 @@ def download_git_repository(refs_to_checkout, git_url, target_dir, tag, called_c
263
308
  def download_git_clone(git_url, target_dir, checkout_to="", tag="", branch="",
264
309
  ssh_key="", id="", git_token="", called_cli=True):
265
310
  oss_name = get_github_ossname(git_url)
266
- refs_to_checkout = decide_checkout(checkout_to, tag, branch)
311
+ refs_to_checkout = decide_checkout(checkout_to, tag, branch, git_url)
267
312
  msg = ""
268
313
  success = True
269
314
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fosslight-util
3
- Version: 2.1.26
3
+ Version: 2.1.27
4
4
  Summary: FOSSLight Util
5
5
  Home-page: https://github.com/fosslight/fosslight_util
6
6
  Download-URL: https://github.com/fosslight/fosslight_util
File without changes