flatpak: improve flatpak name parsing in `_parse_flatpak_name` (#8909)
* flatpak: improve flatpak name parsing in `_parse_flatpak_name` * changelog: add changelog fragment * flatpak: fix condition in `_is_flatpak_id` function * chore: update changelog fragment * docs(flatpak): add guidelines for application IDs in commentspull/8970/head
parent
83080cc005
commit
2d660a1252
|
@ -0,0 +1,2 @@
|
|||
minor_changes:
|
||||
- flatpak - improve the parsing of Flatpak application IDs based on official guidelines (https://github.com/ansible-collections/community.general/pull/8909).
|
|
@ -329,11 +329,37 @@ def _match_flat_using_flatpak_column_feature(module, binary, parsed_name, method
|
|||
return row.split()[0]
|
||||
|
||||
|
||||
def _is_flatpak_id(part):
|
||||
# For guidelines on application IDs, refer to the following resources:
|
||||
# Flatpak:
|
||||
# https://docs.flatpak.org/en/latest/conventions.html#application-ids
|
||||
# Flathub:
|
||||
# https://docs.flathub.org/docs/for-app-authors/requirements#application-id
|
||||
if '.' not in part:
|
||||
return False
|
||||
sections = part.split('.')
|
||||
if len(sections) < 2:
|
||||
return False
|
||||
domain = sections[0]
|
||||
if not domain.islower():
|
||||
return False
|
||||
for section in sections[1:]:
|
||||
if not section.isalnum():
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def _parse_flatpak_name(name):
|
||||
if name.startswith('http://') or name.startswith('https://'):
|
||||
file_name = urlparse(name).path.split('/')[-1]
|
||||
file_name_without_extension = file_name.split('.')[0:-1]
|
||||
common_name = ".".join(file_name_without_extension)
|
||||
else:
|
||||
parts = name.split('/')
|
||||
for part in parts:
|
||||
if _is_flatpak_id(part):
|
||||
common_name = part
|
||||
break
|
||||
else:
|
||||
common_name = name
|
||||
return common_name
|
||||
|
|
Loading…
Reference in New Issue