Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduce release name #492

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions docs/xml/releases-data.xml
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,10 @@
discard any development release if the current version is itself stable. It can
show all versions when development versions of the software are also distributed.
</para>
<para>
A <literal>release</literal> tag may have a <literal>name</literal> property. This may be a prettier name to present the user.
By default, it is assumed to be the release <literal>version</literal>.
</para>

<para>
The <literal>release</literal> itself may have the following children:
Expand Down
5 changes: 5 additions & 0 deletions qt/release.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,11 @@ QString Release::version() const
return QString::fromUtf8(as_release_get_version(d->m_release));
}

QString Release::name() const
{
return QString::fromUtf8(as_release_get_name(d->m_release));
}

QDateTime Release::timestamp() const
{
const guint64 timestamp = as_release_get_timestamp(d->m_release);
Expand Down
1 change: 1 addition & 0 deletions qt/release.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ class APPSTREAMQT_EXPORT Release {
Kind kind() const;

QString version() const;
QString name() const;

QDateTime timestamp() const;
QDateTime timestampEol() const;
Expand Down
47 changes: 47 additions & 0 deletions src/as-release.c
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ typedef struct
{
AsReleaseKind kind;
gchar *version;
gchar *name;
GHashTable *description;
guint64 timestamp;
gchar *date;
Expand Down Expand Up @@ -176,6 +177,7 @@ as_release_finalize (GObject *object)
AsReleasePrivate *priv = GET_PRIVATE (release);

g_free (priv->version);
g_free (priv->name);
g_free (priv->date);
g_free (priv->date_eol);
g_free (priv->url_details);
Expand Down Expand Up @@ -783,6 +785,39 @@ as_release_set_description_translatable (AsRelease *release, gboolean translatab
priv->desc_translatable = translatable;
}

/**
* as_release_get_name:
* @release: a #AsRelease instance.
*
* Gets the release name, or version if unset.
*
* Returns: (nullable): string, or %NULL for invalid
**/
const gchar*
as_release_get_name (AsRelease *release)
{
AsReleasePrivate *priv = GET_PRIVATE (release);
g_return_val_if_fail (AS_IS_RELEASE (release), NULL);
if (priv->name == NULL)
return priv->version;
return priv->name;
}

/**
* as_release_set_name:
* @release: a #AsRelease instance.
* @name: the name string.
*
* Sets the release name.
**/
void
as_release_set_name (AsRelease *release, const gchar *name)
{
AsReleasePrivate *priv = GET_PRIVATE (release);
g_return_if_fail (AS_IS_RELEASE (release));
as_assign_string_safe (priv->name, name);
}

/**
* as_release_load_from_xml:
* @release: an #AsRelease
Expand Down Expand Up @@ -812,6 +847,12 @@ as_release_load_from_xml (AsRelease *release, AsContext *ctx, xmlNode *node, GEr
as_release_set_version (release, prop);
g_free (prop);

prop = as_xml_get_prop_value (node, "name");
if (prop != NULL) {
as_release_set_name (release, prop);
g_free (prop);
}

prop = as_xml_get_prop_value (node, "date");
if (prop != NULL) {
g_autoptr(GDateTime) time = as_iso8601_to_datetime (prop);
Expand Down Expand Up @@ -923,6 +964,8 @@ as_release_to_xml_node (AsRelease *release, AsContext *ctx, xmlNode *root)
as_xml_add_text_prop (subnode,
"version",
priv->version);
if (priv->name != NULL)
as_xml_add_text_prop (subnode, "name", priv->name);

/* set release timestamp / date */
if (priv->timestamp > 0) {
Expand Down Expand Up @@ -1020,6 +1063,8 @@ as_release_load_from_yaml (AsRelease *release, AsContext *ctx, GNode *node, GErr
priv->kind = as_release_kind_from_string (value);
} else if (g_strcmp0 (key, "version") == 0) {
as_release_set_version (release, value);
} else if (g_strcmp0 (key, "name") == 0) {
as_release_set_name (release, value);
} else if (g_strcmp0 (key, "urgency") == 0) {
priv->urgency = as_urgency_kind_from_string (value);
} else if (g_strcmp0 (key, "description") == 0) {
Expand Down Expand Up @@ -1077,6 +1122,8 @@ as_release_emit_yaml (AsRelease *release, AsContext *ctx, yaml_emitter_t *emitte

/* version */
as_yaml_emit_entry (emitter, "version", priv->version);
if (priv->name)
as_yaml_emit_entry (emitter, "name", priv->name);

/* type */
as_yaml_emit_entry (emitter, "type", as_release_kind_to_string (priv->kind));
Expand Down
4 changes: 4 additions & 0 deletions src/as-release.h
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,10 @@ void as_release_set_url (AsRelease *release,
AsReleaseUrlKind url_kind,
const gchar *url);

const gchar *as_release_get_name (AsRelease *release);
void as_release_set_name (AsRelease *release,
const gchar *name);

G_END_DECLS

#endif /* __AS_RELEASE_H */