{% endmacro %}
{#
I know this is dirty because I use the same structrure for installed package
and soon to be installed but I'm very lazy.
Feel free to split this method if you want.
#}
{% macro renderPackageElement(package, upgradablePackages, fetchNew, baseRequirementSatisfied) %}
{% set displayUpgradePerms = false %}
{% set version = package.version | replace({'v': ''}) %}
{{ package.name }}
{% if fetchNew == false and package.isConfigurable() %}
{% endif %}
{{ version }}
{% if fetchNew == false %}
{% set found = false %}
{% set foundPkg = null %}
{% for upgradablePackage in upgradablePackages %}
{% if upgradablePackage.name == package.name %}
{% set found = true %}
{% set foundPkg = upgradablePackage %}
{% endif %}
{% endfor %}
{% if found == true %}
{% if version_compare(version, foundPkg.version, '<') and baseRequirementSatisfied %}
{% if is_installation_requirement_satisfied(package.basePath) %}
{{ 'update'|trans({}, 'platform') }}
{% else %}
{% set displayUpgradePerms = true %}
{{ 'requirement_failed_for_update'|trans({}, 'platform') }}
{% endif %}
{% endif %}
{% if version_compare(version, foundPkg.version, '=') %}
{{ 'up_to_date'|trans({}, 'platform') }}
{% endif %}
{% else %}
{{ 'outdated'|trans({}, 'platform') }}
{% endif %}
{% else %}
{% if baseRequirementSatisfied and is_installation_requirement_satisfied(package.basePath, package.requirements) %}
{{ 'install'|trans({}, 'platform') }}
{% else %}
{{ 'requirement_failed_for_install'|trans({}, 'platform') }}
{% endif %}
{% endif %}
{% if
not package.description
and not package.authors | length > 0
and not package.license
%}
{{ 'no_package_description'|trans({}, 'platform') }}
{% else %}
{% if package.description %}
{{ package.description }}
{% endif %}
{% if package.authors | length > 0 %}
{% for author in package.authors %}
{% if author.name is defined %}
{{ author.name }}
{% endif %}