[meld/meld-3-20] maint: Support adding appstream release data



commit c9887e9bd6a79ac394c96b6fca98169e744b79ee
Author: Kai Willadsen <kai willadsen gmail com>
Date:   Sun Mar 31 07:42:59 2019 +1000

    maint: Support adding appstream release data

 maint | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 57 insertions(+), 2 deletions(-)
---
diff --git a/maint b/maint
index 6b70368a..31ad25f0 100755
--- a/maint
+++ b/maint
@@ -42,6 +42,26 @@ NEWS_TEMPLATE = """
 
 """
 
+APPDATA_TEMPLATE = """
+    <release date="{{ utcdate }}" version="{{ version }}">
+      <description>
+        <p>
+          {%- if stable_release %}
+          This is a stable release in the {{ release_series }} series.
+          {%- else %}
+          This is an unstable release in the {{ release_series }} development series.
+          {%- endif %}
+        </p>
+        <ul>
+          <li></li>
+          {%- if translator_langs %}
+          <li>Updated translations</li>
+          {%- endif %}
+        </ul>
+      </description>
+    </release>
+"""
+
 EMAIL_TEMPLATE = """
 {{ app|title }} {{version}} has been released, and is now available at:
   https://download.gnome.org/sources/meld/{{ version|minor_version }}/{{ app }}-{{ version }}.tar.xz
@@ -223,10 +243,19 @@ def make_env():
 def get_tokens():
     news = get_last_news_entry()
     features, fixes, translators = parse_news_entry(news)
+    version = meld.conf.__version__
+    major, minor, *release = version.split('.')
+    stable_release = int(minor) % 2 == 0
+    release_series = '{}.{}'.format(major, minor)
+
     return {
         'date': datetime.date.today().isoformat(),
+        # Appstream appears to expect release dates in UTC.
+        'utcdate': datetime.datetime.utcnow().date().isoformat(),
         'app': meld.conf.__package__,
-        'version': meld.conf.__version__,
+        'version': version,
+        'release_series': release_series,
+        'stable_release': stable_release,
         'translator_langs': get_translator_langs(),
         'features': features,
         'fixes': fixes,
@@ -388,6 +417,31 @@ def news():
     return message
 
 
+@cli.command()
+def appdata():
+    filename = 'data/org.gnome.meld.appdata.xml.in'
+
+    rendered = render_template(APPDATA_TEMPLATE)
+    with open(filename, 'r') as f:
+        appdata = f.read()
+
+    insert_tag = '<releases>'
+    insert_idx = appdata.find(insert_tag)
+    if insert_idx == -1:
+        click.echo('Failed to find <releases> tag in appdata')
+        raise click.Abort()
+
+    insert_idx += len(insert_tag)
+
+    new_appdata = appdata[:insert_idx] + rendered + appdata[insert_idx:]
+
+    with open(filename, 'w') as f:
+        f.write(new_appdata)
+
+    message = click.edit(filename=filename)
+    return message
+
+
 def write_somewhere(filename, output):
     if filename and os.path.exists(filename):
         overwrite = click.confirm(
@@ -564,7 +618,8 @@ def appveyor_build(account, tag):
 def make_release(ctx):
     pull()
     ctx.forward(news)
-    commit(message='Update NEWS')
+    ctx.forward(appdata)
+    commit(message='Update NEWS + appdata')
     push()
     archive_path = ctx.forward(dist)
     ctx.forward(tag)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]