From a5ba96c073a8aaab21f19ed822540f837b6cd78c Mon Sep 17 00:00:00 2001 From: Jan200101 Date: Fri, 1 Nov 2024 21:04:11 +0100 Subject: [PATCH] generate metainfo releases using git --- meson.build | 49 +++++++++++++++++-- ...xml => com.lite_xl.LiteXL.metainfo.xml.in} | 4 +- 2 files changed, 47 insertions(+), 6 deletions(-) rename resources/linux/{com.lite_xl.LiteXL.appdata.xml => com.lite_xl.LiteXL.metainfo.xml.in} (91%) diff --git a/meson.build b/meson.build index 7f2dfb9f..883e4b78 100644 --- a/meson.build +++ b/meson.build @@ -210,21 +210,64 @@ elif get_option('bundle') and host_machine.system() == 'darwin' install_dir : 'Contents' ) else - message() lite_bindir = 'bin' lite_docdir = get_option('datadir') / 'doc' / 'lite-xl' lite_datadir = get_option('datadir') / 'lite-xl' lpm_userdir = 'lite-xl' lpm_install_dir = get_option('datadir') if host_machine.system() == 'linux' + git_command = find_program('git', required : false) + + if git_command.found() + git_tags = run_command( + [git_command, 'tag', '-l', '--sort=-version:refname', '--format=%(refname:strip=2) %(creatordate:short)'], + check : false + ).stdout().split('\n') + + releases = [] + + foreach tag : git_tags + taga = tag.split(' ') + if taga.length() != 2 + continue + endif + + ref = taga[0] + date = taga[1] + if not ref.startswith('v') or ref.contains('-') + continue + endif + + if ref.startswith('v1.0') + # releases 1.01 to 1.09 used an invalid versioning scheme so we ignore them + continue + endif + + releases += ''.format(ref, date) + endforeach + + releases_tag = '' + if releases.length() > 0 + releases_tag = '\n@0@\n'.format('\n'.join(releases)) + endif + + conf_data.set('METAINFO_RELEASES', releases_tag) + else + conf_data.set('METAINFO_RELEASES', '') + endif + install_data('resources' / 'icons' / 'lite-xl.svg', install_dir : get_option('datadir') / 'icons' / 'hicolor' / 'scalable' / 'apps' ) install_data('resources' / 'linux' / 'com.lite_xl.LiteXL.desktop', install_dir : get_option('datadir') / 'applications' ) - install_data('resources' / 'linux' / 'com.lite_xl.LiteXL.appdata.xml', - install_dir : get_option('datadir') / 'metainfo' + configure_file( + input : 'resources' / 'linux' / 'com.lite_xl.LiteXL.metainfo.xml.in', + output : 'com.lite_xl.LiteXL.metainfo.xml', + configuration : conf_data, + install : true, + install_dir : 'share/metainfo' ) endif endif diff --git a/resources/linux/com.lite_xl.LiteXL.appdata.xml b/resources/linux/com.lite_xl.LiteXL.metainfo.xml.in similarity index 91% rename from resources/linux/com.lite_xl.LiteXL.appdata.xml rename to resources/linux/com.lite_xl.LiteXL.metainfo.xml.in index 6b8f1350..2550d95f 100644 --- a/resources/linux/com.lite_xl.LiteXL.appdata.xml +++ b/resources/linux/com.lite_xl.LiteXL.metainfo.xml.in @@ -28,7 +28,5 @@ lite-xl - - - + @METAINFO_RELEASES@