| 44 | |
| 45 | @classmethod |
| 46 | def get_since_text(cls, versions: List[Optional[str]]) -> Optional[str]: |
| 47 | tv = [] |
| 48 | if len(versions) == 0 or versions[0] is None: |
| 49 | return None |
| 50 | for v in versions[0].split(','): |
| 51 | ssh_prod, ssh_ver, is_cli = cls.get_ssh_version(v) |
| 52 | if not ssh_ver: |
| 53 | continue |
| 54 | if ssh_prod in [Product.LibSSH]: |
| 55 | continue |
| 56 | if is_cli: |
| 57 | ssh_ver = '{} (client only)'.format(ssh_ver) |
| 58 | tv.append('{} {}'.format(ssh_prod, ssh_ver)) |
| 59 | if len(tv) == 0: |
| 60 | return None |
| 61 | return 'available since ' + ', '.join(tv).rstrip(', ') |