diff -Nru appstream-0.12.0/data/desktop-environments.txt appstream-0.12.2/data/desktop-environments.txt --- appstream-0.12.0/data/desktop-environments.txt 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/data/desktop-environments.txt 2018-08-04 07:39:44.000000000 +0000 @@ -2,9 +2,13 @@ GNOME KDE Plasma +LXDE LXQt MATE +Razor +ROX Unity XFCE +EDE Cinnamon Pantheon diff -Nru appstream-0.12.0/data/its/metainfo.its appstream-0.12.2/data/its/metainfo.its --- appstream-0.12.0/data/its/metainfo.its 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/data/its/metainfo.its 2018-08-04 07:39:44.000000000 +0000 @@ -6,6 +6,9 @@ /component/summary | /component/description | /component/developer_name | - /component/screenshots/screenshot/caption" + /component/screenshots/screenshot/caption | + /component/releases/release/description | + /component/agreement/agreement_section/name | + /component/agreement/agreement_section/description" translate="yes"/> diff -Nru appstream-0.12.0/debian/changelog appstream-0.12.2/debian/changelog --- appstream-0.12.0/debian/changelog 2018-04-06 19:30:08.000000000 +0000 +++ appstream-0.12.2/debian/changelog 2018-08-19 14:32:23.000000000 +0000 @@ -1,3 +1,34 @@ +appstream (0.12.2-2) unstable; urgency=medium + + * Use HTTPS version of homepage URL + * cache-explicit-variants.patch: Set explicit variant types when + generating the cache, for cases were we may not be able to + infer them automatically (Closes: #906538) + * apt-ignore-exit-status.patch: Don't return failure on metadata issues, + only print a warning and exit normally (Closes: #868018) + + -- Matthias Klumpp Sun, 19 Aug 2018 16:32:23 +0200 + +appstream (0.12.2-1) unstable; urgency=medium + + * New upstream version: 0.12.2 + - Fixes autopkgtest by working around Meson/pkg-config bug + (Closes: #901299) + - Closes a few memory leaks (Closes: #868785) + * Bump standards version: No changes needed + + -- Matthias Klumpp Sat, 04 Aug 2018 15:48:52 +0800 + +appstream (0.12.1-1) unstable; urgency=medium + + * New upstream version: 0.12.1 + * Drop all patches: Applied upstream + * Add build dependency on gperf + * Update symbols file + * Bump standards version: No changes needed + + -- Matthias Klumpp Sun, 10 Jun 2018 18:46:42 +0200 + appstream (0.12.0-3) unstable; urgency=medium * load-desktop-data.patch: Load desktop file data properly again diff -Nru appstream-0.12.0/debian/control appstream-0.12.2/debian/control --- appstream-0.12.0/debian/control 2018-04-05 14:23:38.000000000 +0000 +++ appstream-0.12.2/debian/control 2018-08-19 14:30:45.000000000 +0000 @@ -5,6 +5,7 @@ Build-Depends: debhelper (>= 11), gettext, gobject-introspection, + gperf, gtk-doc-tools, libgirepository1.0-dev (>= 1.53), libglib2.0-dev (>= 2.46), @@ -14,8 +15,8 @@ meson (>= 0.42), qtbase5-dev (>= 5.6), valac -Standards-Version: 4.1.2 -Homepage: http://www.freedesktop.org/wiki/Distributions/AppStream/ +Standards-Version: 4.2.0 +Homepage: https://www.freedesktop.org/wiki/Distributions/AppStream/ Vcs-Git: https://salsa.debian.org/pkgutopia-team/appstream.git Vcs-Browser: https://salsa.debian.org/pkgutopia-team/appstream diff -Nru appstream-0.12.0/debian/libappstream4.symbols appstream-0.12.2/debian/libappstream4.symbols --- appstream-0.12.0/debian/libappstream4.symbols 2018-04-04 16:05:47.000000000 +0000 +++ appstream-0.12.2/debian/libappstream4.symbols 2018-06-10 17:00:35.000000000 +0000 @@ -1,5 +1,26 @@ libappstream.so.4 libappstream4 #MINVER# AS_APPSTREAM_METADATA_PATHS@Base 0.10.0 + as_agreement_add_section@Base 0.12.1 + as_agreement_get_kind@Base 0.12.1 + as_agreement_get_section_default@Base 0.12.1 + as_agreement_get_sections@Base 0.12.1 + as_agreement_get_type@Base 0.12.1 + as_agreement_get_version_id@Base 0.12.1 + as_agreement_kind_from_string@Base 0.12.1 + as_agreement_kind_to_string@Base 0.12.1 + as_agreement_new@Base 0.12.1 + as_agreement_section_get_active_locale@Base 0.12.1 + as_agreement_section_get_description@Base 0.12.1 + as_agreement_section_get_kind@Base 0.12.1 + as_agreement_section_get_name@Base 0.12.1 + as_agreement_section_get_type@Base 0.12.1 + as_agreement_section_new@Base 0.12.1 + as_agreement_section_set_active_locale@Base 0.12.1 + as_agreement_section_set_description@Base 0.12.1 + as_agreement_section_set_kind@Base 0.12.1 + as_agreement_section_set_name@Base 0.12.1 + as_agreement_set_kind@Base 0.12.1 + as_agreement_set_version_id@Base 0.12.1 as_bundle_get_id@Base 0.10.0 as_bundle_get_kind@Base 0.10.0 as_bundle_get_type@Base 0.10.0 @@ -38,6 +59,7 @@ as_checksum_set_kind@Base 0.10.0 as_checksum_set_value@Base 0.10.0 as_component_add_addon@Base 0.10.0 + as_component_add_agreement@Base 0.12.1 as_component_add_bundle@Base 0.10.0 as_component_add_category@Base 0.10.0 as_component_add_content_rating@Base 0.11.0 @@ -54,6 +76,7 @@ as_component_add_url@Base 0.10.0 as_component_get_active_locale@Base 0.10.0 as_component_get_addons@Base 0.10.0 + as_component_get_agreement_by_kind@Base 0.12.1 as_component_get_bundle@Base 0.10.0 as_component_get_bundles@Base 0.10.0 as_component_get_categories@Base 0.10.0 @@ -235,6 +258,7 @@ as_metadata_get_format_version@Base 0.10.0 as_metadata_get_locale@Base 0.10.0 as_metadata_get_origin@Base 0.10.0 + as_metadata_get_parse_flags@Base 0.12.1 as_metadata_get_type@Base 0.10.0 as_metadata_get_update_existing@Base 0.10.0 as_metadata_get_write_header@Base 0.10.0 @@ -249,6 +273,7 @@ as_metadata_set_format_version@Base 0.10.0 as_metadata_set_locale@Base 0.10.0 as_metadata_set_origin@Base 0.10.0 + as_metadata_set_parse_flags@Base 0.12.1 as_metadata_set_update_existing@Base 0.10.0 as_metadata_set_write_header@Base 0.10.0 as_pool_add_component@Base 0.10.0 diff -Nru appstream-0.12.0/debian/patches/01_cache-explicit-variants.patch appstream-0.12.2/debian/patches/01_cache-explicit-variants.patch --- appstream-0.12.0/debian/patches/01_cache-explicit-variants.patch 1970-01-01 00:00:00.000000000 +0000 +++ appstream-0.12.2/debian/patches/01_cache-explicit-variants.patch 2018-08-19 14:28:41.000000000 +0000 @@ -0,0 +1,77 @@ +From 734e9da66bf12fcaa94c10465db2dcf8bb2b94cb Mon Sep 17 00:00:00 2001 +From: Matthias Klumpp +Date: Sun, 19 Aug 2018 16:21:15 +0200 +Subject: [PATCH] cache: Set explicit variant types for cases where they can + not be inferred + +This ensures we do not run into assertion failures in case no array or +dict elements exist from which the final variant type can be +automatically inferred. +This resolves #198 +--- + src/as-agreement.c | 2 +- + src/as-content-rating.c | 2 +- + src/as-release.c | 4 ++-- + src/as-screenshot.c | 2 +- + 4 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/as-agreement.c b/src/as-agreement.c +index 0deee865..70fa5e67 100644 +--- a/src/as-agreement.c ++++ b/src/as-agreement.c +@@ -450,7 +450,7 @@ as_agreement_to_variant (AsAgreement *agreement, GVariantBuilder *builder) + g_variant_builder_add_parsed (&agreement_b, "{'kind', <%u>}", priv->kind); + g_variant_builder_add_parsed (&agreement_b, "{'version_id', %v}", as_variant_mstring_new (priv->version_id)); + +- g_variant_builder_init (§ions_b, G_VARIANT_TYPE_ARRAY); ++ g_variant_builder_init (§ions_b, (const GVariantType *) "aa{sv}"); + for (guint i = 0; i < priv->sections->len; i++) { + as_agreement_section_to_variant (AS_AGREEMENT_SECTION (g_ptr_array_index (priv->sections, i)), §ions_b); + } +diff --git a/src/as-content-rating.c b/src/as-content-rating.c +index 70b4bcde..263a6d01 100644 +--- a/src/as-content-rating.c ++++ b/src/as-content-rating.c +@@ -499,7 +499,7 @@ as_content_rating_to_variant (AsContentRating *content_rating, GVariantBuilder * + GVariantBuilder rating_b; + guint j; + +- g_variant_builder_init (&values_b, G_VARIANT_TYPE_ARRAY); ++ g_variant_builder_init (&values_b, (const GVariantType *) "a{su}"); + for (j = 0; j < priv->keys->len; j++) { + AsContentRatingKey *key = (AsContentRatingKey*) g_ptr_array_index (priv->keys, j); + g_variant_builder_add (&values_b, "{su}", key->id, key->value); +diff --git a/src/as-release.c b/src/as-release.c +index 7a903519..e0908264 100644 +--- a/src/as-release.c ++++ b/src/as-release.c +@@ -922,14 +922,14 @@ as_release_to_variant (AsRelease *release, GVariantBuilder *builder) + gboolean have_sizes = FALSE; + + /* build checksum info */ +- g_variant_builder_init (&checksum_b, G_VARIANT_TYPE_DICTIONARY); ++ g_variant_builder_init (&checksum_b, (const GVariantType *) "a{us}"); + for (j = 0; j < priv->checksums->len; j++) { + AsChecksum *cs = AS_CHECKSUM (g_ptr_array_index (priv->checksums, j)); + as_checksum_to_variant (cs, &checksum_b); + } + + /* build size info */ +- g_variant_builder_init (&sizes_b, G_VARIANT_TYPE_DICTIONARY); ++ g_variant_builder_init (&sizes_b, (const GVariantType *) "a{ut}"); + for (j = 0; j < AS_SIZE_KIND_LAST; j++) { + if (as_release_get_size (release, (AsSizeKind) j) > 0) { + g_variant_builder_add (&sizes_b, "{ut}", +diff --git a/src/as-screenshot.c b/src/as-screenshot.c +index 7c834413..6569dbe3 100644 +--- a/src/as-screenshot.c ++++ b/src/as-screenshot.c +@@ -596,7 +596,7 @@ as_screenshot_to_variant (AsScreenshot *screenshot, GVariantBuilder *builder) + if (priv->images->len == 0) + return FALSE; + +- g_variant_builder_init (&images_b, G_VARIANT_TYPE_ARRAY); ++ g_variant_builder_init (&images_b, (const GVariantType *) "aa{sv}"); + for (i = 0; i < priv->images->len; i++) + as_image_to_variant (AS_IMAGE (g_ptr_array_index (priv->images, i)), &images_b); + diff -Nru appstream-0.12.0/debian/patches/01_load-desktop-data.patch appstream-0.12.2/debian/patches/01_load-desktop-data.patch --- appstream-0.12.0/debian/patches/01_load-desktop-data.patch 2018-04-06 19:08:57.000000000 +0000 +++ appstream-0.12.2/debian/patches/01_load-desktop-data.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,50 +0,0 @@ -From 7a0059253859eedce21c057e53d91bccd6f18d42 Mon Sep 17 00:00:00 2001 -From: Matthias Klumpp -Date: Fri, 6 Apr 2018 20:56:23 +0200 -Subject: [PATCH] Load data from desktop files properly again - -The previous code made absolutely zero logical sense, but at least it -was very consistent in its error. ---- - src/as-pool.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/src/as-pool.c b/src/as-pool.c -index f4846e55..2394ead7 100644 ---- a/src/as-pool.c -+++ b/src/as-pool.c -@@ -840,14 +840,14 @@ as_pool_load_metainfo_data (AsPool *pool) - - mi_cid_desktop = g_strdup_printf ("%s.desktop", mi_cid); - /* check with .desktop suffix too */ -- if (!g_hash_table_contains (priv->known_cids, mi_cid_desktop)) { -+ if (g_hash_table_contains (priv->known_cids, mi_cid_desktop)) { - g_debug ("Skipped: %s (already known)", fname); - continue; - } - } - - /* quickly check if we know the component already */ -- if (!g_hash_table_contains (priv->known_cids, mi_cid)) { -+ if (g_hash_table_contains (priv->known_cids, mi_cid)) { - g_debug ("Skipped: %s (already known)", fname); - continue; - } -@@ -926,7 +926,7 @@ as_pool_load_desktop_entries (AsPool *pool) - if (!as_flags_contains (priv->flags, AS_POOL_FLAG_READ_METAINFO)) { - g_autofree gchar *de_cid = g_path_get_basename (fname); - -- if (!g_hash_table_contains (priv->known_cids, de_cid)) { -+ if (g_hash_table_contains (priv->known_cids, de_cid)) { - g_debug ("Skipped: %s (already known)", fname); - continue; - } -@@ -934,7 +934,7 @@ as_pool_load_desktop_entries (AsPool *pool) - /* check without .desktop suffix too */ - if (g_str_has_suffix (de_cid, ".desktop")) { - de_cid[strlen (de_cid) - 8] = '\0'; -- if (!g_hash_table_contains (priv->known_cids, de_cid)) { -+ if (g_hash_table_contains (priv->known_cids, de_cid)) { - g_debug ("Skipped: %s (already known)", fname); - continue; - } diff -Nru appstream-0.12.0/debian/patches/02_apt-ignore-exit-status.patch appstream-0.12.2/debian/patches/02_apt-ignore-exit-status.patch --- appstream-0.12.0/debian/patches/02_apt-ignore-exit-status.patch 1970-01-01 00:00:00.000000000 +0000 +++ appstream-0.12.2/debian/patches/02_apt-ignore-exit-status.patch 2018-08-19 14:28:58.000000000 +0000 @@ -0,0 +1,25 @@ +From 2375bf9b79504e5d6caf18ce25a34515937c3231 Mon Sep 17 00:00:00 2001 +From: Matthias Klumpp +Date: Sun, 19 Aug 2018 06:22:25 +0200 +Subject: [PATCH] apt: Ignore errors post-update + +If there are errors we still display them as informational messages so +we know that something bad happened, but we will no longer return an +error code and therefore give users the impression that the whole update +procedure failed. +This should make malformed metadata errors much less dramatic in future. +--- + contrib/apt-conf/50appstream | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/contrib/apt-conf/50appstream b/contrib/apt-conf/50appstream +index e4bbc3e5..625b094a 100644 +--- a/contrib/apt-conf/50appstream ++++ b/contrib/apt-conf/50appstream +@@ -73,5 +73,5 @@ Acquire::IndexTargets { + + # Refresh AppStream cache when APT's cache is updated (i.e. apt update) + APT::Update::Post-Invoke-Success { +- "if /usr/bin/test -w /var/cache/app-info -a -e /usr/bin/appstreamcli; then appstreamcli refresh-cache > /dev/null; fi"; ++ "if /usr/bin/test -w /var/cache/app-info -a -e /usr/bin/appstreamcli; then appstreamcli refresh-cache > /dev/null | true; fi"; + }; diff -Nru appstream-0.12.0/debian/patches/series appstream-0.12.2/debian/patches/series --- appstream-0.12.0/debian/patches/series 2018-04-06 19:09:44.000000000 +0000 +++ appstream-0.12.2/debian/patches/series 2018-08-19 14:30:22.000000000 +0000 @@ -1 +1,2 @@ -01_load-desktop-data.patch +01_cache-explicit-variants.patch +02_apt-ignore-exit-status.patch diff -Nru appstream-0.12.0/docs/html/chap-CollectionData.html appstream-0.12.2/docs/html/chap-CollectionData.html --- appstream-0.12.0/docs/html/chap-CollectionData.html 2018-04-04 15:53:50.000000000 +0000 +++ appstream-0.12.2/docs/html/chap-CollectionData.html 2018-08-04 07:39:35.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 3. Collection Metadata

Product SiteDocumentation Site

+Chapter 3. Collection Metadata

Product SiteDocumentation Site

Chapter 3. Collection Metadata

Additionally to the metainfo files shipped by upstream projects, AppStream also provides an XML and YAML format to make information about not installed software components known to the system.
@@ -301,6 +301,9 @@ </suggests>
<content_rating/>
This optional tag follows the same schema as described for metainfo files in <content_rating/>. +
+ ⁠<agreement/>
+ This optional tag follows the same schema as described for metainfo files in <agreement/>, with the exception of description tags in its agreement_section child tags now following the same translation rules as the toplevel <description/> tag in collection metadata.

3.1.5. Example file

This is an example AppStream metadata file: @@ -371,4 +374,4 @@ </provides> </component> <!-- more components here! --> -</components>

\ No newline at end of file +</components>
\ No newline at end of file diff -Nru appstream-0.12.0/docs/html/chap-Metadata.html appstream-0.12.2/docs/html/chap-Metadata.html --- appstream-0.12.0/docs/html/chap-Metadata.html 2018-04-04 15:53:50.000000000 +0000 +++ appstream-0.12.2/docs/html/chap-Metadata.html 2018-08-04 07:39:35.000000000 +0000 @@ -1,6 +1,6 @@ Chapter 2. Upstream Metadata

Product SiteDocumentation Site

AppStream allows upstream projects to define metadata about the components they provide using small XML files, metainfo files, which get installed into locations on the client system and are used by distribuors to enhance their metadata.
A "component" is a piece of software, like an application, a library, a font or a codec. For several components, especially those which are shown in software-centers, we provide specialized metainfo files to define specific properties and data of these components. For example, applications and fonts support screenshots, while codecs don't. @@ -22,7 +22,7 @@

Note

Applications are a special case here, because they are usually treated differently by software centers (and also for historical reasons). If your metainfo file contains an application, as described in Section 2.2, “Desktop Applications”, you may want to install it as /usr/share/metainfo/%{id}.appdata.xml.

Legacy Path

- The /usr/share/appdata/ path must be scanned by AppStream tools as well, to support legacy applications installing metadata there. For new software components, it is advised not to use this directory. + AppStream tools scan the /usr/share/appdata/ path for legacy compatibility as well. It should not be used anymore by new software though, even on older Linux distributions (like RHEL 7 and Ubuntu 16.04 LTS) the metainfo path is well supported. Support for the legacy path might be dropped completely in future.

2.1.3. XML Specification

The XML for a generic component definition starts with a <component> tag as the root element. The <component> element must at least have an id, name and summary tag; and a provides tag with appropriate children is highly recommended. All possible tags in the generic set are: @@ -359,7 +359,59 @@
<content_rating type="oars-1.0">
   <content_attribute id="drugs-alcohol">moderate</content_attribute>
   <content_attribute id="language-humor">mild</content_attribute>
-</content_rating>
+</content_rating>
+ ⁠<agreement/>
+ The <agreement/> tag is an optional tag which can be added to specify agreements the user has to accept or acknowledge before using the software. This tag can appear multiple times, if multiple agreements are required for a software component. +
+ The tag should have a type property, indicating the type of the agreement. If the type property is missing, an agreement of type generic is assumed. Currently recognized agreement types are: +
  • + eula - an end-user license agreement the user has to accept before installing the software. +
  • + privacy - a privacy statement for the software, usually a GDPR compliant statement +
+ The <agreement/> tag must have a version_id property, containing a version identifier for the license. It may be used by client applications to determine whether an agreement needs to be shown again after it has been accepted already by the user. +
+ Every <agreement/> must have <agreement_section/> children which each have an id property indicating the specific section that they describe (e.g. introduction). These values may be used to automatically jump to a specific section. Each <agreement_section/> has a translatable name child denoting the name or title of the respective section, and a description child that is translated according to the same translation rules that apply to the <description/> tag. The description contains the content of the respective agreement section. +
+ Example: +
<agreement type="privacy" version_id="1.0">
+    <agreement_section type="introduction">
+      <name>Introduction</name>
+      <description>
+        <p>
+          We hold personal data about vendors, administrators, clients and other
+          individuals for a variety of purposes.
+          [...]
+        </p>
+      </description>
+    </agreement_section>
+
+    <agreement_section type="scope">
+      <name>Scope</name>
+      <description>
+        <p>
+          This policy applies to all users who have access to any of the personally
+          identifiable data.
+        </p>
+      </description>
+    </agreement_section>
+
+    [...]
+</agreement>
+ ⁠<custom/>
+ The <custom/> tag is an optional tag which can be used as a key-value store for custom values that are not covered by the AppStream specification. The tag is usually stripped out or filtered by collection metadata generators, such as appstream-generator. When present, the data contained in a custom can be read by all tools making use of AppStream metadata, making it an ideal extension point when using an existing AppStream library is desired and some custom additions to the metadata are still required. The custom tag is also often used for prototyping new features in AppStream. +
+ The tag must have value children which must have a key property. The value of the value tag denotes a user-defined value, while the key string set for the key property denotes a user-specified key string. The key must be unique, multiple keys with the same name are not allowed. +
+ To avoid name conflicts, it is recommended to prefix keys with a vendor prefix, like GNOME:: or KDE::. +

Note

+ Before using a custom tag, please consider if there is a better way to achieve your goal than adding the data to the AppStream metainfo file, or whether AppStream maybe already contains a way to achieve what you want. Additionally, if you think that the purpose you use the custom tag for is generally useful, please file a feature request against AppStream, so we can discuss adding the new feature to the specification and make it more usable for a bigger audience. +
+ Example: +
<custom>
+  <value key="MyCorp::app_color">#FF0000</value>
+  <value key="MyCorp::special_id">284fd262-6870-42a6-89a4-b189d3109e3e</value>
+</custom>
An example for a very basic component file could look like this:

 <?xml version="1.0" encoding="UTF-8"?>
diff -Nru appstream-0.12.0/docs/html/chap-Quickstart.html appstream-0.12.2/docs/html/chap-Quickstart.html
--- appstream-0.12.0/docs/html/chap-Quickstart.html	2018-04-04 15:53:50.000000000 +0000
+++ appstream-0.12.2/docs/html/chap-Quickstart.html	2018-08-04 07:39:35.000000000 +0000
@@ -7,13 +7,13 @@
       ⁠4.1.1. Introduction
Every software center that exists allows the user to look at screenshots and a long description of the application before it is installed. For most users it allows them to answer the question Do I want to install this application?. Traditionally in Linux distributions, we have none of this data for the vast majority of our desktop user-installable applications. The packages-descriptions are describing all contents of a package, and not just a single application. They are also often written in a technical language and refer to other packages, which makes it hard for beginners to understand what the application they want to install really does. Additionally, if you are not using Debian or Ubuntu, the package descriptions are often untranslated. Also, packages do not provide some metadata users might be interested in before installing an application.
- To solve this, we have defined a new data file, which the upstream project can optionally translate using the same technique as Desktop files or GSetting schemas. The AppData specification is a subset of the AppStream metadata (see Section 3.1, “AppStream collection XML”) and extends the generic component metadata with fields specific for applications (see Section 2.1, “Generic Component”). + To solve this, we have defined a new data file, which the upstream project can optionally translate using the same technique as Desktop files or GSetting schemas. The application metainfo ("appdata") specification is a subset of the AppStream metadata (see Section 3.1, “AppStream collection XML”) and extends the generic component metadata with fields specific for applications (see Section 2.1, “Generic Component”).
- The AppData files override any values which are automatically fetched by the AppStream data generator. Applications can ship one or more files in /usr/share/metainfo/%{id}.appdata.xml. + The application-metainfo files override any values which are automatically fetched by the AppStream data generator. Applications can ship one or more files in /usr/share/metainfo/%{id}.appdata.xml.
- AppData files can - just like all other metainfo files - be translated. See the section about translation for more information about that. + Application metainfo files can - just like all other metainfo files - be translated. See the section about translation for more information about that.

Note

- All tags defined in the generic component specification are valid in AppData as well, an application is just defined as a specialized component, which has the additional benefit of being displayed in a software-center application. + All tags defined in the generic component specification are valid for components of type desktop-application as well, an application is just defined as a specialized component, which has the additional benefit of being displayed in a software-center application.

4.1.2. Example file

The file should contain something like this: Binary files /tmp/tmpokdmFN/pyxEgD7yA0/appstream-0.12.0/docs/html/Common_Content/images/dot.png and /tmp/tmpokdmFN/eG6pDuxLCP/appstream-0.12.2/docs/html/Common_Content/images/dot.png differ Binary files /tmp/tmpokdmFN/pyxEgD7yA0/appstream-0.12.0/docs/html/Common_Content/images/h1-bg.png and /tmp/tmpokdmFN/eG6pDuxLCP/appstream-0.12.2/docs/html/Common_Content/images/h1-bg.png differ Binary files /tmp/tmpokdmFN/pyxEgD7yA0/appstream-0.12.0/docs/html/Common_Content/images/image_left.png and /tmp/tmpokdmFN/eG6pDuxLCP/appstream-0.12.2/docs/html/Common_Content/images/image_left.png differ Binary files /tmp/tmpokdmFN/pyxEgD7yA0/appstream-0.12.0/docs/html/Common_Content/images/shine.png and /tmp/tmpokdmFN/eG6pDuxLCP/appstream-0.12.2/docs/html/Common_Content/images/shine.png differ Binary files /tmp/tmpokdmFN/pyxEgD7yA0/appstream-0.12.0/docs/html/Common_Content/images/stock-go-back.png and /tmp/tmpokdmFN/eG6pDuxLCP/appstream-0.12.2/docs/html/Common_Content/images/stock-go-back.png differ Binary files /tmp/tmpokdmFN/pyxEgD7yA0/appstream-0.12.0/docs/html/Common_Content/images/stock-go-forward.png and /tmp/tmpokdmFN/eG6pDuxLCP/appstream-0.12.2/docs/html/Common_Content/images/stock-go-forward.png differ Binary files /tmp/tmpokdmFN/pyxEgD7yA0/appstream-0.12.0/docs/html/Common_Content/images/stock-go-up.png and /tmp/tmpokdmFN/eG6pDuxLCP/appstream-0.12.2/docs/html/Common_Content/images/stock-go-up.png differ Binary files /tmp/tmpokdmFN/pyxEgD7yA0/appstream-0.12.0/docs/html/Common_Content/images/stock-home.png and /tmp/tmpokdmFN/eG6pDuxLCP/appstream-0.12.2/docs/html/Common_Content/images/stock-home.png differ Binary files /tmp/tmpokdmFN/pyxEgD7yA0/appstream-0.12.0/docs/html/Common_Content/images/watermark-draft.png and /tmp/tmpokdmFN/eG6pDuxLCP/appstream-0.12.2/docs/html/Common_Content/images/watermark-draft.png differ diff -Nru appstream-0.12.0/docs/html/index.html appstream-0.12.2/docs/html/index.html --- appstream-0.12.0/docs/html/index.html 2018-04-04 15:53:50.000000000 +0000 +++ appstream-0.12.2/docs/html/index.html 2018-08-04 07:39:35.000000000 +0000 @@ -8,4 +8,4 @@ AppStream is a collaborative effort for enhancing the way we interact with the software repositories provided by the distribution by standardizing sets of additional metadata.
AppStream provides the foundation to build software-center applications. It additionally provides specifications for things like an unified software metadata database, screenshot services and various other things needed to create user-friendly application-centers for software distributions. -
\ No newline at end of file + \ No newline at end of file diff -Nru appstream-0.12.0/docs/html/ix01.html appstream-0.12.2/docs/html/ix01.html --- appstream-0.12.0/docs/html/ix01.html 2018-04-04 15:53:50.000000000 +0000 +++ appstream-0.12.2/docs/html/ix01.html 2018-08-04 07:39:35.000000000 +0000 @@ -1,3 +1,3 @@ -Index

Product SiteDocumentation Site

+Index

Product SiteDocumentation Site

Index

\ No newline at end of file diff -Nru appstream-0.12.0/docs/html/sect-AppStream-YAML.html appstream-0.12.2/docs/html/sect-AppStream-YAML.html --- appstream-0.12.0/docs/html/sect-AppStream-YAML.html 2018-04-04 15:53:50.000000000 +0000 +++ appstream-0.12.2/docs/html/sect-AppStream-YAML.html 2018-08-04 07:39:35.000000000 +0000 @@ -343,7 +343,23 @@ - kernel: Linux version: '>= 4.15' - id: org.example.TestDependency - version: == 1.2

Field info: value-type:list(dict)

+ version: == 1.2

Field info: value-type:list(dict)

+ ⁠Agreements
+ See <agreement/>. +
+ A list containing the agreements as dictionaries, with a sections key containing a list of sections. All dict values are the same as the respective XML tag values / properties. +
+ Example: +
Agreements:
+- type: eula
+  version_id: 1.2.3a
+  sections:
+  - type: intro
+    name:
+      C: Intro\n"
+    description:
+      C: >-
+        <p>If it breaks, you get to keep both pieces.</p>

Field info: value-type:list(dict)

3.2.6. Example YAML file

This is an example AppStream DEP-11 metadata file:
diff -Nru appstream-0.12.0/docs/html/sect-Metadata-Localization.html appstream-0.12.2/docs/html/sect-Metadata-Localization.html
--- appstream-0.12.0/docs/html/sect-Metadata-Localization.html	2018-04-04 15:53:50.000000000 +0000
+++ appstream-0.12.2/docs/html/sect-Metadata-Localization.html	2018-08-04 07:39:35.000000000 +0000
@@ -1,5 +1,5 @@
 
-2.12. Localization

Product SiteDocumentation Site

+2.12. Localization

Product SiteDocumentation Site

2.12. Localization

2.12.1. Localization

The localization component type describes language packs for individual software components or groups of software components. A language pack includes anything necessary to localize a software component for a specific language and/or country. This is usually translations, but may also be translated media content, currency information and other things. A localization component extends one or multiple other components and defines the languages it provides via its languages tag. @@ -55,4 +55,4 @@ </languages>

For a component of type localization, the following tags are required and must be present for a valid document: <id/>, <name/>, <summary/>, <metadata_license/>, <extends/>, <languages/>. -
\ No newline at end of file + \ No newline at end of file diff -Nru appstream-0.12.0/docs/html/sect-Metadata-Repository.html appstream-0.12.2/docs/html/sect-Metadata-Repository.html --- appstream-0.12.0/docs/html/sect-Metadata-Repository.html 1970-01-01 00:00:00.000000000 +0000 +++ appstream-0.12.2/docs/html/sect-Metadata-Repository.html 2018-08-04 07:39:35.000000000 +0000 @@ -0,0 +1,38 @@ + +2.13. Repositories

Product SiteDocumentation Site

+ ⁠2.13. Repositories

+ ⁠2.13.1. Introduction

+ A repository component describes a remote archive of digital content, usually other software or additional data (e.g. themes, icons, books, music, ...). Upon installation of a component of this type, the repective repository is added to the system and activated, letting the user access the new content. +
+ The metadata described in this document is built upon the generic component metadata (see Section 2.1, “Generic Component”). All tags valid for a generic component are valid for a repository component as well. +
+ In order to add metadata about a software repository, projects can provide one or more metainfo files in /usr/share/metainfo/%{id}.metainfo.xml. +

+ ⁠2.13.2. File specification

+ The basic structure for a generic component as described at Section 2.1.3, “XML Specification” applies. Note that the XML root must have the type property set to repository, while in a generic component this property can be omitted. This clearly identified this metainfo document as describing a repository. +
+ The following list describes tags for repository upstream metadata and provides some additional information about the values the tags are expected to have. If no information is given about a tag, refer to the respective tag in Section 2.1, “Generic Component”. +
+ ⁠<id/>
+ For repositories, the <id/> tag value must follow the AppStream ID naming conventions (it should be a reverse-DNS name). +
<metadata_license/>
+ The <metadata_license/> tag as described in <metadata_license/> must be present. +
<name/>
+ A name must be present for repositories. See <name/> for a detailed description of this tag. +
<summary/>
+ A summary must be present for repositories. See <summary/> for a detailed description of this tag. +
+ ⁠<extends/>
+ This tag is refers to the ID of the component this repository is added to, similarly to how components of type addon work. +
+ Adding an extends tag ensures the respective repository is tied to its main component, e.g. a source for firmware downloads is tied to the firmware update service, or a repository for a site-specific package manager is tied to the tool that can actually install pieces from the repository. +
+ The <extends/> tag may be specified multiple times. +
+ ⁠<agreement/>
+ It is recommended to add a GDPR compliant privacy statement to repository components, in case any personal data is acquired when the repository is accessed. +
+ The agreement tag allows to add a privacy statement and other agreements easily. Refer to the <agreement/> tag as described for generic components for information on how to use agreements in AppStream. +
+ For a component of type repository, the following tags are required and must always be present: <id/>, <metadata_license/>, <name/>, <summary/>. +
\ No newline at end of file diff -Nru appstream-0.12.0/docs/html/sect-Quickstart-Translation.html appstream-0.12.2/docs/html/sect-Quickstart-Translation.html --- appstream-0.12.0/docs/html/sect-Quickstart-Translation.html 2018-04-04 15:53:50.000000000 +0000 +++ appstream-0.12.2/docs/html/sect-Quickstart-Translation.html 2018-08-04 07:39:35.000000000 +0000 @@ -21,7 +21,7 @@
intltool-merge -u -c ./po/.intltool-merge-cache ./po -x <file>.xml.in <file>.xml

4.4.2.1. Integrating with Autotools (the AppStream way)

The generic way to add translation to your AppStream metadata in case you use Autotools is by using the following code snippet: -
appstreamdir = $(datadir)/appdata/
+			
appstreamdir = $(datadir)/metainfo/
 appstream_in_files = gedit.appdata.xml.in
 appstream_DATA = $(appstream_in_files:.xml.in=.xml)
 @INTLTOOL_XML_RULE@
diff -Nru appstream-0.12.0/docs/meson.build appstream-0.12.2/docs/meson.build
--- appstream-0.12.0/docs/meson.build	2018-04-04 15:53:56.000000000 +0000
+++ appstream-0.12.2/docs/meson.build	2018-08-04 07:39:44.000000000 +0000
@@ -59,6 +59,7 @@
     'sources/metainfo/inputmethod.xml',
     'sources/metainfo/localization.xml',
     'sources/metainfo/MetaInfo.xml',
+    'sources/metainfo/repository.xml',
     'sources/metainfo/service.xml',
     'sources/metainfo/webapp.xml',
     'sources/Project_Desc.xml',
diff -Nru appstream-0.12.0/docs/sources/collection/xmldata.xml appstream-0.12.2/docs/sources/collection/xmldata.xml
--- appstream-0.12.0/docs/sources/collection/xmldata.xml	2018-04-04 15:53:56.000000000 +0000
+++ appstream-0.12.2/docs/sources/collection/xmldata.xml	2018-08-04 07:39:44.000000000 +0000
@@ -636,6 +636,17 @@
 				
 			
 
+			
+				<agreement/>
+				
+					
+						This optional tag follows the same schema as described for metainfo files in , with the exception
+						of description tags in its agreement_section child tags now following the same translation
+						rules as the toplevel  tag in collection metadata.
+					
+				
+			
+
 		
 	
 
diff -Nru appstream-0.12.0/docs/sources/collection/yamldata.xml appstream-0.12.2/docs/sources/collection/yamldata.xml
--- appstream-0.12.0/docs/sources/collection/yamldata.xml	2018-04-04 15:53:56.000000000 +0000
+++ appstream-0.12.2/docs/sources/collection/yamldata.xml	2018-08-04 07:39:44.000000000 +0000
@@ -827,6 +827,32 @@
 				
 			
 
+
+			
+				Agreements
+				
+					See .
+					
+						A list containing the agreements as dictionaries, with a sections key containing a list of sections.
+						All dict values are the same as the respective XML tag values / properties.
+					
+					
+						Example:
+					
+					-
+        

If it breaks, you get to keep both pieces.

]]>
+ Field info: value-type:list(dict) +
+
+ diff -Nru appstream-0.12.0/docs/sources/man/appstreamcli.1.xml appstream-0.12.2/docs/sources/man/appstreamcli.1.xml --- appstream-0.12.0/docs/sources/man/appstreamcli.1.xml 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/docs/sources/man/appstreamcli.1.xml 2018-08-04 07:39:44.000000000 +0000 @@ -13,9 +13,9 @@ - appstream-cli + appstreamcli - 2012-2016 + 2012-2018 Matthias Klumpp AppStream @@ -187,6 +187,30 @@ + + + + + Compare two version numbers. If two version numbers are given as parameters, the versions will be compared and the + comparison result will be printed to stdout. + + + If a version number, a comparison operator and another version number are passed in as parameter, the result of the comparison + operation will be printed to stdout, and &package; will exit with a non-zero exit status in case the comparison + failed. + The comparison operator can be one of the following: + + + eq - Equal to + ne - Not equal to + lt - Lesser than + gt - Greater than + le - Lesser than or equal to + ge - Greater than or equal to + + + + diff -Nru appstream-0.12.0/docs/sources/metainfo/component.xml appstream-0.12.2/docs/sources/metainfo/component.xml --- appstream-0.12.0/docs/sources/metainfo/component.xml 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/docs/sources/metainfo/component.xml 2018-08-04 07:39:44.000000000 +0000 @@ -43,9 +43,10 @@ Legacy Path - The /usr/share/appdata/ path must be scanned by AppStream tools as well, to support legacy applications installing - metadata there. - For new software components, it is advised not to use this directory. + AppStream tools scan the /usr/share/appdata/ path for legacy compatibility as well. It should not be used + anymore by new software though, even on older Linux distributions (like RHEL 7 and Ubuntu 16.04 LTS) the metainfo path is well + supported. + Support for the legacy path might be dropped completely in future. @@ -900,6 +901,99 @@ + + <agreement/> + + + The <agreement/> tag is an optional tag which can be added to specify agreements the user has to accept or acknowledge before using the software. + This tag can appear multiple times, if multiple agreements are required for a software component. + + + The tag should have a type property, indicating the type of the agreement. If the type property is missing, + an agreement of type generic is assumed. + Currently recognized agreement types are: + + + eula - an end-user license agreement the user has to accept before installing the software. + privacy - a privacy statement for the software, usually a GDPR compliant statement + + + The <agreement/> tag must have a version_id property, containing a version identifier for the license. It may be used by client applications to + determine whether an agreement needs to be shown again after it has been accepted already by the user. + + + Every <agreement/> must have <agreement_section/> children which each have an id property indicating + the specific section that they describe (e.g. introduction). These values may be used to automatically jump to a specific section. + Each <agreement_section/> has a translatable name child denoting the name or title of the respective section, and a description + child that is translated according to the same translation rules that apply to the tag. + The description contains the content of the respective agreement section. + + + Example: + + + + Introduction + +

+ We hold personal data about vendors, administrators, clients and other + individuals for a variety of purposes. + [...] +

+
+
+ + + Scope + +

+ This policy applies to all users who have access to any of the personally + identifiable data. +

+
+
+ + [...] +]]>
+
+
+ + + <custom/> + + + The <custom/> tag is an optional tag which can be used as a key-value store for custom values that are not covered by the AppStream specification. + The tag is usually stripped out or filtered by collection metadata generators, such as appstream-generator. + When present, the data contained in a custom can be read by all tools making use of AppStream metadata, making it an ideal extension point when using + an existing AppStream library is desired and some custom additions to the metadata are still required. + The custom tag is also often used for prototyping new features in AppStream. + + + The tag must have value children which must have a key property. The value of the value + tag denotes a user-defined value, while the key string set for the key property denotes a user-specified key string. + The key must be unique, multiple keys with the same name are not allowed. + + + To avoid name conflicts, it is recommended to prefix keys with a vendor prefix, like GNOME:: or KDE::. + + + + Before using a custom tag, please consider if there is a better way to achieve your goal than adding the data to the AppStream metainfo file, + or whether AppStream maybe already contains a way to achieve what you want. + Additionally, if you think that the purpose you use the custom tag for is generally useful, please file a feature request against AppStream, + so we can discuss adding the new feature to the specification and make it more usable for a bigger audience. + + + + Example: + + + #FF0000 + 284fd262-6870-42a6-89a4-b189d3109e3e +]]> + + + diff -Nru appstream-0.12.0/docs/sources/metainfo/MetaInfo.xml appstream-0.12.2/docs/sources/metainfo/MetaInfo.xml --- appstream-0.12.0/docs/sources/metainfo/MetaInfo.xml 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/docs/sources/metainfo/MetaInfo.xml 2018-08-04 07:39:44.000000000 +0000 @@ -38,5 +38,6 @@ + diff -Nru appstream-0.12.0/docs/sources/metainfo/repository.xml appstream-0.12.2/docs/sources/metainfo/repository.xml --- appstream-0.12.0/docs/sources/metainfo/repository.xml 1970-01-01 00:00:00.000000000 +0000 +++ appstream-0.12.2/docs/sources/metainfo/repository.xml 2018-08-04 07:39:44.000000000 +0000 @@ -0,0 +1,121 @@ + + +%BOOK_ENTITIES; +]> + +
+ Repositories + +
+ Introduction + + A repository component describes a remote archive of digital content, usually other + software or additional data (e.g. themes, icons, books, music, ...). Upon installation of + a component of this type, the repective repository is added to the system and activated, + letting the user access the new content. + + + The metadata described in this document is built upon the generic component metadata (see ). + All tags valid for a generic component are valid for a repository component as well. + + + In order to add metadata about a software repository, projects can provide one or more metainfo files + in /usr/share/metainfo/%{id}.metainfo.xml. + + +
+ +
+ File specification + + + The basic structure for a generic component as described at applies. + Note that the XML root must have the type property set to repository, while in a generic component this + property can be omitted. This clearly identified this metainfo document as describing a repository. + + + + The following list describes tags for repository upstream metadata and provides some additional information about the values + the tags are expected to have. + If no information is given about a tag, refer to the respective tag in . + + + + + <id/> + + + For repositories, the <id/> tag value must follow the AppStream ID naming conventions (it should be a reverse-DNS name). + + + + + + <metadata_license/> + + + The <metadata_license/> tag as described in must be present. + + + + + + <name/> + + + A name must be present for repositories. See for a detailed description of this tag. + + + + + + <summary/> + + + A summary must be present for repositories. See for a detailed description of this tag. + + + + + + <extends/> + + + This tag is refers to the ID of the component this repository is added to, similarly to how components of + type addon work. + + + Adding an extends tag ensures the respective repository is tied to its main component, + e.g. a source for firmware downloads is tied to the firmware update service, or a repository for a + site-specific package manager is tied to the tool that can actually install pieces from the repository. + + + The <extends/> tag may be specified multiple times. + + + + + + <agreement/> + + + It is recommended to add a GDPR compliant privacy statement to repository + components, in case any personal data is acquired when the repository is accessed. + + + The agreement tag allows to add a privacy statement and other agreements easily. Refer to the tag + as described for generic components for information on how to use agreements in AppStream. + + + + + + + + For a component of type repository, the following tags are required and must always be present: , + , , . + + +
+
diff -Nru appstream-0.12.0/docs/sources/quickstart/desktop-apps.xml appstream-0.12.2/docs/sources/quickstart/desktop-apps.xml --- appstream-0.12.0/docs/sources/quickstart/desktop-apps.xml 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/docs/sources/quickstart/desktop-apps.xml 2018-08-04 07:39:44.000000000 +0000 @@ -21,20 +21,20 @@ To solve this, we have defined a new data file, which the upstream project can optionally translate using the same technique as Desktop files or GSetting schemas. - The AppData specification is a subset of the AppStream metadata (see ) and extends + The application metainfo ("appdata") specification is a subset of the AppStream metadata (see ) and extends the generic component metadata with fields specific for applications (see ). - The AppData files override any values which are automatically fetched by the AppStream data generator. + The application-metainfo files override any values which are automatically fetched by the AppStream data generator. Applications can ship one or more files in /usr/share/metainfo/%{id}.appdata.xml. - AppData files can - just like all other metainfo files - be translated. See the section about translation for more information about that. + Application metainfo files can - just like all other metainfo files - be translated. See the section about translation for more information about that. - All tags defined in the generic component specification are valid in AppData as well, an application is just - defined as a specialized component, which has the additional benefit of being displayed in a software-center application. + All tags defined in the generic component specification are valid for components of type desktop-application as well, + an application is just defined as a specialized component, which has the additional benefit of being displayed in a software-center application. diff -Nru appstream-0.12.0/docs/sources/quickstart/translation.xml appstream-0.12.2/docs/sources/quickstart/translation.xml --- appstream-0.12.0/docs/sources/quickstart/translation.xml 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/docs/sources/quickstart/translation.xml 2018-08-04 07:39:44.000000000 +0000 @@ -66,7 +66,7 @@ The generic way to add translation to your AppStream metadata in case you use Autotools is by using the following code snippet:
- enum matching +gperf = find_program('gperf') + # # Modules # diff -Nru appstream-0.12.0/NEWS appstream-0.12.2/NEWS --- appstream-0.12.0/NEWS 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/NEWS 2018-08-04 07:39:44.000000000 +0000 @@ -1,3 +1,90 @@ +Version 0.12.2 +~~~~~~~~~~~~~~ +Released: 2018-08-04 + +Bugfixes: + * Fix a couple of incorrect g_ptr_array_unrefs (Iain Lane) + * Use autofree functions instead of freeing resources + explicitly (Matthias Klumpp) + * Add missing const (Matthias Klumpp) + * Ensure we don't produce a .pc file with unnecessary + Requires.private lines (Matthias Klumpp) + * Stop leaking local GVariantDict instance contents (Phil Miller) + * Drop leaked references to container items (Phil Miller) + +Translation: + * Norwegian Bokmål + - Allan Nordhøy + * Swedish + - Anders Jonsson + * Indonesian + - Andika Triwidada + * Chinese (Traditional) + - Chang-Chia Tseng + * Dutch + - Heimen Stoffels + * French + - Hugo Locurcio + * Deutsch + - James Bond + * Italian + - Milo Casagrande + * Lithuanian + - Moo + * Čeština + - Pavel Borecki + * Português (Brasil) + - Rafael Fontenelle + * Catalan + - Robert Antoni Buj Gelonch + * Arabic + - alaazghoul + +Version 0.12.1 +~~~~~~~~~~~~~~ +Released: 2018-06-10 + +Features: + * ascli: Add command to compare version numbers (Matthias Klumpp) + * yaml: Allow reading multiple localized strings from YAML data (Matthias Klumpp) + * yaml: Always include the untranslated strings (Matthias Klumpp) + * Allow to ignore media_baseurl when parsing metadata (Matthias Klumpp) + * xml: Add implementation of the agreement tag (Matthias Klumpp) + * Add new "repository" component type (Matthias Klumpp) + * yaml: Implement Agreements field (Matthias Klumpp) + * cache: Implement support for agreements (Matthias Klumpp) + * tests: Improve cache data tests, add agreement tag test (Matthias Klumpp) + * Use gperf for perfect hash generation for some tags (Matthias Klumpp) + * tests: Add rundimentary performance test (Matthias Klumpp) + * its: Mark agreement sections as translatable (Matthias Klumpp) + * qt: Add support for service/repository component types (Matthias Klumpp) + +Specification: + * docs: Describe the custom tag (Matthias Klumpp) + * spec: Describe the new agreement tag (Matthias Klumpp) + * docs: Clarify that the /usr/share/appdata/ path is legacy and should + not be used (Matthias Klumpp) + +Bugfixes: + * its: Allow translation of release descriptions (Marc J) + * Load data from desktop files properly again (Matthias Klumpp) + * Update desktop-environment list (Matthias Klumpp) + * qt: Don't warn about inlining in maintainer mode (Matthias Klumpp) + +Translation: + * Spanish + - Adolfo Jayme Barrientos + * Русский + - Igor + * French + - Jean-François Michaud + * Dutch + - Jeff Huijsmans + * Polish + - Piotr Drąg + * Ukrainian + - Yuri Chornoivan + Version 0.12.0 ~~~~~~~~~~~~~~ Released: 2018-04-04 diff -Nru appstream-0.12.0/po/appstream.pot appstream-0.12.2/po/appstream.pot --- appstream-0.12.0/po/appstream.pot 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/po/appstream.pot 2018-08-04 07:39:44.000000000 +0000 @@ -7,7 +7,7 @@ msgid "" msgstr "Project-Id-Version: appstream\n" "Report-Msgid-Bugs-To: appstream@lists.freedesktop.org\n" - "POT-Creation-Date: 2018-04-04 17:28+0200\n" + "POT-Creation-Date: 2018-06-10 15:36+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -47,7 +47,7 @@ msgid "Also show pedantic hints." msgstr "" -#: tools/appstream-cli.c:604 +#: tools/appstream-cli.c:696 msgid "An item type (e.g. lib, bin, python3, …)" msgstr "" @@ -60,7 +60,7 @@ msgstr "" #. TRANSLATORS: Output if appstreamcli --version is run and the CLI and libappstream versions differ. -#: tools/appstream-cli.c:696 +#: tools/appstream-cli.c:789 #, c-format msgid "AppStream CLI tool version: %s\n" "AppStream library version: %s" @@ -89,7 +89,7 @@ #. TRANSLATORS: This is the header to the --help menu for subcommands #. TRANSLATORS: This is the header to the --help menu -#: tools/appstream-cli.c:143 tools/appstream-cli.c:597 +#: tools/appstream-cli.c:143 tools/appstream-cli.c:689 msgid "AppStream command-line interface" msgstr "" @@ -103,7 +103,7 @@ msgstr "" #. TRANSLATORS: Output if appstreamcli --version is executed. -#: tools/appstream-cli.c:693 +#: tools/appstream-cli.c:786 #, c-format msgid "AppStream version: %s" msgstr "" @@ -205,6 +205,10 @@ msgid "Communication & News" msgstr "" +#: tools/appstream-cli.c:712 +msgid "Compare two version numbers." +msgstr "" + #: src/as-provided.c:167 msgid "Component" msgstr "" @@ -220,7 +224,7 @@ msgstr "" #. TRANSLATORS: "convert" command in ascli. "Collection XML" is a term describing a specific type of AppStream XML data. -#: tools/appstream-cli.c:619 +#: tools/appstream-cli.c:711 msgid "Convert collection XML to YAML or vice versa." msgstr "" @@ -230,7 +234,7 @@ msgid "Could not find component providing '%s::%s'." msgstr "" -#: tools/appstream-cli.c:620 +#: tools/appstream-cli.c:713 msgid "Create a template for a metainfo file (to be filled out by the upstream project)." msgstr "" @@ -275,7 +279,7 @@ msgid "Developer Tools" msgstr "" -#: tools/appstream-cli.c:616 +#: tools/appstream-cli.c:708 msgid "Display status information about available AppStream metadata." msgstr "" @@ -290,11 +294,11 @@ msgstr "" #. TRANSLATORS: ascli flag description for: --no-color -#: tools/appstream-cli.c:657 +#: tools/appstream-cli.c:750 msgid "Don't show colored output." msgstr "" -#: tools/appstream-cli.c:607 +#: tools/appstream-cli.c:699 msgid "Dump raw XML metadata for a component matching the ID." msgstr "" @@ -411,11 +415,11 @@ msgid "Games" msgstr "" -#: tools/appstream-cli.c:603 +#: tools/appstream-cli.c:695 msgid "Get components which provide the given item." msgstr "" -#: tools/appstream-cli.c:602 +#: tools/appstream-cli.c:694 msgid "Get information about a component by its ID." msgstr "" @@ -450,11 +454,11 @@ msgid "Input Sources" msgstr "" -#: tools/appstream-cli.c:617 +#: tools/appstream-cli.c:709 msgid "Install a metadata file into the right location." msgstr "" -#: tools/appstream-cli.c:613 +#: tools/appstream-cli.c:705 msgid "Install software matching the component-ID." msgstr "" @@ -616,11 +620,11 @@ msgid "Python 3" msgstr "" -#: tools/appstream-cli.c:608 +#: tools/appstream-cli.c:700 msgid "Rebuild the component metadata cache." msgstr "" -#: tools/appstream-cli.c:614 +#: tools/appstream-cli.c:706 msgid "Remove software matching the component-ID." msgstr "" @@ -634,7 +638,7 @@ msgid "Role Playing" msgstr "" -#: tools/appstream-cli.c:185 tools/appstream-cli.c:675 +#: tools/appstream-cli.c:185 tools/appstream-cli.c:768 #, c-format msgid "Run '%s --help' to see a full list of available command line options." msgstr "" @@ -658,7 +662,7 @@ msgid "Science" msgstr "" -#: tools/appstream-cli.c:601 +#: tools/appstream-cli.c:693 msgid "Search the component database." msgstr "" @@ -668,12 +672,12 @@ msgstr "" #. TRANSLATORS: ascli flag description for: --verbose -#: tools/appstream-cli.c:652 +#: tools/appstream-cli.c:745 msgid "Show extra debugging information." msgstr "" #. TRANSLATORS: ascli flag description for: --version -#: tools/appstream-cli.c:646 +#: tools/appstream-cli.c:739 msgid "Show the program version." msgstr "" @@ -688,7 +692,7 @@ msgstr "" #. these are commands we can use with appstreamcli -#: tools/appstream-cli.c:599 +#: tools/appstream-cli.c:691 msgid "Subcommands:" msgstr "" @@ -726,7 +730,7 @@ msgstr "" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand, a bullet-pointed list of types follows -#: tools/appstream-cli.c:565 +#: tools/appstream-cli.c:657 #, c-format msgid "The TYPE must be a valid component-type, such as: %s" msgstr "" @@ -737,7 +741,7 @@ msgstr "" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand -#: tools/appstream-cli.c:562 +#: tools/appstream-cli.c:654 msgid "This command takes optional TYPE and FILE positional arguments, FILE being a file to write to (or \"-\" for standard output)." msgstr "" @@ -745,6 +749,10 @@ msgid "This tool allows for reading, writing, validating and transformation of AppStream XML or YAML metadata. It also gives access to the system metadata pool, for example to query for software that provides a specific MIME-type, and installing it by its software component identifier." msgstr "" +#: tools/appstream-cli.c:622 +msgid "Too many parameters: Need two version numbers or version numbers and a comparison operator." +msgstr "" + #: tools/ascli-actions-mdata.c:541 #, c-format msgid "Unable to build the template metainfo file: %s" @@ -788,13 +796,19 @@ msgstr "" #. TRANSLATORS: ascli has been run with unknown command. -#: tools/appstream-cli.c:750 +#: tools/appstream-cli.c:845 #, c-format msgid "Unknown command '%s'." msgstr "" +#. * TRANSLATORS: The user tried to compare version numbers, but the comparison operator (greater-then, equal, etc.) was invalid. +#: tools/appstream-cli.c:582 +#, c-format +msgid "Unknown compare relation '%s'. Valid values are:" +msgstr "" + #. TRANSLATORS: ascli flag description for: --from-desktop (part of the new-template subcommand) -#: tools/appstream-cli.c:557 +#: tools/appstream-cli.c:649 msgid "Use the given .desktop file to fill in the basic values of the metainfo file." msgstr "" @@ -803,11 +817,11 @@ msgid "Utilities" msgstr "" -#: tools/appstream-cli.c:610 +#: tools/appstream-cli.c:702 msgid "Validate AppStream XML files for issues." msgstr "" -#: tools/appstream-cli.c:611 +#: tools/appstream-cli.c:703 msgid "Validate an installed file-tree of an application for valid metadata." msgstr "" @@ -825,7 +839,7 @@ msgid "Validation was successful: %s" msgstr "" -#: tools/appstream-cli.c:605 +#: tools/appstream-cli.c:697 msgid "Value of the item that should be found." msgstr "" @@ -859,7 +873,7 @@ msgid "Word Processor" msgstr "" -#: tools/appstream-cli.c:623 +#: tools/appstream-cli.c:716 msgid "You can find information about subcommand-specific options by passing \"--help\" to the subcommand." msgstr "" @@ -872,8 +886,12 @@ msgid "You need to give an AppStream software component type to generate a template. Possible values are:" msgstr "" +#: tools/appstream-cli.c:553 +msgid "You need to provide at least two version numbers to compare as parameters." +msgstr "" + #. TRANSLATORS: ascli has been run without command. -#: tools/appstream-cli.c:674 +#: tools/appstream-cli.c:767 msgid "You need to specify a command." msgstr "" diff -Nru appstream-0.12.0/po/ar.po appstream-0.12.2/po/ar.po --- appstream-0.12.0/po/ar.po 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/po/ar.po 2018-08-04 07:39:44.000000000 +0000 @@ -7,9 +7,9 @@ msgstr "" "Project-Id-Version: appstream\n" "Report-Msgid-Bugs-To: appstream@lists.freedesktop.org\n" -"POT-Creation-Date: 2018-04-04 17:28+0200\n" -"PO-Revision-Date: 2018-02-05 15:34+0000\n" -"Last-Translator: Michal Čihař \n" +"POT-Creation-Date: 2018-06-10 15:36+0200\n" +"PO-Revision-Date: 2018-07-14 19:34+0000\n" +"Last-Translator: alaazghoul \n" "Language-Team: Arabic \n" "Language: ar\n" @@ -18,7 +18,7 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" -"X-Generator: Weblate 2.19-dev\n" +"X-Generator: Weblate 3.1-dev\n" #: tools/appstream-cli.c:146 #, c-format @@ -51,9 +51,9 @@ msgid "Also show pedantic hints." msgstr "أظهر التلميحات الإصطلاحية أيضًا." -#: tools/appstream-cli.c:604 +#: tools/appstream-cli.c:696 msgid "An item type (e.g. lib, bin, python3, …)" -msgstr "" +msgstr "نوع العنصر (مثال lib، bin، python3، ...)" #: data/org.freedesktop.appstream.cli.metainfo.xml:9 msgid "An utility to work with AppStream metadata" @@ -64,7 +64,7 @@ msgstr "" #. TRANSLATORS: Output if appstreamcli --version is run and the CLI and libappstream versions differ. -#: tools/appstream-cli.c:696 +#: tools/appstream-cli.c:789 #, c-format msgid "" "AppStream CLI tool version: %s\n" @@ -98,7 +98,7 @@ #. TRANSLATORS: This is the header to the --help menu for subcommands #. TRANSLATORS: This is the header to the --help menu -#: tools/appstream-cli.c:143 tools/appstream-cli.c:597 +#: tools/appstream-cli.c:143 tools/appstream-cli.c:689 msgid "AppStream command-line interface" msgstr "شاشة توجيه الأوامر لآب-ستريم" @@ -117,7 +117,7 @@ "تم تحديث محتويات ذاكرة تخزين أب-ستريم المؤقتة، لكن تم العثور على مشكلة: %s" #. TRANSLATORS: Output if appstreamcli --version is executed. -#: tools/appstream-cli.c:693 +#: tools/appstream-cli.c:786 #, c-format msgid "AppStream version: %s" msgstr "" @@ -223,6 +223,10 @@ msgid "Communication & News" msgstr "التواصل والأخبار" +#: tools/appstream-cli.c:712 +msgid "Compare two version numbers." +msgstr "" + #: src/as-provided.c:167 msgid "Component" msgstr "مكون" @@ -238,7 +242,7 @@ msgstr "أساسي لـ" #. TRANSLATORS: "convert" command in ascli. "Collection XML" is a term describing a specific type of AppStream XML data. -#: tools/appstream-cli.c:619 +#: tools/appstream-cli.c:711 msgid "Convert collection XML to YAML or vice versa." msgstr "" @@ -248,7 +252,7 @@ msgid "Could not find component providing '%s::%s'." msgstr "" -#: tools/appstream-cli.c:620 +#: tools/appstream-cli.c:713 msgid "" "Create a template for a metainfo file (to be filled out by the upstream " "project)." @@ -295,7 +299,7 @@ msgid "Developer Tools" msgstr "" -#: tools/appstream-cli.c:616 +#: tools/appstream-cli.c:708 msgid "Display status information about available AppStream metadata." msgstr "" @@ -310,11 +314,11 @@ msgstr "" #. TRANSLATORS: ascli flag description for: --no-color -#: tools/appstream-cli.c:657 +#: tools/appstream-cli.c:750 msgid "Don't show colored output." msgstr "" -#: tools/appstream-cli.c:607 +#: tools/appstream-cli.c:699 msgid "Dump raw XML metadata for a component matching the ID." msgstr "" @@ -431,11 +435,11 @@ msgid "Games" msgstr "" -#: tools/appstream-cli.c:603 +#: tools/appstream-cli.c:695 msgid "Get components which provide the given item." msgstr "" -#: tools/appstream-cli.c:602 +#: tools/appstream-cli.c:694 msgid "Get information about a component by its ID." msgstr "" @@ -470,11 +474,11 @@ msgid "Input Sources" msgstr "" -#: tools/appstream-cli.c:617 +#: tools/appstream-cli.c:709 msgid "Install a metadata file into the right location." msgstr "" -#: tools/appstream-cli.c:613 +#: tools/appstream-cli.c:705 msgid "Install software matching the component-ID." msgstr "" @@ -638,11 +642,11 @@ msgid "Python 3" msgstr "" -#: tools/appstream-cli.c:608 +#: tools/appstream-cli.c:700 msgid "Rebuild the component metadata cache." msgstr "" -#: tools/appstream-cli.c:614 +#: tools/appstream-cli.c:706 msgid "Remove software matching the component-ID." msgstr "" @@ -656,7 +660,7 @@ msgid "Role Playing" msgstr "" -#: tools/appstream-cli.c:185 tools/appstream-cli.c:675 +#: tools/appstream-cli.c:185 tools/appstream-cli.c:768 #, c-format msgid "Run '%s --help' to see a full list of available command line options." msgstr "" @@ -682,7 +686,7 @@ msgid "Science" msgstr "" -#: tools/appstream-cli.c:601 +#: tools/appstream-cli.c:693 msgid "Search the component database." msgstr "" @@ -692,12 +696,12 @@ msgstr "" #. TRANSLATORS: ascli flag description for: --verbose -#: tools/appstream-cli.c:652 +#: tools/appstream-cli.c:745 msgid "Show extra debugging information." msgstr "" #. TRANSLATORS: ascli flag description for: --version -#: tools/appstream-cli.c:646 +#: tools/appstream-cli.c:739 msgid "Show the program version." msgstr "" @@ -712,7 +716,7 @@ msgstr "" #. these are commands we can use with appstreamcli -#: tools/appstream-cli.c:599 +#: tools/appstream-cli.c:691 msgid "Subcommands:" msgstr "" @@ -753,7 +757,7 @@ msgstr "" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand, a bullet-pointed list of types follows -#: tools/appstream-cli.c:565 +#: tools/appstream-cli.c:657 #, c-format msgid "The TYPE must be a valid component-type, such as: %s" msgstr "" @@ -766,7 +770,7 @@ msgstr "" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand -#: tools/appstream-cli.c:562 +#: tools/appstream-cli.c:654 msgid "" "This command takes optional TYPE and FILE positional arguments, FILE being a " "file to write to (or \"-\" for standard output)." @@ -780,6 +784,12 @@ "and installing it by its software component identifier." msgstr "" +#: tools/appstream-cli.c:622 +msgid "" +"Too many parameters: Need two version numbers or version numbers and a " +"comparison operator." +msgstr "" + #: tools/ascli-actions-mdata.c:541 #, c-format msgid "Unable to build the template metainfo file: %s" @@ -825,13 +835,19 @@ msgstr "" #. TRANSLATORS: ascli has been run with unknown command. -#: tools/appstream-cli.c:750 +#: tools/appstream-cli.c:845 #, c-format msgid "Unknown command '%s'." msgstr "" +#. * TRANSLATORS: The user tried to compare version numbers, but the comparison operator (greater-then, equal, etc.) was invalid. +#: tools/appstream-cli.c:582 +#, c-format +msgid "Unknown compare relation '%s'. Valid values are:" +msgstr "" + #. TRANSLATORS: ascli flag description for: --from-desktop (part of the new-template subcommand) -#: tools/appstream-cli.c:557 +#: tools/appstream-cli.c:649 msgid "" "Use the given .desktop file to fill in the basic values of the metainfo file." msgstr "" @@ -841,11 +857,11 @@ msgid "Utilities" msgstr "" -#: tools/appstream-cli.c:610 +#: tools/appstream-cli.c:702 msgid "Validate AppStream XML files for issues." msgstr "" -#: tools/appstream-cli.c:611 +#: tools/appstream-cli.c:703 msgid "Validate an installed file-tree of an application for valid metadata." msgstr "" @@ -863,7 +879,7 @@ msgid "Validation was successful: %s" msgstr "" -#: tools/appstream-cli.c:605 +#: tools/appstream-cli.c:697 msgid "Value of the item that should be found." msgstr "" @@ -897,7 +913,7 @@ msgid "Word Processor" msgstr "" -#: tools/appstream-cli.c:623 +#: tools/appstream-cli.c:716 msgid "" "You can find information about subcommand-specific options by passing \"--" "help\" to the subcommand." @@ -914,8 +930,13 @@ "template. Possible values are:" msgstr "" +#: tools/appstream-cli.c:553 +msgid "" +"You need to provide at least two version numbers to compare as parameters." +msgstr "" + #. TRANSLATORS: ascli has been run without command. -#: tools/appstream-cli.c:674 +#: tools/appstream-cli.c:767 msgid "You need to specify a command." msgstr "" diff -Nru appstream-0.12.0/po/ca.po appstream-0.12.2/po/ca.po --- appstream-0.12.0/po/ca.po 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/po/ca.po 2018-08-04 07:39:44.000000000 +0000 @@ -9,8 +9,8 @@ msgstr "" "Project-Id-Version: AppStream\n" "Report-Msgid-Bugs-To: appstream@lists.freedesktop.org\n" -"POT-Creation-Date: 2018-04-04 17:28+0200\n" -"PO-Revision-Date: 2018-03-30 18:58+0000\n" +"POT-Creation-Date: 2018-06-10 15:36+0200\n" +"PO-Revision-Date: 2018-07-19 17:53+0000\n" "Last-Translator: Robert Antoni Buj Gelonch \n" "Language-Team: Catalan \n" @@ -19,7 +19,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.20-dev\n" +"X-Generator: Weblate 3.1-dev\n" #: tools/appstream-cli.c:146 #, c-format @@ -52,7 +52,7 @@ msgid "Also show pedantic hints." msgstr "Mostra també els consells redundants." -#: tools/appstream-cli.c:604 +#: tools/appstream-cli.c:696 msgid "An item type (e.g. lib, bin, python3, …)" msgstr "Un tipus d'element (p. ex. lib, bin, python3, ...)" @@ -65,7 +65,7 @@ msgstr "Interfície de línia d'ordres d'AppStream" #. TRANSLATORS: Output if appstreamcli --version is run and the CLI and libappstream versions differ. -#: tools/appstream-cli.c:696 +#: tools/appstream-cli.c:789 #, c-format msgid "" "AppStream CLI tool version: %s\n" @@ -102,7 +102,7 @@ #. TRANSLATORS: This is the header to the --help menu for subcommands #. TRANSLATORS: This is the header to the --help menu -#: tools/appstream-cli.c:143 tools/appstream-cli.c:597 +#: tools/appstream-cli.c:143 tools/appstream-cli.c:689 msgid "AppStream command-line interface" msgstr "Interfície de línia d'ordres d'AppStream" @@ -122,7 +122,7 @@ "problemes: %s" #. TRANSLATORS: Output if appstreamcli --version is executed. -#: tools/appstream-cli.c:693 +#: tools/appstream-cli.c:786 #, c-format msgid "AppStream version: %s" msgstr "Versió d'AppStream: %s" @@ -228,6 +228,10 @@ msgid "Communication & News" msgstr "Comunicació i notícies" +#: tools/appstream-cli.c:712 +msgid "Compare two version numbers." +msgstr "Compara dos números de versió." + #: src/as-provided.c:167 msgid "Component" msgstr "Component" @@ -243,7 +247,7 @@ msgstr "Obligatori per" #. TRANSLATORS: "convert" command in ascli. "Collection XML" is a term describing a specific type of AppStream XML data. -#: tools/appstream-cli.c:619 +#: tools/appstream-cli.c:711 msgid "Convert collection XML to YAML or vice versa." msgstr "Converteix la col·lecció XML a YAML o viceversa." @@ -253,7 +257,7 @@ msgid "Could not find component providing '%s::%s'." msgstr "No s'ha pogut trobar el component que proporciona «%s::%s»." -#: tools/appstream-cli.c:620 +#: tools/appstream-cli.c:713 msgid "" "Create a template for a metainfo file (to be filled out by the upstream " "project)." @@ -303,7 +307,7 @@ msgid "Developer Tools" msgstr "Eines de desenvolupador" -#: tools/appstream-cli.c:616 +#: tools/appstream-cli.c:708 msgid "Display status information about available AppStream metadata." msgstr "" "Mostra informació de l'estat sobre les metadades disponibles d'AppStream." @@ -319,11 +323,11 @@ msgstr "No utilitzis l'accés a la xarxa." #. TRANSLATORS: ascli flag description for: --no-color -#: tools/appstream-cli.c:657 +#: tools/appstream-cli.c:750 msgid "Don't show colored output." msgstr "No mostris la sortida amb colors." -#: tools/appstream-cli.c:607 +#: tools/appstream-cli.c:699 msgid "Dump raw XML metadata for a component matching the ID." msgstr "" "Bolca les metadades XML en pla per a un component que coincideixi amb l'id." @@ -442,11 +446,11 @@ msgid "Games" msgstr "Jocs" -#: tools/appstream-cli.c:603 +#: tools/appstream-cli.c:695 msgid "Get components which provide the given item." msgstr "Obté els components que proporcionen un element indicat." -#: tools/appstream-cli.c:602 +#: tools/appstream-cli.c:694 msgid "Get information about a component by its ID." msgstr "Obté la informació sobre un component amb el seu id." @@ -481,11 +485,11 @@ msgid "Input Sources" msgstr "Orígens d'entrada" -#: tools/appstream-cli.c:617 +#: tools/appstream-cli.c:709 msgid "Install a metadata file into the right location." msgstr "Instal·la un fitxer de metadades al lloc correcte." -#: tools/appstream-cli.c:613 +#: tools/appstream-cli.c:705 msgid "Install software matching the component-ID." msgstr "Instal·la el programari que coincideixi amb «component-ID»." @@ -654,11 +658,11 @@ msgid "Python 3" msgstr "Python 3" -#: tools/appstream-cli.c:608 +#: tools/appstream-cli.c:700 msgid "Rebuild the component metadata cache." msgstr "Reconstrueix la memòria cau de les metadades del component." -#: tools/appstream-cli.c:614 +#: tools/appstream-cli.c:706 msgid "Remove software matching the component-ID." msgstr "Suprimeix el programari que coincideixi amb «component-ID»." @@ -672,7 +676,7 @@ msgid "Role Playing" msgstr "Jocs de rol" -#: tools/appstream-cli.c:185 tools/appstream-cli.c:675 +#: tools/appstream-cli.c:185 tools/appstream-cli.c:768 #, c-format msgid "Run '%s --help' to see a full list of available command line options." msgstr "" @@ -703,7 +707,7 @@ msgid "Science" msgstr "Ciència" -#: tools/appstream-cli.c:601 +#: tools/appstream-cli.c:693 msgid "Search the component database." msgstr "Cerca a la base de dades de components." @@ -713,12 +717,12 @@ msgstr "Seguretat" #. TRANSLATORS: ascli flag description for: --verbose -#: tools/appstream-cli.c:652 +#: tools/appstream-cli.c:745 msgid "Show extra debugging information." msgstr "Mostra informació extra de depuració." #. TRANSLATORS: ascli flag description for: --version -#: tools/appstream-cli.c:646 +#: tools/appstream-cli.c:739 msgid "Show the program version." msgstr "Mostra la versió de l'aplicació." @@ -733,7 +737,7 @@ msgstr "Estratègia" #. these are commands we can use with appstreamcli -#: tools/appstream-cli.c:599 +#: tools/appstream-cli.c:691 msgid "Subcommands:" msgstr "Subordres:" @@ -777,7 +781,7 @@ "Consulteu el registre per obtenir informació més detallada." #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand, a bullet-pointed list of types follows -#: tools/appstream-cli.c:565 +#: tools/appstream-cli.c:657 #, c-format msgid "The TYPE must be a valid component-type, such as: %s" msgstr "El TIPUS ha de ser un tipus de component vàlid, com ara: %s" @@ -792,7 +796,7 @@ "possibles són:" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand -#: tools/appstream-cli.c:562 +#: tools/appstream-cli.c:654 msgid "" "This command takes optional TYPE and FILE positional arguments, FILE being a " "file to write to (or \"-\" for standard output)." @@ -812,6 +816,14 @@ "sistema, per exemple consultar quin programari proporciona un tipus MIME " "específic i instal·lar-lo pel seu identificador de component de programari." +#: tools/appstream-cli.c:622 +msgid "" +"Too many parameters: Need two version numbers or version numbers and a " +"comparison operator." +msgstr "" +"Massa paràmetres: necessiteu dos números de versió o números de versió i un " +"operador de comparació." + #: tools/ascli-actions-mdata.c:541 #, c-format msgid "Unable to build the template metainfo file: %s" @@ -859,13 +871,19 @@ msgstr "No es pot escriure a «%s», no es pot instal·lar el fitxer metainfo." #. TRANSLATORS: ascli has been run with unknown command. -#: tools/appstream-cli.c:750 +#: tools/appstream-cli.c:845 #, c-format msgid "Unknown command '%s'." msgstr "Ordre desconeguda «%s»." +#. * TRANSLATORS: The user tried to compare version numbers, but the comparison operator (greater-then, equal, etc.) was invalid. +#: tools/appstream-cli.c:582 +#, c-format +msgid "Unknown compare relation '%s'. Valid values are:" +msgstr "Relació de comparació desconeguda «%s». Els valors vàlids són:" + #. TRANSLATORS: ascli flag description for: --from-desktop (part of the new-template subcommand) -#: tools/appstream-cli.c:557 +#: tools/appstream-cli.c:649 msgid "" "Use the given .desktop file to fill in the basic values of the metainfo file." msgstr "" @@ -877,11 +895,11 @@ msgid "Utilities" msgstr "Utilitats" -#: tools/appstream-cli.c:610 +#: tools/appstream-cli.c:702 msgid "Validate AppStream XML files for issues." msgstr "Valida els fitxers XML d'AppStream per incidències." -#: tools/appstream-cli.c:611 +#: tools/appstream-cli.c:703 msgid "Validate an installed file-tree of an application for valid metadata." msgstr "" "Valida un arbre de fitxers instal·lats d'una aplicació per validar-ne les " @@ -901,7 +919,7 @@ msgid "Validation was successful: %s" msgstr "S'ha validat correctament: %s" -#: tools/appstream-cli.c:605 +#: tools/appstream-cli.c:697 msgid "Value of the item that should be found." msgstr "El valor de l'element que s'ha de trobar." @@ -935,7 +953,7 @@ msgid "Word Processor" msgstr "Processadors de text" -#: tools/appstream-cli.c:623 +#: tools/appstream-cli.c:716 msgid "" "You can find information about subcommand-specific options by passing \"--" "help\" to the subcommand." @@ -958,8 +976,15 @@ "Heu d'indicar un tipus de component de programari d'AppStream per generar " "una plantilla. Els valors possibles són:" +#: tools/appstream-cli.c:553 +msgid "" +"You need to provide at least two version numbers to compare as parameters." +msgstr "" +"Heu de proporcionar almenys dos números de versió per comparar-los com a " +"paràmetres." + #. TRANSLATORS: ascli has been run without command. -#: tools/appstream-cli.c:674 +#: tools/appstream-cli.c:767 msgid "You need to specify a command." msgstr "Heu d'especificar una ordre." diff -Nru appstream-0.12.0/po/ckb.po appstream-0.12.2/po/ckb.po --- appstream-0.12.0/po/ckb.po 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/po/ckb.po 2018-08-04 07:39:44.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: appstream\n" "Report-Msgid-Bugs-To: appstream@lists.freedesktop.org\n" -"POT-Creation-Date: 2018-04-04 17:28+0200\n" +"POT-Creation-Date: 2018-06-10 15:36+0200\n" "PO-Revision-Date: 2016-09-06 13:56+0000\n" "Last-Translator: Rasti K5 \n" "Language-Team: Kurdish Sorani \n" "Language-Team: Czech \n" @@ -19,7 +19,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 2.20-dev\n" +"X-Generator: Weblate 3.0.1\n" #: tools/appstream-cli.c:146 #, c-format @@ -52,7 +52,7 @@ msgid "Also show pedantic hints." msgstr "Při ověřování vypisovat i nalezené drobnosti." -#: tools/appstream-cli.c:604 +#: tools/appstream-cli.c:696 msgid "An item type (e.g. lib, bin, python3, …)" msgstr "Typ položky (např. lib, bin, python3, …)" @@ -65,7 +65,7 @@ msgstr "Textové uživatelské rozhraní pro AppStream" #. TRANSLATORS: Output if appstreamcli --version is run and the CLI and libappstream versions differ. -#: tools/appstream-cli.c:696 +#: tools/appstream-cli.c:789 #, c-format msgid "" "AppStream CLI tool version: %s\n" @@ -101,7 +101,7 @@ #. TRANSLATORS: This is the header to the --help menu for subcommands #. TRANSLATORS: This is the header to the --help menu -#: tools/appstream-cli.c:143 tools/appstream-cli.c:597 +#: tools/appstream-cli.c:143 tools/appstream-cli.c:689 msgid "AppStream command-line interface" msgstr "Rozhraní příkazového řádku pro AppStream" @@ -121,7 +121,7 @@ "problémy: %s" #. TRANSLATORS: Output if appstreamcli --version is executed. -#: tools/appstream-cli.c:693 +#: tools/appstream-cli.c:786 #, c-format msgid "AppStream version: %s" msgstr "Verze nástroje AppStream: %s" @@ -227,6 +227,10 @@ msgid "Communication & News" msgstr "Komunikace a novinky" +#: tools/appstream-cli.c:712 +msgid "Compare two version numbers." +msgstr "Porovnat dvě čísla verzí." + #: src/as-provided.c:167 msgid "Component" msgstr "Součást" @@ -242,7 +246,7 @@ msgstr "Povinné pro" #. TRANSLATORS: "convert" command in ascli. "Collection XML" is a term describing a specific type of AppStream XML data. -#: tools/appstream-cli.c:619 +#: tools/appstream-cli.c:711 msgid "Convert collection XML to YAML or vice versa." msgstr "Převádí z XML na YAML formát a obráceně." @@ -252,7 +256,7 @@ msgid "Could not find component providing '%s::%s'." msgstr "Nepodařilo se najít součást poskytující „%s::%s“." -#: tools/appstream-cli.c:620 +#: tools/appstream-cli.c:713 msgid "" "Create a template for a metainfo file (to be filled out by the upstream " "project)." @@ -300,7 +304,7 @@ msgid "Developer Tools" msgstr "Nástroje pro vývoj" -#: tools/appstream-cli.c:616 +#: tools/appstream-cli.c:708 msgid "Display status information about available AppStream metadata." msgstr "Zobrazit stavové informace o dostupných AppStream metadatech." @@ -315,11 +319,11 @@ msgstr "Nepoužívat síť." #. TRANSLATORS: ascli flag description for: --no-color -#: tools/appstream-cli.c:657 +#: tools/appstream-cli.c:750 msgid "Don't show colored output." msgstr "Neobarvovat výstup." -#: tools/appstream-cli.c:607 +#: tools/appstream-cli.c:699 msgid "Dump raw XML metadata for a component matching the ID." msgstr "Vypsat surová XML metadata součásti s tímto identifikátorem." @@ -436,11 +440,11 @@ msgid "Games" msgstr "Hry" -#: tools/appstream-cli.c:603 +#: tools/appstream-cli.c:695 msgid "Get components which provide the given item." msgstr "Získat součásti, které poskytují danou položku." -#: tools/appstream-cli.c:602 +#: tools/appstream-cli.c:694 msgid "Get information about a component by its ID." msgstr "Získat informace o součásti podle jejího identifikátoru." @@ -475,11 +479,11 @@ msgid "Input Sources" msgstr "Vstupní zdroje" -#: tools/appstream-cli.c:617 +#: tools/appstream-cli.c:709 msgid "Install a metadata file into the right location." msgstr "Nainstalovat soubor s metadaty na správné místo." -#: tools/appstream-cli.c:613 +#: tools/appstream-cli.c:705 msgid "Install software matching the component-ID." msgstr "Nainstalovat software odpovídající identifikátoru součásti." @@ -645,11 +649,11 @@ msgid "Python 3" msgstr "Python 3" -#: tools/appstream-cli.c:608 +#: tools/appstream-cli.c:700 msgid "Rebuild the component metadata cache." msgstr "Znovu vytvořit mezipaměť metadat součástí." -#: tools/appstream-cli.c:614 +#: tools/appstream-cli.c:706 msgid "Remove software matching the component-ID." msgstr "Odebrat software odpovídající identifikátoru součásti." @@ -663,7 +667,7 @@ msgid "Role Playing" msgstr "RPG" -#: tools/appstream-cli.c:185 tools/appstream-cli.c:675 +#: tools/appstream-cli.c:185 tools/appstream-cli.c:768 #, c-format msgid "Run '%s --help' to see a full list of available command line options." msgstr "" @@ -693,7 +697,7 @@ msgid "Science" msgstr "Věda" -#: tools/appstream-cli.c:601 +#: tools/appstream-cli.c:693 msgid "Search the component database." msgstr "Prohledat databázi součástí." @@ -703,12 +707,12 @@ msgstr "Zabezpečení" #. TRANSLATORS: ascli flag description for: --verbose -#: tools/appstream-cli.c:652 +#: tools/appstream-cli.c:745 msgid "Show extra debugging information." msgstr "Zobrazovat doplňující informace pro ladění." #. TRANSLATORS: ascli flag description for: --version -#: tools/appstream-cli.c:646 +#: tools/appstream-cli.c:739 msgid "Show the program version." msgstr "Zobrazit verzi programu." @@ -723,7 +727,7 @@ msgstr "Strategie" #. these are commands we can use with appstreamcli -#: tools/appstream-cli.c:599 +#: tools/appstream-cli.c:691 msgid "Subcommands:" msgstr "Dílčí příkazy:" @@ -767,7 +771,7 @@ "ve výřečněji nastaveném záznamu událostí." #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand, a bullet-pointed list of types follows -#: tools/appstream-cli.c:565 +#: tools/appstream-cli.c:657 #, c-format msgid "The TYPE must be a valid component-type, such as: %s" msgstr "Je třeba, aby TYPE (typ) byl platný typ komponenty, jako např.: %s" @@ -781,7 +785,7 @@ "Typ „%s“ softwarové součásti není platný pro AppStream. Možné hodnoty jsou:" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand -#: tools/appstream-cli.c:562 +#: tools/appstream-cli.c:654 msgid "" "This command takes optional TYPE and FILE positional arguments, FILE being a " "file to write to (or \"-\" for standard output)." @@ -801,6 +805,14 @@ "dotazování se na software, poskytující konkrétní MIME typ a jeho instalaci " "na základě identifikátoru softwarové součásti." +#: tools/appstream-cli.c:622 +msgid "" +"Too many parameters: Need two version numbers or version numbers and a " +"comparison operator." +msgstr "" +"Příliš mnoho parametrů: potřebuje dvě čísla verzí nebo čísla verzí a " +"porovnávací operátor." + #: tools/ascli-actions-mdata.c:541 #, c-format msgid "Unable to build the template metainfo file: %s" @@ -850,13 +862,19 @@ "metainformacemi." #. TRANSLATORS: ascli has been run with unknown command. -#: tools/appstream-cli.c:750 +#: tools/appstream-cli.c:845 #, c-format msgid "Unknown command '%s'." msgstr "Neznámý příkaz „%s“." +#. * TRANSLATORS: The user tried to compare version numbers, but the comparison operator (greater-then, equal, etc.) was invalid. +#: tools/appstream-cli.c:582 +#, c-format +msgid "Unknown compare relation '%s'. Valid values are:" +msgstr "Neznámá deklarace porovnání „%s“. Platné hodnoty jsou:" + #. TRANSLATORS: ascli flag description for: --from-desktop (part of the new-template subcommand) -#: tools/appstream-cli.c:557 +#: tools/appstream-cli.c:649 msgid "" "Use the given .desktop file to fill in the basic values of the metainfo file." msgstr "" @@ -868,11 +886,11 @@ msgid "Utilities" msgstr "Nástroje" -#: tools/appstream-cli.c:610 +#: tools/appstream-cli.c:702 msgid "Validate AppStream XML files for issues." msgstr "Ověřit zda XML AppStream soubor neobsahuje chyby." -#: tools/appstream-cli.c:611 +#: tools/appstream-cli.c:703 msgid "Validate an installed file-tree of an application for valid metadata." msgstr "" "Ověřit zda nainstalovaný strom souborů aplikace obsahuje platná metadata." @@ -891,7 +909,7 @@ msgid "Validation was successful: %s" msgstr "Ověření bylo úspěšné: %s" -#: tools/appstream-cli.c:605 +#: tools/appstream-cli.c:697 msgid "Value of the item that should be found." msgstr "Hodnota položky která má být nalezena." @@ -925,7 +943,7 @@ msgid "Word Processor" msgstr "Textový procesor" -#: tools/appstream-cli.c:623 +#: tools/appstream-cli.c:716 msgid "" "You can find information about subcommand-specific options by passing \"--" "help\" to the subcommand." @@ -947,8 +965,14 @@ "Aby bylo možné vytvořit šablonu, je třeba zadat typ softwarové součásti " "AppStream. Možné hodnoty jsou:" +#: tools/appstream-cli.c:553 +msgid "" +"You need to provide at least two version numbers to compare as parameters." +msgstr "" +"Jako parametry je třeba zadat přinejmenším dvě čísla verzí pro porovnání." + #. TRANSLATORS: ascli has been run without command. -#: tools/appstream-cli.c:674 +#: tools/appstream-cli.c:767 msgid "You need to specify a command." msgstr "Je třeba zadat příkaz." diff -Nru appstream-0.12.0/po/da.po appstream-0.12.2/po/da.po --- appstream-0.12.0/po/da.po 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/po/da.po 2018-08-04 07:39:44.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: AppStream\n" "Report-Msgid-Bugs-To: appstream@lists.freedesktop.org\n" -"POT-Creation-Date: 2018-04-04 17:28+0200\n" +"POT-Creation-Date: 2018-06-10 15:36+0200\n" "PO-Revision-Date: 2016-08-15 18:48+0000\n" "Last-Translator: Matthias Klumpp \n" "Language-Team: Danish (http://www.transifex.com/freedesktop/appstream/" @@ -51,7 +51,7 @@ msgid "Also show pedantic hints." msgstr "" -#: tools/appstream-cli.c:604 +#: tools/appstream-cli.c:696 msgid "An item type (e.g. lib, bin, python3, …)" msgstr "" @@ -64,7 +64,7 @@ msgstr "" #. TRANSLATORS: Output if appstreamcli --version is run and the CLI and libappstream versions differ. -#: tools/appstream-cli.c:696 +#: tools/appstream-cli.c:789 #, c-format msgid "" "AppStream CLI tool version: %s\n" @@ -96,7 +96,7 @@ #. TRANSLATORS: This is the header to the --help menu for subcommands #. TRANSLATORS: This is the header to the --help menu -#: tools/appstream-cli.c:143 tools/appstream-cli.c:597 +#: tools/appstream-cli.c:143 tools/appstream-cli.c:689 msgid "AppStream command-line interface" msgstr "" @@ -112,7 +112,7 @@ msgstr "" #. TRANSLATORS: Output if appstreamcli --version is executed. -#: tools/appstream-cli.c:693 +#: tools/appstream-cli.c:786 #, c-format msgid "AppStream version: %s" msgstr "" @@ -216,6 +216,10 @@ msgid "Communication & News" msgstr "" +#: tools/appstream-cli.c:712 +msgid "Compare two version numbers." +msgstr "" + #: src/as-provided.c:167 msgid "Component" msgstr "" @@ -231,7 +235,7 @@ msgstr "Tvungen for" #. TRANSLATORS: "convert" command in ascli. "Collection XML" is a term describing a specific type of AppStream XML data. -#: tools/appstream-cli.c:619 +#: tools/appstream-cli.c:711 msgid "Convert collection XML to YAML or vice versa." msgstr "" @@ -241,7 +245,7 @@ msgid "Could not find component providing '%s::%s'." msgstr "Kan ikke finde komponent med id »%s«!" -#: tools/appstream-cli.c:620 +#: tools/appstream-cli.c:713 msgid "" "Create a template for a metainfo file (to be filled out by the upstream " "project)." @@ -290,7 +294,7 @@ msgid "Developer Tools" msgstr "Udvikler" -#: tools/appstream-cli.c:616 +#: tools/appstream-cli.c:708 msgid "Display status information about available AppStream metadata." msgstr "" @@ -305,12 +309,12 @@ msgstr "" #. TRANSLATORS: ascli flag description for: --no-color -#: tools/appstream-cli.c:657 +#: tools/appstream-cli.c:750 #, fuzzy msgid "Don't show colored output." msgstr "Vis ikke farvet resultat" -#: tools/appstream-cli.c:607 +#: tools/appstream-cli.c:699 msgid "Dump raw XML metadata for a component matching the ID." msgstr "" @@ -428,11 +432,11 @@ msgid "Games" msgstr "" -#: tools/appstream-cli.c:603 +#: tools/appstream-cli.c:695 msgid "Get components which provide the given item." msgstr "" -#: tools/appstream-cli.c:602 +#: tools/appstream-cli.c:694 msgid "Get information about a component by its ID." msgstr "" @@ -467,11 +471,11 @@ msgid "Input Sources" msgstr "" -#: tools/appstream-cli.c:617 +#: tools/appstream-cli.c:709 msgid "Install a metadata file into the right location." msgstr "" -#: tools/appstream-cli.c:613 +#: tools/appstream-cli.c:705 msgid "Install software matching the component-ID." msgstr "" @@ -639,11 +643,11 @@ msgid "Python 3" msgstr "" -#: tools/appstream-cli.c:608 +#: tools/appstream-cli.c:700 msgid "Rebuild the component metadata cache." msgstr "" -#: tools/appstream-cli.c:614 +#: tools/appstream-cli.c:706 msgid "Remove software matching the component-ID." msgstr "" @@ -657,7 +661,7 @@ msgid "Role Playing" msgstr "" -#: tools/appstream-cli.c:185 tools/appstream-cli.c:675 +#: tools/appstream-cli.c:185 tools/appstream-cli.c:768 #, c-format msgid "Run '%s --help' to see a full list of available command line options." msgstr "" @@ -687,7 +691,7 @@ msgid "Science" msgstr "" -#: tools/appstream-cli.c:601 +#: tools/appstream-cli.c:693 msgid "Search the component database." msgstr "" @@ -697,13 +701,13 @@ msgstr "" #. TRANSLATORS: ascli flag description for: --verbose -#: tools/appstream-cli.c:652 +#: tools/appstream-cli.c:745 #, fuzzy msgid "Show extra debugging information." msgstr "Vis ekstra fejlsøgningsinformation" #. TRANSLATORS: ascli flag description for: --version -#: tools/appstream-cli.c:646 +#: tools/appstream-cli.c:739 #, fuzzy msgid "Show the program version." msgstr "Vis programversionen" @@ -719,7 +723,7 @@ msgstr "" #. these are commands we can use with appstreamcli -#: tools/appstream-cli.c:599 +#: tools/appstream-cli.c:691 msgid "Subcommands:" msgstr "Underkommandoer:" @@ -760,7 +764,7 @@ msgstr "" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand, a bullet-pointed list of types follows -#: tools/appstream-cli.c:565 +#: tools/appstream-cli.c:657 #, c-format msgid "The TYPE must be a valid component-type, such as: %s" msgstr "" @@ -773,7 +777,7 @@ msgstr "" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand -#: tools/appstream-cli.c:562 +#: tools/appstream-cli.c:654 msgid "" "This command takes optional TYPE and FILE positional arguments, FILE being a " "file to write to (or \"-\" for standard output)." @@ -787,6 +791,12 @@ "and installing it by its software component identifier." msgstr "" +#: tools/appstream-cli.c:622 +msgid "" +"Too many parameters: Need two version numbers or version numbers and a " +"comparison operator." +msgstr "" + #: tools/ascli-actions-mdata.c:541 #, c-format msgid "Unable to build the template metainfo file: %s" @@ -832,13 +842,19 @@ msgstr "" #. TRANSLATORS: ascli has been run with unknown command. -#: tools/appstream-cli.c:750 +#: tools/appstream-cli.c:845 #, c-format msgid "Unknown command '%s'." msgstr "" +#. * TRANSLATORS: The user tried to compare version numbers, but the comparison operator (greater-then, equal, etc.) was invalid. +#: tools/appstream-cli.c:582 +#, c-format +msgid "Unknown compare relation '%s'. Valid values are:" +msgstr "" + #. TRANSLATORS: ascli flag description for: --from-desktop (part of the new-template subcommand) -#: tools/appstream-cli.c:557 +#: tools/appstream-cli.c:649 msgid "" "Use the given .desktop file to fill in the basic values of the metainfo file." msgstr "" @@ -848,11 +864,11 @@ msgid "Utilities" msgstr "" -#: tools/appstream-cli.c:610 +#: tools/appstream-cli.c:702 msgid "Validate AppStream XML files for issues." msgstr "" -#: tools/appstream-cli.c:611 +#: tools/appstream-cli.c:703 msgid "Validate an installed file-tree of an application for valid metadata." msgstr "" @@ -870,7 +886,7 @@ msgid "Validation was successful: %s" msgstr "" -#: tools/appstream-cli.c:605 +#: tools/appstream-cli.c:697 msgid "Value of the item that should be found." msgstr "" @@ -905,7 +921,7 @@ msgid "Word Processor" msgstr "" -#: tools/appstream-cli.c:623 +#: tools/appstream-cli.c:716 msgid "" "You can find information about subcommand-specific options by passing \"--" "help\" to the subcommand." @@ -922,8 +938,13 @@ "template. Possible values are:" msgstr "" +#: tools/appstream-cli.c:553 +msgid "" +"You need to provide at least two version numbers to compare as parameters." +msgstr "" + #. TRANSLATORS: ascli has been run without command. -#: tools/appstream-cli.c:674 +#: tools/appstream-cli.c:767 msgid "You need to specify a command." msgstr "Du skal specificere en kommando." diff -Nru appstream-0.12.0/po/de.po appstream-0.12.2/po/de.po --- appstream-0.12.0/po/de.po 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/po/de.po 2018-08-04 07:39:44.000000000 +0000 @@ -9,9 +9,9 @@ msgstr "" "Project-Id-Version: AppStream\n" "Report-Msgid-Bugs-To: appstream@lists.freedesktop.org\n" -"POT-Creation-Date: 2018-04-04 17:28+0200\n" -"PO-Revision-Date: 2018-01-24 12:14+0000\n" -"Last-Translator: Andreas Kleinert \n" +"POT-Creation-Date: 2018-06-10 15:36+0200\n" +"PO-Revision-Date: 2018-06-17 13:06+0000\n" +"Last-Translator: James Bond \n" "Language-Team: German \n" "Language: de\n" @@ -19,7 +19,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.19-dev\n" +"X-Generator: Weblate 3.0.1\n" #: tools/appstream-cli.c:146 #, c-format @@ -52,7 +52,7 @@ msgid "Also show pedantic hints." msgstr "Auch kleinste Hinweise anzeigen." -#: tools/appstream-cli.c:604 +#: tools/appstream-cli.c:696 msgid "An item type (e.g. lib, bin, python3, …)" msgstr "Ein Elementtyp (z.B. lib, bin, python3, …)" @@ -65,7 +65,7 @@ msgstr "AppStream CLI" #. TRANSLATORS: Output if appstreamcli --version is run and the CLI and libappstream versions differ. -#: tools/appstream-cli.c:696 +#: tools/appstream-cli.c:789 #, c-format msgid "" "AppStream CLI tool version: %s\n" @@ -103,7 +103,7 @@ #. TRANSLATORS: This is the header to the --help menu for subcommands #. TRANSLATORS: This is the header to the --help menu -#: tools/appstream-cli.c:143 tools/appstream-cli.c:597 +#: tools/appstream-cli.c:143 tools/appstream-cli.c:689 msgid "AppStream command-line interface" msgstr "AppStream-Befehlszeilenoberfläche" @@ -123,7 +123,7 @@ "Probleme gefunden: %s" #. TRANSLATORS: Output if appstreamcli --version is executed. -#: tools/appstream-cli.c:693 +#: tools/appstream-cli.c:786 #, c-format msgid "AppStream version: %s" msgstr "AppStream-Version: %s" @@ -229,6 +229,10 @@ msgid "Communication & News" msgstr "Kommunikation und Nachrichten" +#: tools/appstream-cli.c:712 +msgid "Compare two version numbers." +msgstr "Zwei Versionsnummern vergleichen." + #: src/as-provided.c:167 msgid "Component" msgstr "Komponente" @@ -244,7 +248,7 @@ msgstr "Verpflichtend für" #. TRANSLATORS: "convert" command in ascli. "Collection XML" is a term describing a specific type of AppStream XML data. -#: tools/appstream-cli.c:619 +#: tools/appstream-cli.c:711 msgid "Convert collection XML to YAML or vice versa." msgstr "Konvertiert XML-Sammlungen nach YAML und umgekehrt" @@ -254,8 +258,7 @@ msgid "Could not find component providing '%s::%s'." msgstr "Es konnte keine Komponente gefunden werden, die „%s;%s” bereitstellt." -#: tools/appstream-cli.c:620 -#, fuzzy +#: tools/appstream-cli.c:713 msgid "" "Create a template for a metainfo file (to be filled out by the upstream " "project)." @@ -304,7 +307,7 @@ msgid "Developer Tools" msgstr "Entwicklerwerkzeuge" -#: tools/appstream-cli.c:616 +#: tools/appstream-cli.c:708 msgid "Display status information about available AppStream metadata." msgstr "Statusinformationen über verfügbare AppStream-Metadaten anzeigen." @@ -319,11 +322,11 @@ msgstr "Keinen Netzwerkzugriff verwenden." #. TRANSLATORS: ascli flag description for: --no-color -#: tools/appstream-cli.c:657 +#: tools/appstream-cli.c:750 msgid "Don't show colored output." msgstr "Keine farbige Ausgabe anzeigen." -#: tools/appstream-cli.c:607 +#: tools/appstream-cli.c:699 msgid "Dump raw XML metadata for a component matching the ID." msgstr "Roh-XML-Metadaten für eine zur Kennung passende Komponente ausgeben." @@ -440,11 +443,11 @@ msgid "Games" msgstr "Spiele" -#: tools/appstream-cli.c:603 +#: tools/appstream-cli.c:695 msgid "Get components which provide the given item." msgstr "Komponenten ermitteln, die das angegebene Objekt bereitstellen." -#: tools/appstream-cli.c:602 +#: tools/appstream-cli.c:694 msgid "Get information about a component by its ID." msgstr "Informationen zu einer Komponente anhand deren ID ermitteln." @@ -479,11 +482,11 @@ msgid "Input Sources" msgstr "Eingabequellen" -#: tools/appstream-cli.c:617 +#: tools/appstream-cli.c:709 msgid "Install a metadata file into the right location." msgstr "Metadaten im richtigen Ort installieren." -#: tools/appstream-cli.c:613 +#: tools/appstream-cli.c:705 msgid "Install software matching the component-ID." msgstr "Anwendung mit passender Komponentenkennung installieren." @@ -527,7 +530,6 @@ msgstr "Logik" #: src/as-provided.c:149 -#, fuzzy msgid "MIME types" msgstr "MIME-Typen" @@ -652,11 +654,11 @@ msgid "Python 3" msgstr "Python 3" -#: tools/appstream-cli.c:608 +#: tools/appstream-cli.c:700 msgid "Rebuild the component metadata cache." msgstr "Metadaten-Zwischenspeicher der Komponente neu erstellen." -#: tools/appstream-cli.c:614 +#: tools/appstream-cli.c:706 msgid "Remove software matching the component-ID." msgstr "Anwendung mit passender Komponentenkennung entfernen." @@ -670,7 +672,7 @@ msgid "Role Playing" msgstr "Rollenspiele" -#: tools/appstream-cli.c:185 tools/appstream-cli.c:675 +#: tools/appstream-cli.c:185 tools/appstream-cli.c:768 #, c-format msgid "Run '%s --help' to see a full list of available command line options." msgstr "" @@ -701,7 +703,7 @@ msgid "Science" msgstr "Wissenschaft" -#: tools/appstream-cli.c:601 +#: tools/appstream-cli.c:693 msgid "Search the component database." msgstr "Komponentendatenbank durchsuchen." @@ -711,12 +713,12 @@ msgstr "Sicherheit" #. TRANSLATORS: ascli flag description for: --verbose -#: tools/appstream-cli.c:652 +#: tools/appstream-cli.c:745 msgid "Show extra debugging information." msgstr "Zusätzliche Fehlersuchinformationen anzeigen." #. TRANSLATORS: ascli flag description for: --version -#: tools/appstream-cli.c:646 +#: tools/appstream-cli.c:739 msgid "Show the program version." msgstr "Programmversion anzeigen." @@ -731,7 +733,7 @@ msgstr "Strategie" #. these are commands we can use with appstreamcli -#: tools/appstream-cli.c:599 +#: tools/appstream-cli.c:691 msgid "Subcommands:" msgstr "Unterbefehle:" @@ -775,7 +777,7 @@ "Informationen finden Sie im ausführlichen Protokoll." #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand, a bullet-pointed list of types follows -#: tools/appstream-cli.c:565 +#: tools/appstream-cli.c:657 #, c-format msgid "The TYPE must be a valid component-type, such as: %s" msgstr "Der TYPE muss ein gültiger Komponententyp sein, Beispielsweise: %s" @@ -790,7 +792,7 @@ "Werte sind:" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand -#: tools/appstream-cli.c:562 +#: tools/appstream-cli.c:654 msgid "" "This command takes optional TYPE and FILE positional arguments, FILE being a " "file to write to (or \"-\" for standard output)." @@ -811,6 +813,14 @@ "System-Metadaten-Pool, z. B. Abfrage nach Anwendungen, die einen bestimmten " "MIME-Typ liefert und Installation anhand der Softwarekomponentenkennung." +#: tools/appstream-cli.c:622 +msgid "" +"Too many parameters: Need two version numbers or version numbers and a " +"comparison operator." +msgstr "" +"Zu viele Parameter: Es werden zwei Versionsnummern oder Versionsnummern und " +"ein Vergleichsoperator benötigt." + #: tools/ascli-actions-mdata.c:541 #, c-format msgid "Unable to build the template metainfo file: %s" @@ -859,13 +869,19 @@ "'%s' kann nicht geschrieben werden, kann metainfo-Datei nicht installieren." #. TRANSLATORS: ascli has been run with unknown command. -#: tools/appstream-cli.c:750 +#: tools/appstream-cli.c:845 #, c-format msgid "Unknown command '%s'." msgstr "Unbekannter Befehl „%s”" +#. * TRANSLATORS: The user tried to compare version numbers, but the comparison operator (greater-then, equal, etc.) was invalid. +#: tools/appstream-cli.c:582 +#, c-format +msgid "Unknown compare relation '%s'. Valid values are:" +msgstr "Unbekannte Vergleichsbeziehung »%s«. Gültige Werte sind:" + #. TRANSLATORS: ascli flag description for: --from-desktop (part of the new-template subcommand) -#: tools/appstream-cli.c:557 +#: tools/appstream-cli.c:649 msgid "" "Use the given .desktop file to fill in the basic values of the metainfo file." msgstr "" @@ -877,11 +893,11 @@ msgid "Utilities" msgstr "Hilfsprogramme" -#: tools/appstream-cli.c:610 +#: tools/appstream-cli.c:702 msgid "Validate AppStream XML files for issues." msgstr "AppStream-XML-Dateien für Probleme validieren." -#: tools/appstream-cli.c:611 +#: tools/appstream-cli.c:703 msgid "Validate an installed file-tree of an application for valid metadata." msgstr "" "Einen installierten Dateibaum einer Anwendung auf gültige Metadaten " @@ -901,7 +917,7 @@ msgid "Validation was successful: %s" msgstr "Validierung war erfolgreich: %s" -#: tools/appstream-cli.c:605 +#: tools/appstream-cli.c:697 msgid "Value of the item that should be found." msgstr "Wert des Objekts, das gefunden werden soll." @@ -935,7 +951,7 @@ msgid "Word Processor" msgstr "Textverarbeitung" -#: tools/appstream-cli.c:623 +#: tools/appstream-cli.c:716 msgid "" "You can find information about subcommand-specific options by passing \"--" "help\" to the subcommand." @@ -957,8 +973,15 @@ "Um eine Vorlage zu erstellen, müssen Sie einen Softwarekomponententyp " "AppStream angeben. Mögliche Werte sind:" +#: tools/appstream-cli.c:553 +msgid "" +"You need to provide at least two version numbers to compare as parameters." +msgstr "" +"Sie müssen mindestens zwei Versionsnummern zum Vergleichen als Parameter " +"angeben." + #. TRANSLATORS: ascli has been run without command. -#: tools/appstream-cli.c:674 +#: tools/appstream-cli.c:767 msgid "You need to specify a command." msgstr "Sie müssen einen Befehl angeben." diff -Nru appstream-0.12.0/po/en_GB.po appstream-0.12.2/po/en_GB.po --- appstream-0.12.0/po/en_GB.po 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/po/en_GB.po 2018-08-04 07:39:44.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: AppStream\n" "Report-Msgid-Bugs-To: appstream@lists.freedesktop.org\n" -"POT-Creation-Date: 2018-04-04 17:28+0200\n" +"POT-Creation-Date: 2018-06-10 15:36+0200\n" "PO-Revision-Date: 2016-11-08 04:33+0000\n" "Last-Translator: John Vandenberg \n" "Language-Team: English (United Kingdom) \n" +"POT-Creation-Date: 2018-06-10 15:36+0200\n" +"PO-Revision-Date: 2018-05-03 18:40+0000\n" +"Last-Translator: Adolfo Jayme Barrientos \n" "Language-Team: Spanish \n" "Language: es\n" @@ -19,7 +19,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.16-dev\n" +"X-Generator: Weblate 3.0-dev\n" #: tools/appstream-cli.c:146 #, c-format @@ -52,7 +52,7 @@ msgid "Also show pedantic hints." msgstr "" -#: tools/appstream-cli.c:604 +#: tools/appstream-cli.c:696 #, fuzzy msgid "An item type (e.g. lib, bin, python3, …)" msgstr "Un tipo de elemento (p. ej., lib, bin, python3…)" @@ -66,12 +66,14 @@ msgstr "Interfaz de consola de AppStream" #. TRANSLATORS: Output if appstreamcli --version is run and the CLI and libappstream versions differ. -#: tools/appstream-cli.c:696 -#, fuzzy, c-format +#: tools/appstream-cli.c:789 +#, c-format msgid "" "AppStream CLI tool version: %s\n" "AppStream library version: %s" -msgstr "Versión de la herramienta de consola de AppStream: %s" +msgstr "" +"Versión de la herramienta de consola AppStream: %s\n" +"Versión de la biblioteca AppStream: %s" #. TRANSLATORS: In the status report of ascli: Header #: tools/ascli-actions-misc.c:45 @@ -101,7 +103,7 @@ #. TRANSLATORS: This is the header to the --help menu for subcommands #. TRANSLATORS: This is the header to the --help menu -#: tools/appstream-cli.c:143 tools/appstream-cli.c:597 +#: tools/appstream-cli.c:143 tools/appstream-cli.c:689 msgid "AppStream command-line interface" msgstr "Interfaz de consola de AppStream" @@ -122,7 +124,7 @@ "encontrado problemas: %s" #. TRANSLATORS: Output if appstreamcli --version is executed. -#: tools/appstream-cli.c:693 +#: tools/appstream-cli.c:786 #, fuzzy, c-format msgid "AppStream version: %s" msgstr "Versión de la herramienta de consola de AppStream: %s" @@ -228,6 +230,10 @@ msgid "Communication & News" msgstr "Comunicación y noticias" +#: tools/appstream-cli.c:712 +msgid "Compare two version numbers." +msgstr "" + #: src/as-provided.c:167 msgid "Component" msgstr "" @@ -243,7 +249,7 @@ msgstr "Obligatorio para" #. TRANSLATORS: "convert" command in ascli. "Collection XML" is a term describing a specific type of AppStream XML data. -#: tools/appstream-cli.c:619 +#: tools/appstream-cli.c:711 msgid "Convert collection XML to YAML or vice versa." msgstr "Convertir XML de colecta en YAML o viceversa." @@ -253,7 +259,7 @@ msgid "Could not find component providing '%s::%s'." msgstr "No se pudo encontrar un componente que proporcione «%s::%s»." -#: tools/appstream-cli.c:620 +#: tools/appstream-cli.c:713 #, fuzzy msgid "" "Create a template for a metainfo file (to be filled out by the upstream " @@ -306,7 +312,7 @@ msgid "Developer Tools" msgstr "Herramientas de programación" -#: tools/appstream-cli.c:616 +#: tools/appstream-cli.c:708 msgid "Display status information about available AppStream metadata." msgstr "" "Mostrar información de estado sobre los metadatos disponibles de AppStream." @@ -322,11 +328,11 @@ msgstr "" #. TRANSLATORS: ascli flag description for: --no-color -#: tools/appstream-cli.c:657 +#: tools/appstream-cli.c:750 msgid "Don't show colored output." msgstr "No mostrar salida coloreada." -#: tools/appstream-cli.c:607 +#: tools/appstream-cli.c:699 msgid "Dump raw XML metadata for a component matching the ID." msgstr "" "Volcar los metadatos XML en bruto para un componente que coincida con el " @@ -445,11 +451,11 @@ msgid "Games" msgstr "Juegos" -#: tools/appstream-cli.c:603 +#: tools/appstream-cli.c:695 msgid "Get components which provide the given item." msgstr "Obtener componentes que proporcionen el elemento dado." -#: tools/appstream-cli.c:602 +#: tools/appstream-cli.c:694 msgid "Get information about a component by its ID." msgstr "Obtener información sobre un componente mediante su identificador." @@ -484,11 +490,11 @@ msgid "Input Sources" msgstr "Fuentes de entrada" -#: tools/appstream-cli.c:617 +#: tools/appstream-cli.c:709 msgid "Install a metadata file into the right location." msgstr "Instalar un archivo de metadatos en el sitio correcto." -#: tools/appstream-cli.c:613 +#: tools/appstream-cli.c:705 #, fuzzy msgid "Install software matching the component-ID." msgstr "Instalar el programa que coincida con el «component-id»." @@ -664,11 +670,11 @@ msgid "Python 3" msgstr "Python 3" -#: tools/appstream-cli.c:608 +#: tools/appstream-cli.c:700 msgid "Rebuild the component metadata cache." msgstr "Reconstruir la antememoria de metadatos de componentes." -#: tools/appstream-cli.c:614 +#: tools/appstream-cli.c:706 #, fuzzy msgid "Remove software matching the component-ID." msgstr "Desinstalar el programa que coincida con el «component-id»." @@ -683,7 +689,7 @@ msgid "Role Playing" msgstr "Juegos de rol" -#: tools/appstream-cli.c:185 tools/appstream-cli.c:675 +#: tools/appstream-cli.c:185 tools/appstream-cli.c:768 #, c-format msgid "Run '%s --help' to see a full list of available command line options." msgstr "" @@ -714,7 +720,7 @@ msgid "Science" msgstr "Ciencias" -#: tools/appstream-cli.c:601 +#: tools/appstream-cli.c:693 msgid "Search the component database." msgstr "Buscar en la base de datos de componentes." @@ -724,12 +730,12 @@ msgstr "Seguridad" #. TRANSLATORS: ascli flag description for: --verbose -#: tools/appstream-cli.c:652 +#: tools/appstream-cli.c:745 msgid "Show extra debugging information." msgstr "Mostrar información adicional de depuración." #. TRANSLATORS: ascli flag description for: --version -#: tools/appstream-cli.c:646 +#: tools/appstream-cli.c:739 msgid "Show the program version." msgstr "Mostrar la versión del programa." @@ -744,7 +750,7 @@ msgstr "Estrategia" #. these are commands we can use with appstreamcli -#: tools/appstream-cli.c:599 +#: tools/appstream-cli.c:691 msgid "Subcommands:" msgstr "Subórdenes:" @@ -788,7 +794,7 @@ "registro detallado para obtener más información." #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand, a bullet-pointed list of types follows -#: tools/appstream-cli.c:565 +#: tools/appstream-cli.c:657 #, c-format msgid "The TYPE must be a valid component-type, such as: %s" msgstr "" @@ -803,7 +809,7 @@ "valores posibles son:" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand -#: tools/appstream-cli.c:562 +#: tools/appstream-cli.c:654 msgid "" "This command takes optional TYPE and FILE positional arguments, FILE being a " "file to write to (or \"-\" for standard output)." @@ -822,6 +828,12 @@ "para, por ejemplo, realizar consultas de programas a través de tipos MIME " "específicos e instalarlos por sus identificadores de componente." +#: tools/appstream-cli.c:622 +msgid "" +"Too many parameters: Need two version numbers or version numbers and a " +"comparison operator." +msgstr "" + #: tools/ascli-actions-mdata.c:541 #, c-format msgid "Unable to build the template metainfo file: %s" @@ -873,13 +885,19 @@ "metainformación." #. TRANSLATORS: ascli has been run with unknown command. -#: tools/appstream-cli.c:750 +#: tools/appstream-cli.c:845 #, c-format msgid "Unknown command '%s'." msgstr "" +#. * TRANSLATORS: The user tried to compare version numbers, but the comparison operator (greater-then, equal, etc.) was invalid. +#: tools/appstream-cli.c:582 +#, c-format +msgid "Unknown compare relation '%s'. Valid values are:" +msgstr "" + #. TRANSLATORS: ascli flag description for: --from-desktop (part of the new-template subcommand) -#: tools/appstream-cli.c:557 +#: tools/appstream-cli.c:649 #, fuzzy msgid "" "Use the given .desktop file to fill in the basic values of the metainfo file." @@ -892,11 +910,11 @@ msgid "Utilities" msgstr "Utilidades" -#: tools/appstream-cli.c:610 +#: tools/appstream-cli.c:702 msgid "Validate AppStream XML files for issues." msgstr "Validar archivos XML de AppStream en busca de errores." -#: tools/appstream-cli.c:611 +#: tools/appstream-cli.c:703 msgid "Validate an installed file-tree of an application for valid metadata." msgstr "" @@ -914,7 +932,7 @@ msgid "Validation was successful: %s" msgstr "Se realizó la validación correctamente: %s" -#: tools/appstream-cli.c:605 +#: tools/appstream-cli.c:697 msgid "Value of the item that should be found." msgstr "El valor del elemento que se debe encontrar." @@ -948,7 +966,7 @@ msgid "Word Processor" msgstr "Procesador de textos" -#: tools/appstream-cli.c:623 +#: tools/appstream-cli.c:716 msgid "" "You can find information about subcommand-specific options by passing \"--" "help\" to the subcommand." @@ -971,8 +989,13 @@ "Debe proporcionar un tipo de componente de «software» a AppStream para " "generar una plantilla. Los valores posibles son:" +#: tools/appstream-cli.c:553 +msgid "" +"You need to provide at least two version numbers to compare as parameters." +msgstr "" + #. TRANSLATORS: ascli has been run without command. -#: tools/appstream-cli.c:674 +#: tools/appstream-cli.c:767 msgid "You need to specify a command." msgstr "Debe especificar una orden." diff -Nru appstream-0.12.0/po/eu.po appstream-0.12.2/po/eu.po --- appstream-0.12.0/po/eu.po 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/po/eu.po 2018-08-04 07:39:44.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: AppStream\n" "Report-Msgid-Bugs-To: appstream@lists.freedesktop.org\n" -"POT-Creation-Date: 2018-04-04 17:28+0200\n" +"POT-Creation-Date: 2018-06-10 15:36+0200\n" "PO-Revision-Date: 2016-08-15 18:48+0000\n" "Last-Translator: Matthias Klumpp \n" "Language-Team: Basque (http://www.transifex.com/freedesktop/appstream/" @@ -51,7 +51,7 @@ msgid "Also show pedantic hints." msgstr "" -#: tools/appstream-cli.c:604 +#: tools/appstream-cli.c:696 msgid "An item type (e.g. lib, bin, python3, …)" msgstr "" @@ -64,7 +64,7 @@ msgstr "" #. TRANSLATORS: Output if appstreamcli --version is run and the CLI and libappstream versions differ. -#: tools/appstream-cli.c:696 +#: tools/appstream-cli.c:789 #, c-format msgid "" "AppStream CLI tool version: %s\n" @@ -96,7 +96,7 @@ #. TRANSLATORS: This is the header to the --help menu for subcommands #. TRANSLATORS: This is the header to the --help menu -#: tools/appstream-cli.c:143 tools/appstream-cli.c:597 +#: tools/appstream-cli.c:143 tools/appstream-cli.c:689 msgid "AppStream command-line interface" msgstr "" @@ -112,7 +112,7 @@ msgstr "" #. TRANSLATORS: Output if appstreamcli --version is executed. -#: tools/appstream-cli.c:693 +#: tools/appstream-cli.c:786 #, c-format msgid "AppStream version: %s" msgstr "" @@ -216,6 +216,10 @@ msgid "Communication & News" msgstr "" +#: tools/appstream-cli.c:712 +msgid "Compare two version numbers." +msgstr "" + #: src/as-provided.c:167 msgid "Component" msgstr "" @@ -231,7 +235,7 @@ msgstr "" #. TRANSLATORS: "convert" command in ascli. "Collection XML" is a term describing a specific type of AppStream XML data. -#: tools/appstream-cli.c:619 +#: tools/appstream-cli.c:711 msgid "Convert collection XML to YAML or vice versa." msgstr "" @@ -241,7 +245,7 @@ msgid "Could not find component providing '%s::%s'." msgstr "" -#: tools/appstream-cli.c:620 +#: tools/appstream-cli.c:713 msgid "" "Create a template for a metainfo file (to be filled out by the upstream " "project)." @@ -289,7 +293,7 @@ msgid "Developer Tools" msgstr "Garatzailea" -#: tools/appstream-cli.c:616 +#: tools/appstream-cli.c:708 msgid "Display status information about available AppStream metadata." msgstr "" @@ -304,11 +308,11 @@ msgstr "" #. TRANSLATORS: ascli flag description for: --no-color -#: tools/appstream-cli.c:657 +#: tools/appstream-cli.c:750 msgid "Don't show colored output." msgstr "" -#: tools/appstream-cli.c:607 +#: tools/appstream-cli.c:699 msgid "Dump raw XML metadata for a component matching the ID." msgstr "" @@ -425,11 +429,11 @@ msgid "Games" msgstr "" -#: tools/appstream-cli.c:603 +#: tools/appstream-cli.c:695 msgid "Get components which provide the given item." msgstr "" -#: tools/appstream-cli.c:602 +#: tools/appstream-cli.c:694 msgid "Get information about a component by its ID." msgstr "" @@ -464,11 +468,11 @@ msgid "Input Sources" msgstr "" -#: tools/appstream-cli.c:617 +#: tools/appstream-cli.c:709 msgid "Install a metadata file into the right location." msgstr "" -#: tools/appstream-cli.c:613 +#: tools/appstream-cli.c:705 msgid "Install software matching the component-ID." msgstr "" @@ -632,11 +636,11 @@ msgid "Python 3" msgstr "" -#: tools/appstream-cli.c:608 +#: tools/appstream-cli.c:700 msgid "Rebuild the component metadata cache." msgstr "" -#: tools/appstream-cli.c:614 +#: tools/appstream-cli.c:706 msgid "Remove software matching the component-ID." msgstr "" @@ -650,7 +654,7 @@ msgid "Role Playing" msgstr "" -#: tools/appstream-cli.c:185 tools/appstream-cli.c:675 +#: tools/appstream-cli.c:185 tools/appstream-cli.c:768 #, c-format msgid "Run '%s --help' to see a full list of available command line options." msgstr "" @@ -676,7 +680,7 @@ msgid "Science" msgstr "" -#: tools/appstream-cli.c:601 +#: tools/appstream-cli.c:693 msgid "Search the component database." msgstr "" @@ -686,12 +690,12 @@ msgstr "" #. TRANSLATORS: ascli flag description for: --verbose -#: tools/appstream-cli.c:652 +#: tools/appstream-cli.c:745 msgid "Show extra debugging information." msgstr "" #. TRANSLATORS: ascli flag description for: --version -#: tools/appstream-cli.c:646 +#: tools/appstream-cli.c:739 msgid "Show the program version." msgstr "" @@ -706,7 +710,7 @@ msgstr "" #. these are commands we can use with appstreamcli -#: tools/appstream-cli.c:599 +#: tools/appstream-cli.c:691 msgid "Subcommands:" msgstr "" @@ -747,7 +751,7 @@ msgstr "" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand, a bullet-pointed list of types follows -#: tools/appstream-cli.c:565 +#: tools/appstream-cli.c:657 #, c-format msgid "The TYPE must be a valid component-type, such as: %s" msgstr "" @@ -760,7 +764,7 @@ msgstr "" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand -#: tools/appstream-cli.c:562 +#: tools/appstream-cli.c:654 msgid "" "This command takes optional TYPE and FILE positional arguments, FILE being a " "file to write to (or \"-\" for standard output)." @@ -774,6 +778,12 @@ "and installing it by its software component identifier." msgstr "" +#: tools/appstream-cli.c:622 +msgid "" +"Too many parameters: Need two version numbers or version numbers and a " +"comparison operator." +msgstr "" + #: tools/ascli-actions-mdata.c:541 #, c-format msgid "Unable to build the template metainfo file: %s" @@ -819,13 +829,19 @@ msgstr "" #. TRANSLATORS: ascli has been run with unknown command. -#: tools/appstream-cli.c:750 +#: tools/appstream-cli.c:845 #, c-format msgid "Unknown command '%s'." msgstr "" +#. * TRANSLATORS: The user tried to compare version numbers, but the comparison operator (greater-then, equal, etc.) was invalid. +#: tools/appstream-cli.c:582 +#, c-format +msgid "Unknown compare relation '%s'. Valid values are:" +msgstr "" + #. TRANSLATORS: ascli flag description for: --from-desktop (part of the new-template subcommand) -#: tools/appstream-cli.c:557 +#: tools/appstream-cli.c:649 msgid "" "Use the given .desktop file to fill in the basic values of the metainfo file." msgstr "" @@ -835,11 +851,11 @@ msgid "Utilities" msgstr "" -#: tools/appstream-cli.c:610 +#: tools/appstream-cli.c:702 msgid "Validate AppStream XML files for issues." msgstr "" -#: tools/appstream-cli.c:611 +#: tools/appstream-cli.c:703 msgid "Validate an installed file-tree of an application for valid metadata." msgstr "" @@ -857,7 +873,7 @@ msgid "Validation was successful: %s" msgstr "" -#: tools/appstream-cli.c:605 +#: tools/appstream-cli.c:697 msgid "Value of the item that should be found." msgstr "" @@ -892,7 +908,7 @@ msgid "Word Processor" msgstr "" -#: tools/appstream-cli.c:623 +#: tools/appstream-cli.c:716 msgid "" "You can find information about subcommand-specific options by passing \"--" "help\" to the subcommand." @@ -909,8 +925,13 @@ "template. Possible values are:" msgstr "" +#: tools/appstream-cli.c:553 +msgid "" +"You need to provide at least two version numbers to compare as parameters." +msgstr "" + #. TRANSLATORS: ascli has been run without command. -#: tools/appstream-cli.c:674 +#: tools/appstream-cli.c:767 msgid "You need to specify a command." msgstr "" diff -Nru appstream-0.12.0/po/fi.po appstream-0.12.2/po/fi.po --- appstream-0.12.0/po/fi.po 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/po/fi.po 2018-08-04 07:39:44.000000000 +0000 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: AppStream\n" "Report-Msgid-Bugs-To: appstream@lists.freedesktop.org\n" -"POT-Creation-Date: 2018-04-04 17:28+0200\n" +"POT-Creation-Date: 2018-06-10 15:36+0200\n" "PO-Revision-Date: 2018-04-02 19:15+0000\n" "Last-Translator: Juhani Numminen \n" "Language-Team: Finnish \n" +"POT-Creation-Date: 2018-06-10 15:36+0200\n" +"PO-Revision-Date: 2018-07-21 10:37+0000\n" +"Last-Translator: Hugo Locurcio \n" "Language-Team: French \n" "Language: fr\n" @@ -17,7 +17,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 2.19-dev\n" +"X-Generator: Weblate 3.1-dev\n" #: tools/appstream-cli.c:146 #, c-format @@ -50,7 +50,7 @@ msgid "Also show pedantic hints." msgstr "Afficher également des conseils détaillés." -#: tools/appstream-cli.c:604 +#: tools/appstream-cli.c:696 #, fuzzy msgid "An item type (e.g. lib, bin, python3, …)" msgstr "Un type d'élément (ex : lib, bin, python3…)" @@ -64,7 +64,7 @@ msgstr "Interface en ligne de commande AppStream" #. TRANSLATORS: Output if appstreamcli --version is run and the CLI and libappstream versions differ. -#: tools/appstream-cli.c:696 +#: tools/appstream-cli.c:789 #, c-format msgid "" "AppStream CLI tool version: %s\n" @@ -100,7 +100,7 @@ #. TRANSLATORS: This is the header to the --help menu for subcommands #. TRANSLATORS: This is the header to the --help menu -#: tools/appstream-cli.c:143 tools/appstream-cli.c:597 +#: tools/appstream-cli.c:143 tools/appstream-cli.c:689 msgid "AppStream command-line interface" msgstr "Interface AppStream en ligne de commande" @@ -120,7 +120,7 @@ "trouvés : %s" #. TRANSLATORS: Output if appstreamcli --version is executed. -#: tools/appstream-cli.c:693 +#: tools/appstream-cli.c:786 #, c-format msgid "AppStream version: %s" msgstr "Version d’AppStream : %s" @@ -226,6 +226,10 @@ msgid "Communication & News" msgstr "Communications & actualités" +#: tools/appstream-cli.c:712 +msgid "Compare two version numbers." +msgstr "Comparer deux numéros de version." + #: src/as-provided.c:167 msgid "Component" msgstr "Composant" @@ -241,7 +245,7 @@ msgstr "Obligatoire pour" #. TRANSLATORS: "convert" command in ascli. "Collection XML" is a term describing a specific type of AppStream XML data. -#: tools/appstream-cli.c:619 +#: tools/appstream-cli.c:711 msgid "Convert collection XML to YAML or vice versa." msgstr "Convertit une collection XML vers YAML ou inversement." @@ -251,14 +255,13 @@ msgid "Could not find component providing '%s::%s'." msgstr "Impossible de trouver des composants qui fournissent « %s::%s »." -#: tools/appstream-cli.c:620 -#, fuzzy +#: tools/appstream-cli.c:713 msgid "" "Create a template for a metainfo file (to be filled out by the upstream " "project)." msgstr "" -"Créer un modèle pour un fichier metainfo (à compléter par le projet " -"« upstream »)." +"Créer un modèle pour un fichier metainfo (à compléter par le projet en " +"amont)." #: src/as-provided.c:161 msgid "DBus Session Services" @@ -304,7 +307,7 @@ msgid "Developer Tools" msgstr "Outils pour développeurs" -#: tools/appstream-cli.c:616 +#: tools/appstream-cli.c:708 msgid "Display status information about available AppStream metadata." msgstr "" "Affiche des informations d'état sur les métadonnées AppStream disponibles." @@ -320,11 +323,11 @@ msgstr "Ne pas utiliser l’accès au réseau." #. TRANSLATORS: ascli flag description for: --no-color -#: tools/appstream-cli.c:657 +#: tools/appstream-cli.c:750 msgid "Don't show colored output." msgstr "Ne pas afficher de sortie colorée." -#: tools/appstream-cli.c:607 +#: tools/appstream-cli.c:699 msgid "Dump raw XML metadata for a component matching the ID." msgstr "" "Produire des métadonnées XML brutes pour un composant correspondant à l'ID." @@ -442,11 +445,11 @@ msgid "Games" msgstr "Jeux" -#: tools/appstream-cli.c:603 +#: tools/appstream-cli.c:695 msgid "Get components which provide the given item." msgstr "Obtenir les composants qui fournissent l'élément indiqué." -#: tools/appstream-cli.c:602 +#: tools/appstream-cli.c:694 msgid "Get information about a component by its ID." msgstr "Obtenir des informations sur un composant par son ID." @@ -481,11 +484,11 @@ msgid "Input Sources" msgstr "Sources de saisie" -#: tools/appstream-cli.c:617 +#: tools/appstream-cli.c:709 msgid "Install a metadata file into the right location." msgstr "Installer un fichier de métadonnées au bon emplacement." -#: tools/appstream-cli.c:613 +#: tools/appstream-cli.c:705 #, fuzzy msgid "Install software matching the component-ID." msgstr "Installer un logiciel correspondant à l'ID du composant." @@ -537,7 +540,7 @@ #. TRANSLATORS: ascli flag description for: --no-cache #: tools/appstream-cli.c:67 msgid "Make request without any caching." -msgstr "" +msgstr "Effectuer une requête sans mise en cache." #. TRANSLATORS: ascli flag description for: --cachepath #: tools/appstream-cli.c:57 @@ -659,11 +662,11 @@ msgid "Python 3" msgstr "Python 3" -#: tools/appstream-cli.c:608 +#: tools/appstream-cli.c:700 msgid "Rebuild the component metadata cache." msgstr "Reconstruire le cache des métadonnées du composant." -#: tools/appstream-cli.c:614 +#: tools/appstream-cli.c:706 #, fuzzy msgid "Remove software matching the component-ID." msgstr "Désinstaller le logiciel correspondant à l'identifiant du composant." @@ -678,7 +681,7 @@ msgid "Role Playing" msgstr "Jeu de rôle" -#: tools/appstream-cli.c:185 tools/appstream-cli.c:675 +#: tools/appstream-cli.c:185 tools/appstream-cli.c:768 #, c-format msgid "Run '%s --help' to see a full list of available command line options." msgstr "" @@ -709,7 +712,7 @@ msgid "Science" msgstr "Science" -#: tools/appstream-cli.c:601 +#: tools/appstream-cli.c:693 msgid "Search the component database." msgstr "Chercher dans la base de données des composants." @@ -719,12 +722,12 @@ msgstr "Sécurité" #. TRANSLATORS: ascli flag description for: --verbose -#: tools/appstream-cli.c:652 +#: tools/appstream-cli.c:745 msgid "Show extra debugging information." msgstr "Afficher des informations de débogage supplémentaires." #. TRANSLATORS: ascli flag description for: --version -#: tools/appstream-cli.c:646 +#: tools/appstream-cli.c:739 msgid "Show the program version." msgstr "Afficher la version du programme." @@ -739,7 +742,7 @@ msgstr "Stratégie" #. these are commands we can use with appstreamcli -#: tools/appstream-cli.c:599 +#: tools/appstream-cli.c:691 msgid "Subcommands:" msgstr "Sous-commandes :" @@ -783,7 +786,7 @@ "les journaux verbeux pour plus d'information." #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand, a bullet-pointed list of types follows -#: tools/appstream-cli.c:565 +#: tools/appstream-cli.c:657 #, c-format msgid "The TYPE must be a valid component-type, such as: %s" msgstr "Le TYPE doit être un type de composant valide, comme : %s" @@ -798,7 +801,7 @@ "valeurs possibles sont :" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand -#: tools/appstream-cli.c:562 +#: tools/appstream-cli.c:654 msgid "" "This command takes optional TYPE and FILE positional arguments, FILE being a " "file to write to (or \"-\" for standard output)." @@ -820,6 +823,14 @@ "supportant un type mime spécifique et l'installer en utilisant son " "identifiant de composant logiciel." +#: tools/appstream-cli.c:622 +msgid "" +"Too many parameters: Need two version numbers or version numbers and a " +"comparison operator." +msgstr "" +"Trop de paramètres : Il faut deux numéros de version ou deux numéros de " +"version et un opérateur de comparaison." + #: tools/ascli-actions-mdata.c:541 #, c-format msgid "Unable to build the template metainfo file: %s" @@ -869,13 +880,19 @@ "installé." #. TRANSLATORS: ascli has been run with unknown command. -#: tools/appstream-cli.c:750 +#: tools/appstream-cli.c:845 #, c-format msgid "Unknown command '%s'." -msgstr "" +msgstr "Commande inconnue « %s »." + +#. * TRANSLATORS: The user tried to compare version numbers, but the comparison operator (greater-then, equal, etc.) was invalid. +#: tools/appstream-cli.c:582 +#, c-format +msgid "Unknown compare relation '%s'. Valid values are:" +msgstr "Relation de comparaison « %s » inconnue. Les valeurs valables sont :" #. TRANSLATORS: ascli flag description for: --from-desktop (part of the new-template subcommand) -#: tools/appstream-cli.c:557 +#: tools/appstream-cli.c:649 #, fuzzy msgid "" "Use the given .desktop file to fill in the basic values of the metainfo file." @@ -888,11 +905,11 @@ msgid "Utilities" msgstr "Utilitaires" -#: tools/appstream-cli.c:610 +#: tools/appstream-cli.c:702 msgid "Validate AppStream XML files for issues." msgstr "Valider les fichiers XML AppStream." -#: tools/appstream-cli.c:611 +#: tools/appstream-cli.c:703 msgid "Validate an installed file-tree of an application for valid metadata." msgstr "" "Valider les métadonnées d'une arborescence de fichiers installée d'une " @@ -912,7 +929,7 @@ msgid "Validation was successful: %s" msgstr "La validation a réussi : %s" -#: tools/appstream-cli.c:605 +#: tools/appstream-cli.c:697 msgid "Value of the item that should be found." msgstr "Valeur de l'élément devant être trouvé." @@ -946,7 +963,7 @@ msgid "Word Processor" msgstr "Traitement de texte" -#: tools/appstream-cli.c:623 +#: tools/appstream-cli.c:716 msgid "" "You can find information about subcommand-specific options by passing \"--" "help\" to the subcommand." @@ -969,8 +986,14 @@ "Vous devez préciser un type de composant logiciel AppStream pour générer un " "modèle. Les valeurs possibles sont :" +#: tools/appstream-cli.c:553 +msgid "" +"You need to provide at least two version numbers to compare as parameters." +msgstr "" +"Vous devez fournir en paramètre au moins deux numéros de version à comparer." + #. TRANSLATORS: ascli has been run without command. -#: tools/appstream-cli.c:674 +#: tools/appstream-cli.c:767 msgid "You need to specify a command." msgstr "Vous devez spécifier une commande." diff -Nru appstream-0.12.0/po/gd.po appstream-0.12.2/po/gd.po --- appstream-0.12.0/po/gd.po 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/po/gd.po 2018-08-04 07:39:44.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: appstream\n" "Report-Msgid-Bugs-To: appstream@lists.freedesktop.org\n" -"POT-Creation-Date: 2018-04-04 17:28+0200\n" +"POT-Creation-Date: 2018-06-10 15:36+0200\n" "PO-Revision-Date: 2017-03-10 22:24+0000\n" "Last-Translator: GunChleoc \n" "Language-Team: Gaelic \n" "Language-Team: Galician (http://www.transifex.com/freedesktop/appstream/" @@ -51,7 +51,7 @@ msgid "Also show pedantic hints." msgstr "" -#: tools/appstream-cli.c:604 +#: tools/appstream-cli.c:696 msgid "An item type (e.g. lib, bin, python3, …)" msgstr "" @@ -65,7 +65,7 @@ msgstr "Versión da ferramenta cliente de AppStream: %s" #. TRANSLATORS: Output if appstreamcli --version is run and the CLI and libappstream versions differ. -#: tools/appstream-cli.c:696 +#: tools/appstream-cli.c:789 #, fuzzy, c-format msgid "" "AppStream CLI tool version: %s\n" @@ -97,7 +97,7 @@ #. TRANSLATORS: This is the header to the --help menu for subcommands #. TRANSLATORS: This is the header to the --help menu -#: tools/appstream-cli.c:143 tools/appstream-cli.c:597 +#: tools/appstream-cli.c:143 tools/appstream-cli.c:689 msgid "AppStream command-line interface" msgstr "Interface por liña de ordes de AppStream" @@ -113,7 +113,7 @@ msgstr "" #. TRANSLATORS: Output if appstreamcli --version is executed. -#: tools/appstream-cli.c:693 +#: tools/appstream-cli.c:786 #, fuzzy, c-format msgid "AppStream version: %s" msgstr "Versión da ferramenta cliente de AppStream: %s" @@ -217,6 +217,10 @@ msgid "Communication & News" msgstr "" +#: tools/appstream-cli.c:712 +msgid "Compare two version numbers." +msgstr "" + #: src/as-provided.c:167 msgid "Component" msgstr "" @@ -232,7 +236,7 @@ msgstr "Obrigatorio para" #. TRANSLATORS: "convert" command in ascli. "Collection XML" is a term describing a specific type of AppStream XML data. -#: tools/appstream-cli.c:619 +#: tools/appstream-cli.c:711 msgid "Convert collection XML to YAML or vice versa." msgstr "" @@ -242,7 +246,7 @@ msgid "Could not find component providing '%s::%s'." msgstr "Non foi posíbel atopar compoñentes co id «%s»!" -#: tools/appstream-cli.c:620 +#: tools/appstream-cli.c:713 msgid "" "Create a template for a metainfo file (to be filled out by the upstream " "project)." @@ -291,7 +295,7 @@ msgid "Developer Tools" msgstr "Desenvolvedor" -#: tools/appstream-cli.c:616 +#: tools/appstream-cli.c:708 msgid "Display status information about available AppStream metadata." msgstr "" @@ -306,12 +310,12 @@ msgstr "" #. TRANSLATORS: ascli flag description for: --no-color -#: tools/appstream-cli.c:657 +#: tools/appstream-cli.c:750 #, fuzzy msgid "Don't show colored output." msgstr "Non mostrar a saída con cores" -#: tools/appstream-cli.c:607 +#: tools/appstream-cli.c:699 msgid "Dump raw XML metadata for a component matching the ID." msgstr "" @@ -429,11 +433,11 @@ msgid "Games" msgstr "" -#: tools/appstream-cli.c:603 +#: tools/appstream-cli.c:695 msgid "Get components which provide the given item." msgstr "" -#: tools/appstream-cli.c:602 +#: tools/appstream-cli.c:694 msgid "Get information about a component by its ID." msgstr "" @@ -468,11 +472,11 @@ msgid "Input Sources" msgstr "" -#: tools/appstream-cli.c:617 +#: tools/appstream-cli.c:709 msgid "Install a metadata file into the right location." msgstr "" -#: tools/appstream-cli.c:613 +#: tools/appstream-cli.c:705 msgid "Install software matching the component-ID." msgstr "" @@ -641,11 +645,11 @@ msgid "Python 3" msgstr "" -#: tools/appstream-cli.c:608 +#: tools/appstream-cli.c:700 msgid "Rebuild the component metadata cache." msgstr "" -#: tools/appstream-cli.c:614 +#: tools/appstream-cli.c:706 msgid "Remove software matching the component-ID." msgstr "" @@ -659,7 +663,7 @@ msgid "Role Playing" msgstr "" -#: tools/appstream-cli.c:185 tools/appstream-cli.c:675 +#: tools/appstream-cli.c:185 tools/appstream-cli.c:768 #, c-format msgid "Run '%s --help' to see a full list of available command line options." msgstr "" @@ -689,7 +693,7 @@ msgid "Science" msgstr "" -#: tools/appstream-cli.c:601 +#: tools/appstream-cli.c:693 msgid "Search the component database." msgstr "" @@ -699,13 +703,13 @@ msgstr "" #. TRANSLATORS: ascli flag description for: --verbose -#: tools/appstream-cli.c:652 +#: tools/appstream-cli.c:745 #, fuzzy msgid "Show extra debugging information." msgstr "Mostra información de depuración adicional" #. TRANSLATORS: ascli flag description for: --version -#: tools/appstream-cli.c:646 +#: tools/appstream-cli.c:739 #, fuzzy msgid "Show the program version." msgstr "Mostra a versión do programa" @@ -721,7 +725,7 @@ msgstr "" #. these are commands we can use with appstreamcli -#: tools/appstream-cli.c:599 +#: tools/appstream-cli.c:691 msgid "Subcommands:" msgstr "Subordes:" @@ -762,7 +766,7 @@ msgstr "" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand, a bullet-pointed list of types follows -#: tools/appstream-cli.c:565 +#: tools/appstream-cli.c:657 #, c-format msgid "The TYPE must be a valid component-type, such as: %s" msgstr "" @@ -775,7 +779,7 @@ msgstr "" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand -#: tools/appstream-cli.c:562 +#: tools/appstream-cli.c:654 msgid "" "This command takes optional TYPE and FILE positional arguments, FILE being a " "file to write to (or \"-\" for standard output)." @@ -789,6 +793,12 @@ "and installing it by its software component identifier." msgstr "" +#: tools/appstream-cli.c:622 +msgid "" +"Too many parameters: Need two version numbers or version numbers and a " +"comparison operator." +msgstr "" + #: tools/ascli-actions-mdata.c:541 #, c-format msgid "Unable to build the template metainfo file: %s" @@ -834,13 +844,19 @@ msgstr "" #. TRANSLATORS: ascli has been run with unknown command. -#: tools/appstream-cli.c:750 +#: tools/appstream-cli.c:845 #, c-format msgid "Unknown command '%s'." msgstr "" +#. * TRANSLATORS: The user tried to compare version numbers, but the comparison operator (greater-then, equal, etc.) was invalid. +#: tools/appstream-cli.c:582 +#, c-format +msgid "Unknown compare relation '%s'. Valid values are:" +msgstr "" + #. TRANSLATORS: ascli flag description for: --from-desktop (part of the new-template subcommand) -#: tools/appstream-cli.c:557 +#: tools/appstream-cli.c:649 msgid "" "Use the given .desktop file to fill in the basic values of the metainfo file." msgstr "" @@ -850,11 +866,11 @@ msgid "Utilities" msgstr "" -#: tools/appstream-cli.c:610 +#: tools/appstream-cli.c:702 msgid "Validate AppStream XML files for issues." msgstr "" -#: tools/appstream-cli.c:611 +#: tools/appstream-cli.c:703 msgid "Validate an installed file-tree of an application for valid metadata." msgstr "" @@ -872,7 +888,7 @@ msgid "Validation was successful: %s" msgstr "Validación rematada con éxito." -#: tools/appstream-cli.c:605 +#: tools/appstream-cli.c:697 msgid "Value of the item that should be found." msgstr "" @@ -907,7 +923,7 @@ msgid "Word Processor" msgstr "" -#: tools/appstream-cli.c:623 +#: tools/appstream-cli.c:716 msgid "" "You can find information about subcommand-specific options by passing \"--" "help\" to the subcommand." @@ -924,8 +940,13 @@ "template. Possible values are:" msgstr "" +#: tools/appstream-cli.c:553 +msgid "" +"You need to provide at least two version numbers to compare as parameters." +msgstr "" + #. TRANSLATORS: ascli has been run without command. -#: tools/appstream-cli.c:674 +#: tools/appstream-cli.c:767 msgid "You need to specify a command." msgstr "Debe especificar unha orde." diff -Nru appstream-0.12.0/po/hu.po appstream-0.12.2/po/hu.po --- appstream-0.12.0/po/hu.po 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/po/hu.po 2018-08-04 07:39:44.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: AppStream\n" "Report-Msgid-Bugs-To: appstream@lists.freedesktop.org\n" -"POT-Creation-Date: 2018-04-04 17:28+0200\n" +"POT-Creation-Date: 2018-06-10 15:36+0200\n" "PO-Revision-Date: 2018-01-27 14:37+0000\n" "Last-Translator: Balázs Meskó \n" "Language-Team: Hungarian \n" +"POT-Creation-Date: 2018-06-10 15:36+0200\n" +"PO-Revision-Date: 2018-06-16 08:10+0000\n" +"Last-Translator: Andika Triwidada \n" "Language-Team: Indonesian \n" "Language: id\n" @@ -18,7 +18,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 2.20-dev\n" +"X-Generator: Weblate 3.0.1\n" #: tools/appstream-cli.c:146 #, c-format @@ -51,7 +51,7 @@ msgid "Also show pedantic hints." msgstr "Tampilkan juga saran pedantik." -#: tools/appstream-cli.c:604 +#: tools/appstream-cli.c:696 msgid "An item type (e.g. lib, bin, python3, …)" msgstr "Suatu tipe butir (mis. lib, bin, python3, ...)" @@ -64,7 +64,7 @@ msgstr "CLI AppStream" #. TRANSLATORS: Output if appstreamcli --version is run and the CLI and libappstream versions differ. -#: tools/appstream-cli.c:696 +#: tools/appstream-cli.c:789 #, c-format msgid "" "AppStream CLI tool version: %s\n" @@ -100,7 +100,7 @@ #. TRANSLATORS: This is the header to the --help menu for subcommands #. TRANSLATORS: This is the header to the --help menu -#: tools/appstream-cli.c:143 tools/appstream-cli.c:597 +#: tools/appstream-cli.c:143 tools/appstream-cli.c:689 msgid "AppStream command-line interface" msgstr "Antarmuka baris perintah AppStream" @@ -118,7 +118,7 @@ msgstr "Singgahan sistem AppStream dimutakhirkan, tapi ditemukan masalah: %s" #. TRANSLATORS: Output if appstreamcli --version is executed. -#: tools/appstream-cli.c:693 +#: tools/appstream-cli.c:786 #, c-format msgid "AppStream version: %s" msgstr "AppStream versi: %s" @@ -224,6 +224,10 @@ msgid "Communication & News" msgstr "Komunikasi & Berita" +#: tools/appstream-cli.c:712 +msgid "Compare two version numbers." +msgstr "Bandingkan dua nomor versi." + #: src/as-provided.c:167 msgid "Component" msgstr "Komponen" @@ -239,7 +243,7 @@ msgstr "Wajib bagi" #. TRANSLATORS: "convert" command in ascli. "Collection XML" is a term describing a specific type of AppStream XML data. -#: tools/appstream-cli.c:619 +#: tools/appstream-cli.c:711 msgid "Convert collection XML to YAML or vice versa." msgstr "Mengonversi koleksi XML ke YAML atau sebaliknya." @@ -249,7 +253,7 @@ msgid "Could not find component providing '%s::%s'." msgstr "Tidak bisa menemukan komponen yang menyediakan '%s::%s'." -#: tools/appstream-cli.c:620 +#: tools/appstream-cli.c:713 msgid "" "Create a template for a metainfo file (to be filled out by the upstream " "project)." @@ -297,7 +301,7 @@ msgid "Developer Tools" msgstr "Alat Pengembang" -#: tools/appstream-cli.c:616 +#: tools/appstream-cli.c:708 msgid "Display status information about available AppStream metadata." msgstr "Tampilkan informasi status tentang metadata AppStream yang tersedia." @@ -312,11 +316,11 @@ msgstr "Jangan pakai akses jaringan." #. TRANSLATORS: ascli flag description for: --no-color -#: tools/appstream-cli.c:657 +#: tools/appstream-cli.c:750 msgid "Don't show colored output." msgstr "Jangan tampilkan keluaran berwarna." -#: tools/appstream-cli.c:607 +#: tools/appstream-cli.c:699 msgid "Dump raw XML metadata for a component matching the ID." msgstr "Curahkan metadata XML mentah bagi suatu komponen yang cocok ID-nya." @@ -433,11 +437,11 @@ msgid "Games" msgstr "Permainan" -#: tools/appstream-cli.c:603 +#: tools/appstream-cli.c:695 msgid "Get components which provide the given item." msgstr "Dapatkan komponen yang menyediakan butir yang diberikan." -#: tools/appstream-cli.c:602 +#: tools/appstream-cli.c:694 msgid "Get information about a component by its ID." msgstr "Dapatkan informasi tentang suatu komponen berdasarkan ID-nya." @@ -472,11 +476,11 @@ msgid "Input Sources" msgstr "Sumber Masukan" -#: tools/appstream-cli.c:617 +#: tools/appstream-cli.c:709 msgid "Install a metadata file into the right location." msgstr "Pasang suatu berkas metadata ke lokasi yang benar." -#: tools/appstream-cli.c:613 +#: tools/appstream-cli.c:705 msgid "Install software matching the component-ID." msgstr "Pasang perangkat lunak dengan component-ID yang cocok." @@ -644,11 +648,11 @@ msgid "Python 3" msgstr "Python 3" -#: tools/appstream-cli.c:608 +#: tools/appstream-cli.c:700 msgid "Rebuild the component metadata cache." msgstr "Bangun ulang singgahan metadata komponen." -#: tools/appstream-cli.c:614 +#: tools/appstream-cli.c:706 msgid "Remove software matching the component-ID." msgstr "Buang perangkat lunak dengan component-ID yang cocok." @@ -662,7 +666,7 @@ msgid "Role Playing" msgstr "Bermain Peran" -#: tools/appstream-cli.c:185 tools/appstream-cli.c:675 +#: tools/appstream-cli.c:185 tools/appstream-cli.c:768 #, c-format msgid "Run '%s --help' to see a full list of available command line options." msgstr "" @@ -693,7 +697,7 @@ msgid "Science" msgstr "Sains" -#: tools/appstream-cli.c:601 +#: tools/appstream-cli.c:693 msgid "Search the component database." msgstr "Cari basis data komponen." @@ -703,12 +707,12 @@ msgstr "Keamanan" #. TRANSLATORS: ascli flag description for: --verbose -#: tools/appstream-cli.c:652 +#: tools/appstream-cli.c:745 msgid "Show extra debugging information." msgstr "Tampilkan informasi debug ekstra." #. TRANSLATORS: ascli flag description for: --version -#: tools/appstream-cli.c:646 +#: tools/appstream-cli.c:739 msgid "Show the program version." msgstr "Tampilkan versi program." @@ -723,7 +727,7 @@ msgstr "Strategi" #. these are commands we can use with appstreamcli -#: tools/appstream-cli.c:599 +#: tools/appstream-cli.c:691 msgid "Subcommands:" msgstr "Subperintah:" @@ -767,7 +771,7 @@ "rinci untuk informasi lebih lanjut." #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand, a bullet-pointed list of types follows -#: tools/appstream-cli.c:565 +#: tools/appstream-cli.c:657 #, c-format msgid "The TYPE must be a valid component-type, such as: %s" msgstr "TIPE mesti berupa suatu tipe komponen yang valid, seperti misalnya: %s" @@ -782,7 +786,7 @@ "mungkin adalah:" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand -#: tools/appstream-cli.c:562 +#: tools/appstream-cli.c:654 msgid "" "This command takes optional TYPE and FILE positional arguments, FILE being a " "file to write to (or \"-\" for standard output)." @@ -802,6 +806,14 @@ "untuk misalnya mengkueri perangkat lunak yang menyediakan MIME-type tertentu " "dan memasangnya dengan identifier komponen perangkat lunaknya." +#: tools/appstream-cli.c:622 +msgid "" +"Too many parameters: Need two version numbers or version numbers and a " +"comparison operator." +msgstr "" +"Terlalu banyak parameter: Membutuhkan dua nomor versi atau nomor-nomor versi " +"dan sebuah operator perbandingan." + #: tools/ascli-actions-mdata.c:541 #, c-format msgid "Unable to build the template metainfo file: %s" @@ -849,13 +861,20 @@ msgstr "Tidak bisa menulis ke '%s', tidak bisa memasang berkas metainfo." #. TRANSLATORS: ascli has been run with unknown command. -#: tools/appstream-cli.c:750 +#: tools/appstream-cli.c:845 #, c-format msgid "Unknown command '%s'." msgstr "Perintah tak dikenal '%s'." +#. * TRANSLATORS: The user tried to compare version numbers, but the comparison operator (greater-then, equal, etc.) was invalid. +#: tools/appstream-cli.c:582 +#, c-format +msgid "Unknown compare relation '%s'. Valid values are:" +msgstr "" +"Hubungan perbandingan tidak dikenal '%s'. Nilai-nilai yang valid adalah:" + #. TRANSLATORS: ascli flag description for: --from-desktop (part of the new-template subcommand) -#: tools/appstream-cli.c:557 +#: tools/appstream-cli.c:649 msgid "" "Use the given .desktop file to fill in the basic values of the metainfo file." msgstr "" @@ -867,11 +886,11 @@ msgid "Utilities" msgstr "Utilitas" -#: tools/appstream-cli.c:610 +#: tools/appstream-cli.c:702 msgid "Validate AppStream XML files for issues." msgstr "Validasikan berkas XML AppStream apakah bermasalah." -#: tools/appstream-cli.c:611 +#: tools/appstream-cli.c:703 msgid "Validate an installed file-tree of an application for valid metadata." msgstr "Validasikan metadata pohon berkas terpasang dari suatu aplikasi." @@ -889,7 +908,7 @@ msgid "Validation was successful: %s" msgstr "Validasi sukses: %s" -#: tools/appstream-cli.c:605 +#: tools/appstream-cli.c:697 msgid "Value of the item that should be found." msgstr "Nilai dari butir yang mesti ditemukan." @@ -923,7 +942,7 @@ msgid "Word Processor" msgstr "Pengolah Kata" -#: tools/appstream-cli.c:623 +#: tools/appstream-cli.c:716 msgid "" "You can find information about subcommand-specific options by passing \"--" "help\" to the subcommand." @@ -944,8 +963,15 @@ "Anda perlu memberi tipe komponen perangkat lunak AppStream untuk " "menjangkitkan suatu templat. Nilai yang mungkin adalah:" +#: tools/appstream-cli.c:553 +msgid "" +"You need to provide at least two version numbers to compare as parameters." +msgstr "" +"Anda harus memberikan setidaknya dua nomor versi untuk dibandingkan sebagai " +"parameter." + #. TRANSLATORS: ascli has been run without command. -#: tools/appstream-cli.c:674 +#: tools/appstream-cli.c:767 msgid "You need to specify a command." msgstr "Anda perlu menyatakan suatu perintah." diff -Nru appstream-0.12.0/po/it.po appstream-0.12.2/po/it.po --- appstream-0.12.0/po/it.po 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/po/it.po 2018-08-04 07:39:44.000000000 +0000 @@ -7,8 +7,8 @@ msgstr "" "Project-Id-Version: AppStream\n" "Report-Msgid-Bugs-To: appstream@lists.freedesktop.org\n" -"POT-Creation-Date: 2018-04-04 17:28+0200\n" -"PO-Revision-Date: 2018-03-29 06:53+0000\n" +"POT-Creation-Date: 2018-06-10 15:36+0200\n" +"PO-Revision-Date: 2018-06-11 06:33+0000\n" "Last-Translator: Milo Casagrande \n" "Language-Team: Italian \n" @@ -17,7 +17,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.20-dev\n" +"X-Generator: Weblate 3.0.1\n" #: tools/appstream-cli.c:146 #, c-format @@ -50,7 +50,7 @@ msgid "Also show pedantic hints." msgstr "Stampa suggerimenti prolissi" -#: tools/appstream-cli.c:604 +#: tools/appstream-cli.c:696 msgid "An item type (e.g. lib, bin, python3, …)" msgstr "Un tipo di elemento (per esempio lib, bin, python3, …)" @@ -63,7 +63,7 @@ msgstr "CLI AppStream" #. TRANSLATORS: Output if appstreamcli --version is run and the CLI and libappstream versions differ. -#: tools/appstream-cli.c:696 +#: tools/appstream-cli.c:789 #, c-format msgid "" "AppStream CLI tool version: %s\n" @@ -99,7 +99,7 @@ #. TRANSLATORS: This is the header to the --help menu for subcommands #. TRANSLATORS: This is the header to the --help menu -#: tools/appstream-cli.c:143 tools/appstream-cli.c:597 +#: tools/appstream-cli.c:143 tools/appstream-cli.c:689 msgid "AppStream command-line interface" msgstr "Interfaccia a riga di comando AppStream" @@ -119,7 +119,7 @@ "degli errori: %s" #. TRANSLATORS: Output if appstreamcli --version is executed. -#: tools/appstream-cli.c:693 +#: tools/appstream-cli.c:786 #, c-format msgid "AppStream version: %s" msgstr "Versione AppStream: %s" @@ -225,6 +225,10 @@ msgid "Communication & News" msgstr "Comunicazione e notizie" +#: tools/appstream-cli.c:712 +msgid "Compare two version numbers." +msgstr "Confronta due numeri di versione" + #: src/as-provided.c:167 msgid "Component" msgstr "Componente" @@ -240,7 +244,7 @@ msgstr "Obbligatorio per" #. TRANSLATORS: "convert" command in ascli. "Collection XML" is a term describing a specific type of AppStream XML data. -#: tools/appstream-cli.c:619 +#: tools/appstream-cli.c:711 msgid "Convert collection XML to YAML or vice versa." msgstr "Converte la collezione XML in YAML o vice versa" @@ -250,7 +254,7 @@ msgid "Could not find component providing '%s::%s'." msgstr "Impossibile trovare un componente che fornisca «%s::%s»." -#: tools/appstream-cli.c:620 +#: tools/appstream-cli.c:713 msgid "" "Create a template for a metainfo file (to be filled out by the upstream " "project)." @@ -301,7 +305,7 @@ msgid "Developer Tools" msgstr "Strumenti di sviluppo" -#: tools/appstream-cli.c:616 +#: tools/appstream-cli.c:708 msgid "Display status information about available AppStream metadata." msgstr "" "Visualizza informazioni di stato riguardo ai metadati AppStream installati." @@ -317,11 +321,11 @@ msgstr "Non usa l'accesso alla rete" #. TRANSLATORS: ascli flag description for: --no-color -#: tools/appstream-cli.c:657 +#: tools/appstream-cli.c:750 msgid "Don't show colored output." msgstr "Non mostra output colorato" -#: tools/appstream-cli.c:607 +#: tools/appstream-cli.c:699 msgid "Dump raw XML metadata for a component matching the ID." msgstr "" "Esegue il dump dei metadati XML per un componente che corrisponde all'ID" @@ -439,11 +443,11 @@ msgid "Games" msgstr "Giochi" -#: tools/appstream-cli.c:603 +#: tools/appstream-cli.c:695 msgid "Get components which provide the given item." msgstr "Ottiene i componenti che forniscono l'oggetto dato" -#: tools/appstream-cli.c:602 +#: tools/appstream-cli.c:694 msgid "Get information about a component by its ID." msgstr "Ottiene informazioni su un componente tramite il suo ID" @@ -478,11 +482,11 @@ msgid "Input Sources" msgstr "Sorgenti d'input" -#: tools/appstream-cli.c:617 +#: tools/appstream-cli.c:709 msgid "Install a metadata file into the right location." msgstr "Installa un file metadati nella corretta posizione" -#: tools/appstream-cli.c:613 +#: tools/appstream-cli.c:705 msgid "Install software matching the component-ID." msgstr "Installa software che corrisponde all'ID del componente" @@ -648,11 +652,11 @@ msgid "Python 3" msgstr "Python 3" -#: tools/appstream-cli.c:608 +#: tools/appstream-cli.c:700 msgid "Rebuild the component metadata cache." msgstr "Rigenera la cache dei metadati del componente." -#: tools/appstream-cli.c:614 +#: tools/appstream-cli.c:706 msgid "Remove software matching the component-ID." msgstr "Rimuove software tramite l'ID del componente" @@ -666,7 +670,7 @@ msgid "Role Playing" msgstr "Di ruolo" -#: tools/appstream-cli.c:185 tools/appstream-cli.c:675 +#: tools/appstream-cli.c:185 tools/appstream-cli.c:768 #, c-format msgid "Run '%s --help' to see a full list of available command line options." msgstr "" @@ -695,7 +699,7 @@ msgid "Science" msgstr "Scienze" -#: tools/appstream-cli.c:601 +#: tools/appstream-cli.c:693 msgid "Search the component database." msgstr "Cerca nel database dei componenti" @@ -705,12 +709,12 @@ msgstr "Sicurezza" #. TRANSLATORS: ascli flag description for: --verbose -#: tools/appstream-cli.c:652 +#: tools/appstream-cli.c:745 msgid "Show extra debugging information." msgstr "Mostra informazioni aggiuntive di debug" #. TRANSLATORS: ascli flag description for: --version -#: tools/appstream-cli.c:646 +#: tools/appstream-cli.c:739 msgid "Show the program version." msgstr "Mostra la versione del programma" @@ -725,7 +729,7 @@ msgstr "Strategia" #. these are commands we can use with appstreamcli -#: tools/appstream-cli.c:599 +#: tools/appstream-cli.c:691 msgid "Subcommands:" msgstr "Sotto-comandi:" @@ -769,7 +773,7 @@ "informazioni fare riferimento al registro dei messaggi." #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand, a bullet-pointed list of types follows -#: tools/appstream-cli.c:565 +#: tools/appstream-cli.c:657 #, c-format msgid "The TYPE must be a valid component-type, such as: %s" msgstr "TIPO deve essere un tipo di componente valido, come %s" @@ -784,7 +788,7 @@ "sono:" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand -#: tools/appstream-cli.c:562 +#: tools/appstream-cli.c:654 msgid "" "This command takes optional TYPE and FILE positional arguments, FILE being a " "file to write to (or \"-\" for standard output)." @@ -805,6 +809,14 @@ "fornisce uno specifico tipo di MIME e installarlo attraverso il suo " "identificativo." +#: tools/appstream-cli.c:622 +msgid "" +"Too many parameters: Need two version numbers or version numbers and a " +"comparison operator." +msgstr "" +"Troppi parametri: necessari due numeri di versione o un numero di versione e " +"un operatore di confronto." + #: tools/ascli-actions-mdata.c:541 #, c-format msgid "Unable to build the template metainfo file: %s" @@ -853,13 +865,19 @@ "Impossibile scrivere su \"%s\", impossibile installare il file metainfo." #. TRANSLATORS: ascli has been run with unknown command. -#: tools/appstream-cli.c:750 +#: tools/appstream-cli.c:845 #, c-format msgid "Unknown command '%s'." msgstr "Comando \"%s\" sconosciuto." +#. * TRANSLATORS: The user tried to compare version numbers, but the comparison operator (greater-then, equal, etc.) was invalid. +#: tools/appstream-cli.c:582 +#, c-format +msgid "Unknown compare relation '%s'. Valid values are:" +msgstr "Operazione di comparazione \"%s\" non riconosciuta. Valori validi sono:" + #. TRANSLATORS: ascli flag description for: --from-desktop (part of the new-template subcommand) -#: tools/appstream-cli.c:557 +#: tools/appstream-cli.c:649 msgid "" "Use the given .desktop file to fill in the basic values of the metainfo file." msgstr "" @@ -870,11 +888,11 @@ msgid "Utilities" msgstr "Strumenti di utilità" -#: tools/appstream-cli.c:610 +#: tools/appstream-cli.c:702 msgid "Validate AppStream XML files for issues." msgstr "Esegue la validazione dei file XML AppStream" -#: tools/appstream-cli.c:611 +#: tools/appstream-cli.c:703 msgid "Validate an installed file-tree of an application for valid metadata." msgstr "" "Esegue la validazione di un file di un'applicazione installata per metadati " @@ -894,7 +912,7 @@ msgid "Validation was successful: %s" msgstr "Validazione eseguita con successo: %s" -#: tools/appstream-cli.c:605 +#: tools/appstream-cli.c:697 msgid "Value of the item that should be found." msgstr "Valore dell'elemento da trovare." @@ -928,7 +946,7 @@ msgid "Word Processor" msgstr "Editor di testi" -#: tools/appstream-cli.c:623 +#: tools/appstream-cli.c:716 msgid "" "You can find information about subcommand-specific options by passing \"--" "help\" to the subcommand." @@ -951,8 +969,15 @@ "È necessario fornire un tipo di componente software AppStream per generare " "un modello. Possibili valori sono:" +#: tools/appstream-cli.c:553 +msgid "" +"You need to provide at least two version numbers to compare as parameters." +msgstr "" +"È necessario fornire almeno due numeri di versione da comparare come " +"argomenti." + #. TRANSLATORS: ascli has been run without command. -#: tools/appstream-cli.c:674 +#: tools/appstream-cli.c:767 msgid "You need to specify a command." msgstr "È necessario specificare un comando." diff -Nru appstream-0.12.0/po/ja.po appstream-0.12.2/po/ja.po --- appstream-0.12.0/po/ja.po 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/po/ja.po 2018-08-04 07:39:44.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: AppStream\n" "Report-Msgid-Bugs-To: appstream@lists.freedesktop.org\n" -"POT-Creation-Date: 2018-04-04 17:28+0200\n" +"POT-Creation-Date: 2018-06-10 15:36+0200\n" "PO-Revision-Date: 2016-08-15 18:48+0000\n" "Last-Translator: Matthias Klumpp \n" "Language-Team: Japanese (http://www.transifex.com/freedesktop/appstream/" @@ -50,7 +50,7 @@ msgid "Also show pedantic hints." msgstr "" -#: tools/appstream-cli.c:604 +#: tools/appstream-cli.c:696 msgid "An item type (e.g. lib, bin, python3, …)" msgstr "" @@ -63,7 +63,7 @@ msgstr "" #. TRANSLATORS: Output if appstreamcli --version is run and the CLI and libappstream versions differ. -#: tools/appstream-cli.c:696 +#: tools/appstream-cli.c:789 #, c-format msgid "" "AppStream CLI tool version: %s\n" @@ -95,7 +95,7 @@ #. TRANSLATORS: This is the header to the --help menu for subcommands #. TRANSLATORS: This is the header to the --help menu -#: tools/appstream-cli.c:143 tools/appstream-cli.c:597 +#: tools/appstream-cli.c:143 tools/appstream-cli.c:689 msgid "AppStream command-line interface" msgstr "" @@ -111,7 +111,7 @@ msgstr "" #. TRANSLATORS: Output if appstreamcli --version is executed. -#: tools/appstream-cli.c:693 +#: tools/appstream-cli.c:786 #, c-format msgid "AppStream version: %s" msgstr "" @@ -215,6 +215,10 @@ msgid "Communication & News" msgstr "" +#: tools/appstream-cli.c:712 +msgid "Compare two version numbers." +msgstr "" + #: src/as-provided.c:167 msgid "Component" msgstr "" @@ -230,7 +234,7 @@ msgstr "" #. TRANSLATORS: "convert" command in ascli. "Collection XML" is a term describing a specific type of AppStream XML data. -#: tools/appstream-cli.c:619 +#: tools/appstream-cli.c:711 msgid "Convert collection XML to YAML or vice versa." msgstr "" @@ -240,7 +244,7 @@ msgid "Could not find component providing '%s::%s'." msgstr "" -#: tools/appstream-cli.c:620 +#: tools/appstream-cli.c:713 msgid "" "Create a template for a metainfo file (to be filled out by the upstream " "project)." @@ -287,7 +291,7 @@ msgid "Developer Tools" msgstr "" -#: tools/appstream-cli.c:616 +#: tools/appstream-cli.c:708 msgid "Display status information about available AppStream metadata." msgstr "" @@ -302,11 +306,11 @@ msgstr "" #. TRANSLATORS: ascli flag description for: --no-color -#: tools/appstream-cli.c:657 +#: tools/appstream-cli.c:750 msgid "Don't show colored output." msgstr "" -#: tools/appstream-cli.c:607 +#: tools/appstream-cli.c:699 msgid "Dump raw XML metadata for a component matching the ID." msgstr "" @@ -423,11 +427,11 @@ msgid "Games" msgstr "" -#: tools/appstream-cli.c:603 +#: tools/appstream-cli.c:695 msgid "Get components which provide the given item." msgstr "" -#: tools/appstream-cli.c:602 +#: tools/appstream-cli.c:694 msgid "Get information about a component by its ID." msgstr "" @@ -462,11 +466,11 @@ msgid "Input Sources" msgstr "" -#: tools/appstream-cli.c:617 +#: tools/appstream-cli.c:709 msgid "Install a metadata file into the right location." msgstr "" -#: tools/appstream-cli.c:613 +#: tools/appstream-cli.c:705 msgid "Install software matching the component-ID." msgstr "" @@ -630,11 +634,11 @@ msgid "Python 3" msgstr "" -#: tools/appstream-cli.c:608 +#: tools/appstream-cli.c:700 msgid "Rebuild the component metadata cache." msgstr "" -#: tools/appstream-cli.c:614 +#: tools/appstream-cli.c:706 msgid "Remove software matching the component-ID." msgstr "" @@ -648,7 +652,7 @@ msgid "Role Playing" msgstr "" -#: tools/appstream-cli.c:185 tools/appstream-cli.c:675 +#: tools/appstream-cli.c:185 tools/appstream-cli.c:768 #, c-format msgid "Run '%s --help' to see a full list of available command line options." msgstr "" @@ -674,7 +678,7 @@ msgid "Science" msgstr "" -#: tools/appstream-cli.c:601 +#: tools/appstream-cli.c:693 msgid "Search the component database." msgstr "" @@ -684,12 +688,12 @@ msgstr "" #. TRANSLATORS: ascli flag description for: --verbose -#: tools/appstream-cli.c:652 +#: tools/appstream-cli.c:745 msgid "Show extra debugging information." msgstr "" #. TRANSLATORS: ascli flag description for: --version -#: tools/appstream-cli.c:646 +#: tools/appstream-cli.c:739 msgid "Show the program version." msgstr "" @@ -704,7 +708,7 @@ msgstr "" #. these are commands we can use with appstreamcli -#: tools/appstream-cli.c:599 +#: tools/appstream-cli.c:691 msgid "Subcommands:" msgstr "" @@ -745,7 +749,7 @@ msgstr "" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand, a bullet-pointed list of types follows -#: tools/appstream-cli.c:565 +#: tools/appstream-cli.c:657 #, c-format msgid "The TYPE must be a valid component-type, such as: %s" msgstr "" @@ -758,7 +762,7 @@ msgstr "" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand -#: tools/appstream-cli.c:562 +#: tools/appstream-cli.c:654 msgid "" "This command takes optional TYPE and FILE positional arguments, FILE being a " "file to write to (or \"-\" for standard output)." @@ -772,6 +776,12 @@ "and installing it by its software component identifier." msgstr "" +#: tools/appstream-cli.c:622 +msgid "" +"Too many parameters: Need two version numbers or version numbers and a " +"comparison operator." +msgstr "" + #: tools/ascli-actions-mdata.c:541 #, c-format msgid "Unable to build the template metainfo file: %s" @@ -817,13 +827,19 @@ msgstr "" #. TRANSLATORS: ascli has been run with unknown command. -#: tools/appstream-cli.c:750 +#: tools/appstream-cli.c:845 #, c-format msgid "Unknown command '%s'." msgstr "" +#. * TRANSLATORS: The user tried to compare version numbers, but the comparison operator (greater-then, equal, etc.) was invalid. +#: tools/appstream-cli.c:582 +#, c-format +msgid "Unknown compare relation '%s'. Valid values are:" +msgstr "" + #. TRANSLATORS: ascli flag description for: --from-desktop (part of the new-template subcommand) -#: tools/appstream-cli.c:557 +#: tools/appstream-cli.c:649 msgid "" "Use the given .desktop file to fill in the basic values of the metainfo file." msgstr "" @@ -833,11 +849,11 @@ msgid "Utilities" msgstr "" -#: tools/appstream-cli.c:610 +#: tools/appstream-cli.c:702 msgid "Validate AppStream XML files for issues." msgstr "" -#: tools/appstream-cli.c:611 +#: tools/appstream-cli.c:703 msgid "Validate an installed file-tree of an application for valid metadata." msgstr "" @@ -855,7 +871,7 @@ msgid "Validation was successful: %s" msgstr "" -#: tools/appstream-cli.c:605 +#: tools/appstream-cli.c:697 msgid "Value of the item that should be found." msgstr "" @@ -889,7 +905,7 @@ msgid "Word Processor" msgstr "" -#: tools/appstream-cli.c:623 +#: tools/appstream-cli.c:716 msgid "" "You can find information about subcommand-specific options by passing \"--" "help\" to the subcommand." @@ -906,8 +922,13 @@ "template. Possible values are:" msgstr "" +#: tools/appstream-cli.c:553 +msgid "" +"You need to provide at least two version numbers to compare as parameters." +msgstr "" + #. TRANSLATORS: ascli has been run without command. -#: tools/appstream-cli.c:674 +#: tools/appstream-cli.c:767 msgid "You need to specify a command." msgstr "コマンドを指定する必要があります。" diff -Nru appstream-0.12.0/po/ko.po appstream-0.12.2/po/ko.po --- appstream-0.12.0/po/ko.po 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/po/ko.po 2018-08-04 07:39:44.000000000 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: AppStream\n" "Report-Msgid-Bugs-To: appstream@lists.freedesktop.org\n" -"POT-Creation-Date: 2018-04-04 17:28+0200\n" +"POT-Creation-Date: 2018-06-10 15:36+0200\n" "PO-Revision-Date: 2018-02-05 04:37+0000\n" "Last-Translator: Jung-Kyu Park \n" "Language-Team: Korean \n" "Language-Team: Lithuanian \n" @@ -19,7 +19,7 @@ "Plural-Forms: nplurals=3; plural=(n % 10 == 1 && (n % 100 < 11 || n % 100 > " "19)) ? 0 : ((n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19)) ? " "1 : 2);\n" -"X-Generator: Weblate 2.20-dev\n" +"X-Generator: Weblate 3.1-dev\n" #: tools/appstream-cli.c:146 #, c-format @@ -52,7 +52,7 @@ msgid "Also show pedantic hints." msgstr "Taip pat rodyti pedantiškus patarimus." -#: tools/appstream-cli.c:604 +#: tools/appstream-cli.c:696 msgid "An item type (e.g. lib, bin, python3, …)" msgstr "Elemento tipas (pvz., lib, bin, python3, …)" @@ -65,7 +65,7 @@ msgstr "AppStream komandų eilutė" #. TRANSLATORS: Output if appstreamcli --version is run and the CLI and libappstream versions differ. -#: tools/appstream-cli.c:696 +#: tools/appstream-cli.c:789 #, c-format msgid "" "AppStream CLI tool version: %s\n" @@ -101,7 +101,7 @@ #. TRANSLATORS: This is the header to the --help menu for subcommands #. TRANSLATORS: This is the header to the --help menu -#: tools/appstream-cli.c:143 tools/appstream-cli.c:597 +#: tools/appstream-cli.c:143 tools/appstream-cli.c:689 msgid "AppStream command-line interface" msgstr "AppStream komandų eilutės sąsaja" @@ -120,7 +120,7 @@ "AppStream sistemos podėlis buvo atnaujintas, tačiau buvo rastos problemos: %s" #. TRANSLATORS: Output if appstreamcli --version is executed. -#: tools/appstream-cli.c:693 +#: tools/appstream-cli.c:786 #, c-format msgid "AppStream version: %s" msgstr "AppStream versija: %s" @@ -153,7 +153,7 @@ #: src/as-category.c:68 msgctxt "Category of AudioVideo" msgid "Audio Creation & Editing" -msgstr "" +msgstr "Garso kūrimas ir redagavimas" #: src/as-provided.c:147 msgid "Binaries" @@ -224,7 +224,11 @@ #. TRANSLATORS: this is the menu spec main category for Communication #: src/as-category.c:326 msgid "Communication & News" -msgstr "" +msgstr "Komunikacija ir naujienos" + +#: tools/appstream-cli.c:712 +msgid "Compare two version numbers." +msgstr "Palyginti dviejų versijų numerius." #: src/as-provided.c:167 msgid "Component" @@ -238,10 +242,10 @@ #: tools/ascli-utils.c:364 msgid "Compulsory for" -msgstr "" +msgstr "Privaloma šiems" #. TRANSLATORS: "convert" command in ascli. "Collection XML" is a term describing a specific type of AppStream XML data. -#: tools/appstream-cli.c:619 +#: tools/appstream-cli.c:711 msgid "Convert collection XML to YAML or vice versa." msgstr "Konvertuoti kolekciją iš XML į YAML arba atvirkščiai." @@ -251,11 +255,12 @@ msgid "Could not find component providing '%s::%s'." msgstr "Nepavyko rasti komponento, pateikiančio \"%s::%s\"." -#: tools/appstream-cli.c:620 +#: tools/appstream-cli.c:713 msgid "" "Create a template for a metainfo file (to be filled out by the upstream " "project)." msgstr "" +"Sukurti metainformacijos failo šabloną (kurį užpildo pagrindinis projektas)." #: src/as-provided.c:161 msgid "DBus Session Services" @@ -298,9 +303,9 @@ #. TRANSLATORS: this is the menu spec main category for Development #: src/as-category.c:305 msgid "Developer Tools" -msgstr "" +msgstr "Kūrėjo įrankiai" -#: tools/appstream-cli.c:616 +#: tools/appstream-cli.c:708 msgid "Display status information about available AppStream metadata." msgstr "Rodyti būsenos informaciją apie prieinamus AppStream metaduomenis." @@ -315,13 +320,13 @@ msgstr "Nenaudoti tinklo prieigą." #. TRANSLATORS: ascli flag description for: --no-color -#: tools/appstream-cli.c:657 +#: tools/appstream-cli.c:750 msgid "Don't show colored output." msgstr "Nerodyti spalvotos išvesties." -#: tools/appstream-cli.c:607 +#: tools/appstream-cli.c:699 msgid "Dump raw XML metadata for a component matching the ID." -msgstr "" +msgstr "Iškloti neapdorotus XML metaduomenis komponentui su atitinkamu ID." #. TRANSLATORS: this is the menu spec main category for Education #: src/as-category.c:308 @@ -409,7 +414,7 @@ #: src/as-provided.c:165 msgid "Flashed Firmware" -msgstr "" +msgstr "Įrašyta programinė aparatinė įranga" #: src/as-provided.c:151 msgid "Fonts" @@ -424,7 +429,7 @@ #: tools/ascli-actions-misc.c:136 #, c-format msgid "Found %i components in legacy paths." -msgstr "" +msgstr "Rasta %i komponentų liekamuosiuose keliuose." #: tools/ascli-actions-misc.c:121 #, c-format @@ -436,11 +441,11 @@ msgid "Games" msgstr "Žaidimai" -#: tools/appstream-cli.c:603 +#: tools/appstream-cli.c:695 msgid "Get components which provide the given item." msgstr "Gauti komponentus, kurie pateikia nurodytą elementą." -#: tools/appstream-cli.c:602 +#: tools/appstream-cli.c:694 msgid "Get information about a component by its ID." msgstr "Gauti informaciją apie komponentą pagal jo ID." @@ -456,7 +461,7 @@ #: src/as-category.c:89 msgctxt "Category of Development" msgid "IDEs" -msgstr "" +msgstr "Integruotos kūrimo aplinkos (IDE)" #: tools/ascli-utils.c:288 msgid "Icon" @@ -475,11 +480,11 @@ msgid "Input Sources" msgstr "Įvesties šaltiniai" -#: tools/appstream-cli.c:617 +#: tools/appstream-cli.c:709 msgid "Install a metadata file into the right location." msgstr "Įdiegti metaduomenų failą į tinkamą vietą." -#: tools/appstream-cli.c:613 +#: tools/appstream-cli.c:705 msgid "Install software matching the component-ID." msgstr "Įdiegti komponento ID atitinkančią programinę įrangą." @@ -523,7 +528,6 @@ msgstr "Logika" #: src/as-provided.c:149 -#, fuzzy msgid "MIME types" msgstr "MIME tipai" @@ -568,7 +572,7 @@ #: src/as-provided.c:153 msgid "Modaliases" -msgstr "" +msgstr "Modulių alternatyvieji pavadinimai (Modalias)" #: src/as-category.c:74 msgctxt "Category of AudioVideo" @@ -647,11 +651,11 @@ msgid "Python 3" msgstr "Python 3" -#: tools/appstream-cli.c:608 +#: tools/appstream-cli.c:700 msgid "Rebuild the component metadata cache." msgstr "Iš naujo sukurti komponentų metaduomenų podėlį." -#: tools/appstream-cli.c:614 +#: tools/appstream-cli.c:706 msgid "Remove software matching the component-ID." msgstr "Šalinti komponento ID atitinkančią programinę įrangą." @@ -665,7 +669,7 @@ msgid "Role Playing" msgstr "Vaidmenimis" -#: tools/appstream-cli.c:185 tools/appstream-cli.c:675 +#: tools/appstream-cli.c:185 tools/appstream-cli.c:768 #, c-format msgid "Run '%s --help' to see a full list of available command line options." msgstr "" @@ -684,7 +688,7 @@ #: src/as-provided.c:163 msgid "Runtime Firmware" -msgstr "" +msgstr "Vykdymo programinė aparatinė įranga" #: src/as-category.c:174 msgctxt "Category of Graphics" @@ -696,7 +700,7 @@ msgid "Science" msgstr "Mokslas" -#: tools/appstream-cli.c:601 +#: tools/appstream-cli.c:693 msgid "Search the component database." msgstr "Ieškoti komponentų duomenų bazėje." @@ -706,12 +710,12 @@ msgstr "Saugumas" #. TRANSLATORS: ascli flag description for: --verbose -#: tools/appstream-cli.c:652 +#: tools/appstream-cli.c:745 msgid "Show extra debugging information." msgstr "Rodyti papildomą derinimo informaciją." #. TRANSLATORS: ascli flag description for: --version -#: tools/appstream-cli.c:646 +#: tools/appstream-cli.c:739 msgid "Show the program version." msgstr "Rodyti programos versiją." @@ -726,7 +730,7 @@ msgstr "Strategija" #. these are commands we can use with appstreamcli -#: tools/appstream-cli.c:599 +#: tools/appstream-cli.c:691 msgid "Subcommands:" msgstr "Pokomandžiai:" @@ -770,10 +774,10 @@ "informacijai kreipkitės į išsamų žurnalą." #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand, a bullet-pointed list of types follows -#: tools/appstream-cli.c:565 +#: tools/appstream-cli.c:657 #, c-format msgid "The TYPE must be a valid component-type, such as: %s" -msgstr "" +msgstr "Tipas (TYPE) privalo būti teisingas komponento tipas, toks kaip: %s" #: tools/ascli-actions-mdata.c:446 #, c-format @@ -785,11 +789,13 @@ "specifikacijoje. Galimos reikšmės yra:" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand -#: tools/appstream-cli.c:562 +#: tools/appstream-cli.c:654 msgid "" "This command takes optional TYPE and FILE positional arguments, FILE being a " "file to write to (or \"-\" for standard output)." msgstr "" +"Ši komanda priima nebūtinus TIPO (TYPE) ir FAILO (FILE) argumentus, FAILUI " +"(FILE) būnant failu į kurį rašoma (arba \"-\" standartinei išvesčiai)." #: data/org.freedesktop.appstream.cli.metainfo.xml:15 msgid "" @@ -798,6 +804,19 @@ "pool, for example to query for software that provides a specific MIME-type, " "and installing it by its software component identifier." msgstr "" +"Šis įrankis leidžia skaityti, rašyti, patikrinti ir transformuoti AppStream " +"XML ar YAML metaduomenis. Jis taip pat suteikia prieigą prie metaduomenų " +"telkinio, pavyzdžiui, tam, kad užklausti programinę įrangą, kurį teikia tam " +"tikrą MIME tipą, ir leidžia įdiegti ją pagal jos programinės įrangos " +"komponento identifikatorių." + +#: tools/appstream-cli.c:622 +msgid "" +"Too many parameters: Need two version numbers or version numbers and a " +"comparison operator." +msgstr "" +"Per daug parametrų: Reikia dviejų versijos numerių arba versijos numerio ir " +"palyginimo operatoriaus." #: tools/ascli-actions-mdata.c:541 #, c-format @@ -846,13 +865,19 @@ msgstr "Nepavyko įrašyti į \"%s\", nepavyksta įdiegti metainformacijos failo." #. TRANSLATORS: ascli has been run with unknown command. -#: tools/appstream-cli.c:750 +#: tools/appstream-cli.c:845 #, c-format msgid "Unknown command '%s'." msgstr "Nežinoma komanda \"%s\"." +#. * TRANSLATORS: The user tried to compare version numbers, but the comparison operator (greater-then, equal, etc.) was invalid. +#: tools/appstream-cli.c:582 +#, c-format +msgid "Unknown compare relation '%s'. Valid values are:" +msgstr "Nežinomas palyginimo santykis \"%s\". Teisingos reikšmės yra:" + #. TRANSLATORS: ascli flag description for: --from-desktop (part of the new-template subcommand) -#: tools/appstream-cli.c:557 +#: tools/appstream-cli.c:649 msgid "" "Use the given .desktop file to fill in the basic values of the metainfo file." msgstr "" @@ -864,13 +889,13 @@ msgid "Utilities" msgstr "Paslaugų programos" -#: tools/appstream-cli.c:610 +#: tools/appstream-cli.c:702 msgid "Validate AppStream XML files for issues." msgstr "Patikrinti ar AppStream XML failuose nėra problemų." -#: tools/appstream-cli.c:611 +#: tools/appstream-cli.c:703 msgid "Validate an installed file-tree of an application for valid metadata." -msgstr "" +msgstr "Patikrinti įdiegto programos failų medžio metaduomenų teisingumą." #: tools/ascli-actions-validate.c:255 tools/ascli-actions-validate.c:316 #, c-format @@ -886,7 +911,7 @@ msgid "Validation was successful: %s" msgstr "Patikrinimas buvo sėkmingas: %s" -#: tools/appstream-cli.c:605 +#: tools/appstream-cli.c:697 msgid "Value of the item that should be found." msgstr "Elemento, kuris turėtų būti rastas, reikšmė." @@ -920,11 +945,13 @@ msgid "Word Processor" msgstr "Tekstų rengyklė" -#: tools/appstream-cli.c:623 +#: tools/appstream-cli.c:716 msgid "" "You can find information about subcommand-specific options by passing \"--" "help\" to the subcommand." msgstr "" +"Galite rasti informaciją apie tam tikram pakomandžiui specifinius " +"parametrus, perdavę pakomandžiui \"--help\" parametrą." #. TRANSLATORS: In ascli: The requested action needs higher permissions. #: tools/ascli-actions-mdata.c:70 @@ -936,9 +963,18 @@ "You need to give an AppStream software component type to generate a " "template. Possible values are:" msgstr "" +"Norėdami sukurti šabloną, turite pateikti AppStream programinės įrangos " +"komponento tipą. Galimos reikšmės yra:" + +#: tools/appstream-cli.c:553 +msgid "" +"You need to provide at least two version numbers to compare as parameters." +msgstr "" +"Norėdami palyginti, turite kaip parametrus pateikti bent du versijos " +"numerius." #. TRANSLATORS: ascli has been run without command. -#: tools/appstream-cli.c:674 +#: tools/appstream-cli.c:767 msgid "You need to specify a command." msgstr "Jūs turite nurodyti komandą." diff -Nru appstream-0.12.0/po/nb.po appstream-0.12.2/po/nb.po --- appstream-0.12.0/po/nb.po 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/po/nb.po 2018-08-04 07:39:44.000000000 +0000 @@ -6,8 +6,8 @@ msgstr "" "Project-Id-Version: appstream\n" "Report-Msgid-Bugs-To: appstream@lists.freedesktop.org\n" -"POT-Creation-Date: 2018-04-04 17:28+0200\n" -"PO-Revision-Date: 2018-03-29 06:03+0000\n" +"POT-Creation-Date: 2018-06-10 15:36+0200\n" +"PO-Revision-Date: 2018-06-10 17:06+0000\n" "Last-Translator: Allan Nordhøy \n" "Language-Team: Norwegian Bokmål \n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.20-dev\n" +"X-Generator: Weblate 3.0\n" #: tools/appstream-cli.c:146 #, c-format @@ -49,7 +49,7 @@ msgid "Also show pedantic hints." msgstr "Vis også pedantiske tips." -#: tools/appstream-cli.c:604 +#: tools/appstream-cli.c:696 msgid "An item type (e.g. lib, bin, python3, …)" msgstr "En elementtype (f.eks. lib, bin, python3, …)" @@ -62,7 +62,7 @@ msgstr "Kommandolinjegrensesnitt for AppStream" #. TRANSLATORS: Output if appstreamcli --version is run and the CLI and libappstream versions differ. -#: tools/appstream-cli.c:696 +#: tools/appstream-cli.c:789 #, c-format msgid "" "AppStream CLI tool version: %s\n" @@ -98,7 +98,7 @@ #. TRANSLATORS: This is the header to the --help menu for subcommands #. TRANSLATORS: This is the header to the --help menu -#: tools/appstream-cli.c:143 tools/appstream-cli.c:597 +#: tools/appstream-cli.c:143 tools/appstream-cli.c:689 msgid "AppStream command-line interface" msgstr "Kommandolinjegrensesnitt for AppStream" @@ -116,7 +116,7 @@ msgstr "AppStream-systemhurtiglager oppdatert, dog ikke uten problemer: %s" #. TRANSLATORS: Output if appstreamcli --version is executed. -#: tools/appstream-cli.c:693 +#: tools/appstream-cli.c:786 #, c-format msgid "AppStream version: %s" msgstr "AppStream-versjon: %s" @@ -222,6 +222,10 @@ msgid "Communication & News" msgstr "Kommunikasjon og nyheter" +#: tools/appstream-cli.c:712 +msgid "Compare two version numbers." +msgstr "Sammenlign to versjonsnummer." + #: src/as-provided.c:167 msgid "Component" msgstr "Komponent" @@ -237,7 +241,7 @@ msgstr "Obligatorisk for" #. TRANSLATORS: "convert" command in ascli. "Collection XML" is a term describing a specific type of AppStream XML data. -#: tools/appstream-cli.c:619 +#: tools/appstream-cli.c:711 msgid "Convert collection XML to YAML or vice versa." msgstr "Konverter XML-samling til YAML og vice versa." @@ -247,7 +251,7 @@ msgid "Could not find component providing '%s::%s'." msgstr "Kunne ikke finne komponenten som tilbyr \"%s::%s\"." -#: tools/appstream-cli.c:620 +#: tools/appstream-cli.c:713 msgid "" "Create a template for a metainfo file (to be filled out by the upstream " "project)." @@ -296,7 +300,7 @@ msgid "Developer Tools" msgstr "Utviklerverktøy" -#: tools/appstream-cli.c:616 +#: tools/appstream-cli.c:708 msgid "Display status information about available AppStream metadata." msgstr "Statusinformasjon om tilgjengelig AppStream-metadata." @@ -311,11 +315,11 @@ msgstr "Ikke bruk nettverkstilgang." #. TRANSLATORS: ascli flag description for: --no-color -#: tools/appstream-cli.c:657 +#: tools/appstream-cli.c:750 msgid "Don't show colored output." msgstr "Ikke vis fargelagt utdata." -#: tools/appstream-cli.c:607 +#: tools/appstream-cli.c:699 msgid "Dump raw XML metadata for a component matching the ID." msgstr "Dumpa rå XML-metadata for en komponent som samsvarer med ID-en." @@ -432,11 +436,11 @@ msgid "Games" msgstr "Spill" -#: tools/appstream-cli.c:603 +#: tools/appstream-cli.c:695 msgid "Get components which provide the given item." msgstr "Hent inn komponentene som tilbyr det gitte elementet." -#: tools/appstream-cli.c:602 +#: tools/appstream-cli.c:694 msgid "Get information about a component by its ID." msgstr "Hent informasjon om en komponent gitt av dens ID." @@ -471,11 +475,11 @@ msgid "Input Sources" msgstr "Inndatakilder" -#: tools/appstream-cli.c:617 +#: tools/appstream-cli.c:709 msgid "Install a metadata file into the right location." msgstr "Installer ei metadatafil på rett plass." -#: tools/appstream-cli.c:613 +#: tools/appstream-cli.c:705 msgid "Install software matching the component-ID." msgstr "Installer programvare som samsvarer med komponent-ID-en." @@ -641,11 +645,11 @@ msgid "Python 3" msgstr "Python 3" -#: tools/appstream-cli.c:608 +#: tools/appstream-cli.c:700 msgid "Rebuild the component metadata cache." msgstr "Bygg opp igjen komponent- og metadata -hurtiglager." -#: tools/appstream-cli.c:614 +#: tools/appstream-cli.c:706 msgid "Remove software matching the component-ID." msgstr "Fjern programvare som samsvarer med komponent-ID-en." @@ -659,7 +663,7 @@ msgid "Role Playing" msgstr "Rollespill" -#: tools/appstream-cli.c:185 tools/appstream-cli.c:675 +#: tools/appstream-cli.c:185 tools/appstream-cli.c:768 #, c-format msgid "Run '%s --help' to see a full list of available command line options." msgstr "" @@ -690,7 +694,7 @@ msgid "Science" msgstr "Vitenskap" -#: tools/appstream-cli.c:601 +#: tools/appstream-cli.c:693 msgid "Search the component database." msgstr "Søk i komponentdatabasen." @@ -700,12 +704,12 @@ msgstr "Sikkerhet" #. TRANSLATORS: ascli flag description for: --verbose -#: tools/appstream-cli.c:652 +#: tools/appstream-cli.c:745 msgid "Show extra debugging information." msgstr "Vis ekstra feilrettingsinformasjon." #. TRANSLATORS: ascli flag description for: --version -#: tools/appstream-cli.c:646 +#: tools/appstream-cli.c:739 msgid "Show the program version." msgstr "Vis programversjonen." @@ -720,7 +724,7 @@ msgstr "Strategi" #. these are commands we can use with appstreamcli -#: tools/appstream-cli.c:599 +#: tools/appstream-cli.c:691 msgid "Subcommands:" msgstr "Underkommandoer:" @@ -764,7 +768,7 @@ "mer informasjon." #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand, a bullet-pointed list of types follows -#: tools/appstream-cli.c:565 +#: tools/appstream-cli.c:657 #, c-format msgid "The TYPE must be a valid component-type, such as: %s" msgstr "TYPE må være en gyldig komponenttype, som %s" @@ -779,7 +783,7 @@ "verdier er:" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand -#: tools/appstream-cli.c:562 +#: tools/appstream-cli.c:654 msgid "" "This command takes optional TYPE and FILE positional arguments, FILE being a " "file to write to (or \"-\" for standard output)." @@ -800,6 +804,15 @@ "spesifikk MIME-type, og installasjon av dens " "programvarekomponentidentifikator." +#: tools/appstream-cli.c:622 +#, fuzzy +msgid "" +"Too many parameters: Need two version numbers or version numbers and a " +"comparison operator." +msgstr "" +"For mange parametere: Trenger to versjonsnummer eller versjonsnummer og " +"sammenligningsoperatør." + #: tools/ascli-actions-mdata.c:541 #, c-format msgid "Unable to build the template metainfo file: %s" @@ -847,13 +860,19 @@ msgstr "Klarte ikke å skrive til \"%s\", kan ikke installere metainfo-fil." #. TRANSLATORS: ascli has been run with unknown command. -#: tools/appstream-cli.c:750 +#: tools/appstream-cli.c:845 #, c-format msgid "Unknown command '%s'." msgstr "Ukjent kommando \"%s\"." +#. * TRANSLATORS: The user tried to compare version numbers, but the comparison operator (greater-then, equal, etc.) was invalid. +#: tools/appstream-cli.c:582 +#, c-format +msgid "Unknown compare relation '%s'. Valid values are:" +msgstr "Ukjent sammenligningsrelasjon \"%s\". Gyldige verdier er:" + #. TRANSLATORS: ascli flag description for: --from-desktop (part of the new-template subcommand) -#: tools/appstream-cli.c:557 +#: tools/appstream-cli.c:649 msgid "" "Use the given .desktop file to fill in the basic values of the metainfo file." msgstr "" @@ -864,11 +883,11 @@ msgid "Utilities" msgstr "Verktøy" -#: tools/appstream-cli.c:610 +#: tools/appstream-cli.c:702 msgid "Validate AppStream XML files for issues." msgstr "Se gjennom AppStream-XML-filer for feil." -#: tools/appstream-cli.c:611 +#: tools/appstream-cli.c:703 msgid "Validate an installed file-tree of an application for valid metadata." msgstr "" "Se gjennom et filtre tilhørende et installert program for gyldigheten av " @@ -888,7 +907,7 @@ msgid "Validation was successful: %s" msgstr "Bekreftet: %s" -#: tools/appstream-cli.c:605 +#: tools/appstream-cli.c:697 msgid "Value of the item that should be found." msgstr "Verdien på elementet som skal finnes." @@ -922,7 +941,7 @@ msgid "Word Processor" msgstr "Tekstbehandler" -#: tools/appstream-cli.c:623 +#: tools/appstream-cli.c:716 msgid "" "You can find information about subcommand-specific options by passing \"--" "help\" to the subcommand." @@ -945,8 +964,13 @@ "Du må angi en AppStream-programvarekomponenttype for å opprette en mal. " "Mulige verdier er:" +#: tools/appstream-cli.c:553 +msgid "" +"You need to provide at least two version numbers to compare as parameters." +msgstr "Du må oppgi minst to versjonsnummer å sammenligne som parameter." + #. TRANSLATORS: ascli has been run without command. -#: tools/appstream-cli.c:674 +#: tools/appstream-cli.c:767 msgid "You need to specify a command." msgstr "Du må angi en kommando." diff -Nru appstream-0.12.0/po/nl.po appstream-0.12.2/po/nl.po --- appstream-0.12.0/po/nl.po 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/po/nl.po 2018-08-04 07:39:44.000000000 +0000 @@ -7,8 +7,8 @@ msgstr "" "Project-Id-Version: appstream\n" "Report-Msgid-Bugs-To: appstream@lists.freedesktop.org\n" -"POT-Creation-Date: 2018-04-04 17:28+0200\n" -"PO-Revision-Date: 2018-01-14 10:43+0000\n" +"POT-Creation-Date: 2018-06-10 15:36+0200\n" +"PO-Revision-Date: 2018-06-11 11:20+0000\n" "Last-Translator: Heimen Stoffels \n" "Language-Team: Dutch \n" @@ -17,7 +17,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.19-dev\n" +"X-Generator: Weblate 3.0.1\n" #: tools/appstream-cli.c:146 #, c-format @@ -50,7 +50,7 @@ msgid "Also show pedantic hints." msgstr "Ook pedante tips weergeven." -#: tools/appstream-cli.c:604 +#: tools/appstream-cli.c:696 msgid "An item type (e.g. lib, bin, python3, …)" msgstr "Een item-type (bijv. lib, bin, python3, ...)" @@ -63,7 +63,7 @@ msgstr "AppStream-CLI" #. TRANSLATORS: Output if appstreamcli --version is run and the CLI and libappstream versions differ. -#: tools/appstream-cli.c:696 +#: tools/appstream-cli.c:789 #, c-format msgid "" "AppStream CLI tool version: %s\n" @@ -99,7 +99,7 @@ #. TRANSLATORS: This is the header to the --help menu for subcommands #. TRANSLATORS: This is the header to the --help menu -#: tools/appstream-cli.c:143 tools/appstream-cli.c:597 +#: tools/appstream-cli.c:143 tools/appstream-cli.c:689 msgid "AppStream command-line interface" msgstr "AppStream opdrachtregel-interface" @@ -118,7 +118,7 @@ "De AppStream-systeemcache is bijgewerkt, maar er zijn problemen gevonden: %s" #. TRANSLATORS: Output if appstreamcli --version is executed. -#: tools/appstream-cli.c:693 +#: tools/appstream-cli.c:786 #, c-format msgid "AppStream version: %s" msgstr "AppStream-versie: %s" @@ -224,6 +224,10 @@ msgid "Communication & News" msgstr "Communicatie & Nieuws" +#: tools/appstream-cli.c:712 +msgid "Compare two version numbers." +msgstr "Vergelijk twee versienummers." + #: src/as-provided.c:167 msgid "Component" msgstr "Onderdeel" @@ -239,7 +243,7 @@ msgstr "Verplicht voor" #. TRANSLATORS: "convert" command in ascli. "Collection XML" is a term describing a specific type of AppStream XML data. -#: tools/appstream-cli.c:619 +#: tools/appstream-cli.c:711 msgid "Convert collection XML to YAML or vice versa." msgstr "Een collectie XML naar YAML (of vice-versa) converteren." @@ -249,7 +253,7 @@ msgid "Could not find component providing '%s::%s'." msgstr "Het onderdeel dat '%s::%s' bevat kan niet worden gevonden." -#: tools/appstream-cli.c:620 +#: tools/appstream-cli.c:713 msgid "" "Create a template for a metainfo file (to be filled out by the upstream " "project)." @@ -300,7 +304,7 @@ msgid "Developer Tools" msgstr "Ontwikkelaarshulpmiddelen" -#: tools/appstream-cli.c:616 +#: tools/appstream-cli.c:708 msgid "Display status information about available AppStream metadata." msgstr "Statusinformatie weergeven over beschikbare AppStream-metagegevens." @@ -315,11 +319,11 @@ msgstr "Geen netwerkverbinding gebruiken." #. TRANSLATORS: ascli flag description for: --no-color -#: tools/appstream-cli.c:657 +#: tools/appstream-cli.c:750 msgid "Don't show colored output." msgstr "Geen gekleurde uitvoer weergeven." -#: tools/appstream-cli.c:607 +#: tools/appstream-cli.c:699 msgid "Dump raw XML metadata for a component matching the ID." msgstr "" "Onbewerkte XML-metagegevens dumpen voor een onderdeel dat overeenkomt met " @@ -439,11 +443,11 @@ msgid "Games" msgstr "Spellen" -#: tools/appstream-cli.c:603 +#: tools/appstream-cli.c:695 msgid "Get components which provide the given item." msgstr "Onderdelen verkrijgen die het opgegeven item beschikbaar stellen." -#: tools/appstream-cli.c:602 +#: tools/appstream-cli.c:694 msgid "Get information about a component by its ID." msgstr "Informatie verkrijgen over een onderdeel door de ID." @@ -478,11 +482,11 @@ msgid "Input Sources" msgstr "Invoerbronnen" -#: tools/appstream-cli.c:617 +#: tools/appstream-cli.c:709 msgid "Install a metadata file into the right location." msgstr "Installeer een metagegevensbestand in de juiste locatie." -#: tools/appstream-cli.c:613 +#: tools/appstream-cli.c:705 msgid "Install software matching the component-ID." msgstr "Installeer software die overeen komt met de onderdeel-id." @@ -526,9 +530,8 @@ msgstr "Logisch" #: src/as-provided.c:149 -#, fuzzy msgid "MIME types" -msgstr "Mime-types" +msgstr "MIME-types" #. TRANSLATORS: ascli flag description for: --no-cache #: tools/appstream-cli.c:67 @@ -650,11 +653,11 @@ msgid "Python 3" msgstr "Python 3" -#: tools/appstream-cli.c:608 +#: tools/appstream-cli.c:700 msgid "Rebuild the component metadata cache." msgstr "Herbouw de onderdeelmetagegevens-cache." -#: tools/appstream-cli.c:614 +#: tools/appstream-cli.c:706 msgid "Remove software matching the component-ID." msgstr "Verwijder software die overeenkomt met de onderdeel-id." @@ -668,7 +671,7 @@ msgid "Role Playing" msgstr "Rollenspellen" -#: tools/appstream-cli.c:185 tools/appstream-cli.c:675 +#: tools/appstream-cli.c:185 tools/appstream-cli.c:768 #, c-format msgid "Run '%s --help' to see a full list of available command line options." msgstr "" @@ -699,7 +702,7 @@ msgid "Science" msgstr "Wetenschap" -#: tools/appstream-cli.c:601 +#: tools/appstream-cli.c:693 msgid "Search the component database." msgstr "Zoeken in de onderdelen-database." @@ -709,12 +712,12 @@ msgstr "Veiligheid" #. TRANSLATORS: ascli flag description for: --verbose -#: tools/appstream-cli.c:652 +#: tools/appstream-cli.c:745 msgid "Show extra debugging information." msgstr "Extra foutopsporingsinformatie weergeven." #. TRANSLATORS: ascli flag description for: --version -#: tools/appstream-cli.c:646 +#: tools/appstream-cli.c:739 msgid "Show the program version." msgstr "De applicatieversie weergeven." @@ -729,7 +732,7 @@ msgstr "Strategie" #. these are commands we can use with appstreamcli -#: tools/appstream-cli.c:599 +#: tools/appstream-cli.c:691 msgid "Subcommands:" msgstr "Subcommando's:" @@ -773,7 +776,7 @@ "log om meer informatie te verkrijgen." #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand, a bullet-pointed list of types follows -#: tools/appstream-cli.c:565 +#: tools/appstream-cli.c:657 #, c-format msgid "The TYPE must be a valid component-type, such as: %s" msgstr "Het TYPE moet een geldig onderdeeltype zijn, bijv.: %s" @@ -788,7 +791,7 @@ "waarden zijn:" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand -#: tools/appstream-cli.c:562 +#: tools/appstream-cli.c:654 msgid "" "This command takes optional TYPE and FILE positional arguments, FILE being a " "file to write to (or \"-\" for standard output)." @@ -809,6 +812,14 @@ "naar software die een bepaald mimetype aanbiedt en deze installeren middels " "de ID." +#: tools/appstream-cli.c:622 +msgid "" +"Too many parameters: Need two version numbers or version numbers and a " +"comparison operator." +msgstr "" +"Teveel parameters: twee versienummers of versienummer en vergelijkoperator " +"nodig." + #: tools/ascli-actions-mdata.c:541 #, c-format msgid "Unable to build the template metainfo file: %s" @@ -858,13 +869,19 @@ "worden geïnstalleerd." #. TRANSLATORS: ascli has been run with unknown command. -#: tools/appstream-cli.c:750 +#: tools/appstream-cli.c:845 #, c-format msgid "Unknown command '%s'." msgstr "Onbekende opdracht '%s'." +#. * TRANSLATORS: The user tried to compare version numbers, but the comparison operator (greater-then, equal, etc.) was invalid. +#: tools/appstream-cli.c:582 +#, c-format +msgid "Unknown compare relation '%s'. Valid values are:" +msgstr "Onbekende vergelijkrelatie '%s'. Geldige waarden zijn:" + #. TRANSLATORS: ascli flag description for: --from-desktop (part of the new-template subcommand) -#: tools/appstream-cli.c:557 +#: tools/appstream-cli.c:649 msgid "" "Use the given .desktop file to fill in the basic values of the metainfo file." msgstr "" @@ -876,11 +893,11 @@ msgid "Utilities" msgstr "Hulpmiddelen" -#: tools/appstream-cli.c:610 +#: tools/appstream-cli.c:702 msgid "Validate AppStream XML files for issues." msgstr "Valideer de AppStream XML-bestanden op problemen." -#: tools/appstream-cli.c:611 +#: tools/appstream-cli.c:703 msgid "Validate an installed file-tree of an application for valid metadata." msgstr "" "Valideert een geïnstalleerde bestandsstructuur van een applicatie op geldige " @@ -900,7 +917,7 @@ msgid "Validation was successful: %s" msgstr "Het valideren is succesvol: %s" -#: tools/appstream-cli.c:605 +#: tools/appstream-cli.c:697 msgid "Value of the item that should be found." msgstr "Waarde van het te vinden item." @@ -934,7 +951,7 @@ msgid "Word Processor" msgstr "Tekstverwerkers" -#: tools/appstream-cli.c:623 +#: tools/appstream-cli.c:716 msgid "" "You can find information about subcommand-specific options by passing \"--" "help\" to the subcommand." @@ -957,8 +974,15 @@ "U moet een type AppStream-software-onderdeel opgeven om een sjabloon te " "kunnen genereren. Geldige waarden zijn:" +#: tools/appstream-cli.c:553 +msgid "" +"You need to provide at least two version numbers to compare as parameters." +msgstr "" +"Je moet minimaal twee versienummers opgeven om parameters te kunnen " +"vergelijken." + #. TRANSLATORS: ascli has been run without command. -#: tools/appstream-cli.c:674 +#: tools/appstream-cli.c:767 msgid "You need to specify a command." msgstr "U moet een opdracht opgeven." diff -Nru appstream-0.12.0/po/oc.po appstream-0.12.2/po/oc.po --- appstream-0.12.0/po/oc.po 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/po/oc.po 2018-08-04 07:39:44.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: AppStream\n" "Report-Msgid-Bugs-To: appstream@lists.freedesktop.org\n" -"POT-Creation-Date: 2018-04-04 17:28+0200\n" +"POT-Creation-Date: 2018-06-10 15:36+0200\n" "PO-Revision-Date: 2016-08-15 18:48+0000\n" "Last-Translator: Matthias Klumpp \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/freedesktop/" @@ -51,7 +51,7 @@ msgid "Also show pedantic hints." msgstr "" -#: tools/appstream-cli.c:604 +#: tools/appstream-cli.c:696 msgid "An item type (e.g. lib, bin, python3, …)" msgstr "" @@ -64,7 +64,7 @@ msgstr "" #. TRANSLATORS: Output if appstreamcli --version is run and the CLI and libappstream versions differ. -#: tools/appstream-cli.c:696 +#: tools/appstream-cli.c:789 #, c-format msgid "" "AppStream CLI tool version: %s\n" @@ -96,7 +96,7 @@ #. TRANSLATORS: This is the header to the --help menu for subcommands #. TRANSLATORS: This is the header to the --help menu -#: tools/appstream-cli.c:143 tools/appstream-cli.c:597 +#: tools/appstream-cli.c:143 tools/appstream-cli.c:689 msgid "AppStream command-line interface" msgstr "" @@ -112,7 +112,7 @@ msgstr "" #. TRANSLATORS: Output if appstreamcli --version is executed. -#: tools/appstream-cli.c:693 +#: tools/appstream-cli.c:786 #, fuzzy, c-format msgid "AppStream version: %s" msgstr "Version : %s" @@ -216,6 +216,10 @@ msgid "Communication & News" msgstr "" +#: tools/appstream-cli.c:712 +msgid "Compare two version numbers." +msgstr "" + #: src/as-provided.c:167 msgid "Component" msgstr "" @@ -231,7 +235,7 @@ msgstr "" #. TRANSLATORS: "convert" command in ascli. "Collection XML" is a term describing a specific type of AppStream XML data. -#: tools/appstream-cli.c:619 +#: tools/appstream-cli.c:711 msgid "Convert collection XML to YAML or vice versa." msgstr "" @@ -241,7 +245,7 @@ msgid "Could not find component providing '%s::%s'." msgstr "" -#: tools/appstream-cli.c:620 +#: tools/appstream-cli.c:713 msgid "" "Create a template for a metainfo file (to be filled out by the upstream " "project)." @@ -289,7 +293,7 @@ msgid "Developer Tools" msgstr "Desvolopaire" -#: tools/appstream-cli.c:616 +#: tools/appstream-cli.c:708 msgid "Display status information about available AppStream metadata." msgstr "" @@ -304,11 +308,11 @@ msgstr "" #. TRANSLATORS: ascli flag description for: --no-color -#: tools/appstream-cli.c:657 +#: tools/appstream-cli.c:750 msgid "Don't show colored output." msgstr "" -#: tools/appstream-cli.c:607 +#: tools/appstream-cli.c:699 msgid "Dump raw XML metadata for a component matching the ID." msgstr "" @@ -426,11 +430,11 @@ msgid "Games" msgstr "" -#: tools/appstream-cli.c:603 +#: tools/appstream-cli.c:695 msgid "Get components which provide the given item." msgstr "" -#: tools/appstream-cli.c:602 +#: tools/appstream-cli.c:694 msgid "Get information about a component by its ID." msgstr "" @@ -465,11 +469,11 @@ msgid "Input Sources" msgstr "" -#: tools/appstream-cli.c:617 +#: tools/appstream-cli.c:709 msgid "Install a metadata file into the right location." msgstr "" -#: tools/appstream-cli.c:613 +#: tools/appstream-cli.c:705 msgid "Install software matching the component-ID." msgstr "" @@ -634,11 +638,11 @@ msgid "Python 3" msgstr "Python 3" -#: tools/appstream-cli.c:608 +#: tools/appstream-cli.c:700 msgid "Rebuild the component metadata cache." msgstr "" -#: tools/appstream-cli.c:614 +#: tools/appstream-cli.c:706 msgid "Remove software matching the component-ID." msgstr "" @@ -652,7 +656,7 @@ msgid "Role Playing" msgstr "" -#: tools/appstream-cli.c:185 tools/appstream-cli.c:675 +#: tools/appstream-cli.c:185 tools/appstream-cli.c:768 #, c-format msgid "Run '%s --help' to see a full list of available command line options." msgstr "" @@ -678,7 +682,7 @@ msgid "Science" msgstr "" -#: tools/appstream-cli.c:601 +#: tools/appstream-cli.c:693 msgid "Search the component database." msgstr "" @@ -688,12 +692,12 @@ msgstr "" #. TRANSLATORS: ascli flag description for: --verbose -#: tools/appstream-cli.c:652 +#: tools/appstream-cli.c:745 msgid "Show extra debugging information." msgstr "" #. TRANSLATORS: ascli flag description for: --version -#: tools/appstream-cli.c:646 +#: tools/appstream-cli.c:739 msgid "Show the program version." msgstr "" @@ -708,7 +712,7 @@ msgstr "" #. these are commands we can use with appstreamcli -#: tools/appstream-cli.c:599 +#: tools/appstream-cli.c:691 msgid "Subcommands:" msgstr "Soscomandas :" @@ -749,7 +753,7 @@ msgstr "" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand, a bullet-pointed list of types follows -#: tools/appstream-cli.c:565 +#: tools/appstream-cli.c:657 #, c-format msgid "The TYPE must be a valid component-type, such as: %s" msgstr "" @@ -762,7 +766,7 @@ msgstr "" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand -#: tools/appstream-cli.c:562 +#: tools/appstream-cli.c:654 msgid "" "This command takes optional TYPE and FILE positional arguments, FILE being a " "file to write to (or \"-\" for standard output)." @@ -776,6 +780,12 @@ "and installing it by its software component identifier." msgstr "" +#: tools/appstream-cli.c:622 +msgid "" +"Too many parameters: Need two version numbers or version numbers and a " +"comparison operator." +msgstr "" + #: tools/ascli-actions-mdata.c:541 #, c-format msgid "Unable to build the template metainfo file: %s" @@ -821,13 +831,19 @@ msgstr "" #. TRANSLATORS: ascli has been run with unknown command. -#: tools/appstream-cli.c:750 +#: tools/appstream-cli.c:845 #, c-format msgid "Unknown command '%s'." msgstr "" +#. * TRANSLATORS: The user tried to compare version numbers, but the comparison operator (greater-then, equal, etc.) was invalid. +#: tools/appstream-cli.c:582 +#, c-format +msgid "Unknown compare relation '%s'. Valid values are:" +msgstr "" + #. TRANSLATORS: ascli flag description for: --from-desktop (part of the new-template subcommand) -#: tools/appstream-cli.c:557 +#: tools/appstream-cli.c:649 msgid "" "Use the given .desktop file to fill in the basic values of the metainfo file." msgstr "" @@ -837,11 +853,11 @@ msgid "Utilities" msgstr "" -#: tools/appstream-cli.c:610 +#: tools/appstream-cli.c:702 msgid "Validate AppStream XML files for issues." msgstr "" -#: tools/appstream-cli.c:611 +#: tools/appstream-cli.c:703 msgid "Validate an installed file-tree of an application for valid metadata." msgstr "" @@ -859,7 +875,7 @@ msgid "Validation was successful: %s" msgstr "" -#: tools/appstream-cli.c:605 +#: tools/appstream-cli.c:697 msgid "Value of the item that should be found." msgstr "" @@ -894,7 +910,7 @@ msgid "Word Processor" msgstr "" -#: tools/appstream-cli.c:623 +#: tools/appstream-cli.c:716 msgid "" "You can find information about subcommand-specific options by passing \"--" "help\" to the subcommand." @@ -911,8 +927,13 @@ "template. Possible values are:" msgstr "" +#: tools/appstream-cli.c:553 +msgid "" +"You need to provide at least two version numbers to compare as parameters." +msgstr "" + #. TRANSLATORS: ascli has been run without command. -#: tools/appstream-cli.c:674 +#: tools/appstream-cli.c:767 msgid "You need to specify a command." msgstr "" diff -Nru appstream-0.12.0/po/pl.po appstream-0.12.2/po/pl.po --- appstream-0.12.0/po/pl.po 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/po/pl.po 2018-08-04 07:39:44.000000000 +0000 @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: AppStream\n" "Report-Msgid-Bugs-To: appstream@lists.freedesktop.org\n" -"POT-Creation-Date: 2018-04-04 17:28+0200\n" -"PO-Revision-Date: 2018-03-28 23:36+0000\n" +"POT-Creation-Date: 2018-06-10 15:36+0200\n" +"PO-Revision-Date: 2018-06-10 13:47+0000\n" "Last-Translator: Piotr Drąg \n" "Language-Team: Polish \n" @@ -19,7 +19,7 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 2.20-dev\n" +"X-Generator: Weblate 3.0\n" #: tools/appstream-cli.c:146 #, c-format @@ -52,7 +52,7 @@ msgid "Also show pedantic hints." msgstr "Wyświetla także drobiazgowe uwagi." -#: tools/appstream-cli.c:604 +#: tools/appstream-cli.c:696 msgid "An item type (e.g. lib, bin, python3, …)" msgstr "Typ elementu (np. lib, bin, python3…)" @@ -65,7 +65,7 @@ msgstr "Interfejs AppStream dla wiersza poleceń" #. TRANSLATORS: Output if appstreamcli --version is run and the CLI and libappstream versions differ. -#: tools/appstream-cli.c:696 +#: tools/appstream-cli.c:789 #, c-format msgid "" "AppStream CLI tool version: %s\n" @@ -101,7 +101,7 @@ #. TRANSLATORS: This is the header to the --help menu for subcommands #. TRANSLATORS: This is the header to the --help menu -#: tools/appstream-cli.c:143 tools/appstream-cli.c:597 +#: tools/appstream-cli.c:143 tools/appstream-cli.c:689 msgid "AppStream command-line interface" msgstr "Interfejs wiersza poleceń AppStream" @@ -121,7 +121,7 @@ "%s" #. TRANSLATORS: Output if appstreamcli --version is executed. -#: tools/appstream-cli.c:693 +#: tools/appstream-cli.c:786 #, c-format msgid "AppStream version: %s" msgstr "Wersja AppStream: %s" @@ -227,6 +227,10 @@ msgid "Communication & News" msgstr "Komunikacja i aktualności" +#: tools/appstream-cli.c:712 +msgid "Compare two version numbers." +msgstr "Porównuje dwa numery wersji." + #: src/as-provided.c:167 msgid "Component" msgstr "Składnik" @@ -242,7 +246,7 @@ msgstr "Obowiązkowe dla" #. TRANSLATORS: "convert" command in ascli. "Collection XML" is a term describing a specific type of AppStream XML data. -#: tools/appstream-cli.c:619 +#: tools/appstream-cli.c:711 msgid "Convert collection XML to YAML or vice versa." msgstr "Konwertuje XML kolekcji do YAML lub odwrotnie." @@ -252,7 +256,7 @@ msgid "Could not find component providing '%s::%s'." msgstr "Nie można odnaleźć składnika dostarczającego „%s::%s”." -#: tools/appstream-cli.c:620 +#: tools/appstream-cli.c:713 msgid "" "Create a template for a metainfo file (to be filled out by the upstream " "project)." @@ -299,7 +303,7 @@ msgid "Developer Tools" msgstr "Narzędzia programistyczne" -#: tools/appstream-cli.c:616 +#: tools/appstream-cli.c:708 msgid "Display status information about available AppStream metadata." msgstr "Wyświetla informacje o stanie dostępnych metadanych AppStream." @@ -314,11 +318,11 @@ msgstr "Bez używania dostępu do sieci." #. TRANSLATORS: ascli flag description for: --no-color -#: tools/appstream-cli.c:657 +#: tools/appstream-cli.c:750 msgid "Don't show colored output." msgstr "Bez kolorowania wyjścia." -#: tools/appstream-cli.c:607 +#: tools/appstream-cli.c:699 msgid "Dump raw XML metadata for a component matching the ID." msgstr "Zrzuca surowe metadane XML dla składnika pasującego do identyfikatora." @@ -435,11 +439,11 @@ msgid "Games" msgstr "Gry" -#: tools/appstream-cli.c:603 +#: tools/appstream-cli.c:695 msgid "Get components which provide the given item." msgstr "Pobiera składniki dostarczające podany element." -#: tools/appstream-cli.c:602 +#: tools/appstream-cli.c:694 msgid "Get information about a component by its ID." msgstr "Pobiera informacje o składniku według jego identyfikatora." @@ -474,11 +478,11 @@ msgid "Input Sources" msgstr "Źródła wprowadzania" -#: tools/appstream-cli.c:617 +#: tools/appstream-cli.c:709 msgid "Install a metadata file into the right location." msgstr "Instaluje plik metadanych we właściwym położeniu." -#: tools/appstream-cli.c:613 +#: tools/appstream-cli.c:705 msgid "Install software matching the component-ID." msgstr "Instaluje oprogramowanie pasujące do identyfikatora składnika." @@ -645,11 +649,11 @@ msgid "Python 3" msgstr "Python 3" -#: tools/appstream-cli.c:608 +#: tools/appstream-cli.c:700 msgid "Rebuild the component metadata cache." msgstr "Ponownie buduje pamięć podręczną metadanych składników." -#: tools/appstream-cli.c:614 +#: tools/appstream-cli.c:706 msgid "Remove software matching the component-ID." msgstr "Usuwa oprogramowanie pasujące do identyfikatora składnika." @@ -663,7 +667,7 @@ msgid "Role Playing" msgstr "Gry fabularne" -#: tools/appstream-cli.c:185 tools/appstream-cli.c:675 +#: tools/appstream-cli.c:185 tools/appstream-cli.c:768 #, c-format msgid "Run '%s --help' to see a full list of available command line options." msgstr "" @@ -692,7 +696,7 @@ msgid "Science" msgstr "Nauka" -#: tools/appstream-cli.c:601 +#: tools/appstream-cli.c:693 msgid "Search the component database." msgstr "Przeszukuje bazę danych składników." @@ -702,12 +706,12 @@ msgstr "Bezpieczeństwo" #. TRANSLATORS: ascli flag description for: --verbose -#: tools/appstream-cli.c:652 +#: tools/appstream-cli.c:745 msgid "Show extra debugging information." msgstr "Wyświetla dodatkowe informacje debugowania." #. TRANSLATORS: ascli flag description for: --version -#: tools/appstream-cli.c:646 +#: tools/appstream-cli.c:739 msgid "Show the program version." msgstr "Wyświetla wersję programu." @@ -722,7 +726,7 @@ msgstr "Gry strategiczne" #. these are commands we can use with appstreamcli -#: tools/appstream-cli.c:599 +#: tools/appstream-cli.c:691 msgid "Subcommands:" msgstr "Podpolecenia:" @@ -766,7 +770,7 @@ "dziennika." #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand, a bullet-pointed list of types follows -#: tools/appstream-cli.c:565 +#: tools/appstream-cli.c:657 #, c-format msgid "The TYPE must be a valid component-type, such as: %s" msgstr "TYP musi być prawidłowym typem składnika, na przykład: %s" @@ -781,7 +785,7 @@ "wartości:" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand -#: tools/appstream-cli.c:562 +#: tools/appstream-cli.c:654 msgid "" "This command takes optional TYPE and FILE positional arguments, FILE being a " "file to write to (or \"-\" for standard output)." @@ -802,6 +806,14 @@ "oprogramowanie dostarczające podany typ MIME i zainstalować je według jego " "identyfikatora składnika oprogramowania." +#: tools/appstream-cli.c:622 +msgid "" +"Too many parameters: Need two version numbers or version numbers and a " +"comparison operator." +msgstr "" +"Za dużo parametrów: wymagane są dwa numery wersji lub numery wersji i " +"operator porównania." + #: tools/ascli-actions-mdata.c:541 #, c-format msgid "Unable to build the template metainfo file: %s" @@ -849,13 +861,19 @@ msgstr "Nie można zapisać do „%s”, nie można zainstalować pliku metainfo." #. TRANSLATORS: ascli has been run with unknown command. -#: tools/appstream-cli.c:750 +#: tools/appstream-cli.c:845 #, c-format msgid "Unknown command '%s'." msgstr "Nieznane polecenie „%s”." +#. * TRANSLATORS: The user tried to compare version numbers, but the comparison operator (greater-then, equal, etc.) was invalid. +#: tools/appstream-cli.c:582 +#, c-format +msgid "Unknown compare relation '%s'. Valid values are:" +msgstr "Nieznany stosunek porównania „%s”. Prawidłowe wartości:" + #. TRANSLATORS: ascli flag description for: --from-desktop (part of the new-template subcommand) -#: tools/appstream-cli.c:557 +#: tools/appstream-cli.c:649 msgid "" "Use the given .desktop file to fill in the basic values of the metainfo file." msgstr "" @@ -867,11 +885,11 @@ msgid "Utilities" msgstr "Narzędzia" -#: tools/appstream-cli.c:610 +#: tools/appstream-cli.c:702 msgid "Validate AppStream XML files for issues." msgstr "Sprawdza poprawność plików XML AppStream." -#: tools/appstream-cli.c:611 +#: tools/appstream-cli.c:703 msgid "Validate an installed file-tree of an application for valid metadata." msgstr "Sprawdza poprawność metadanych zainstalowanego drzewa plików programu." @@ -889,7 +907,7 @@ msgid "Validation was successful: %s" msgstr "Pomyślnie sprawdzono poprawność: %s" -#: tools/appstream-cli.c:605 +#: tools/appstream-cli.c:697 msgid "Value of the item that should be found." msgstr "Wartość wyszukiwanego elementu." @@ -923,7 +941,7 @@ msgid "Word Processor" msgstr "Procesory tekstu" -#: tools/appstream-cli.c:623 +#: tools/appstream-cli.c:716 msgid "" "You can find information about subcommand-specific options by passing \"--" "help\" to the subcommand." @@ -944,8 +962,14 @@ "Należy podać typ składnika oprogramowania AppStream, aby utworzyć szablon. " "Możliwe wartości:" +#: tools/appstream-cli.c:553 +msgid "" +"You need to provide at least two version numbers to compare as parameters." +msgstr "" +"Należy podać co najmniej dwa numery wersji, aby porównać jako parametry." + #. TRANSLATORS: ascli has been run without command. -#: tools/appstream-cli.c:674 +#: tools/appstream-cli.c:767 msgid "You need to specify a command." msgstr "Należy podać polecenie." diff -Nru appstream-0.12.0/po/POTFILES.in appstream-0.12.2/po/POTFILES.in --- appstream-0.12.0/po/POTFILES.in 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/po/POTFILES.in 2018-08-04 07:39:44.000000000 +0000 @@ -3,6 +3,8 @@ # data data/org.freedesktop.appstream.cli.metainfo.xml # library sources +src/as-agreement.c +src/as-agreement-section.c src/as-bundle.c src/as-category.c src/as-checksum.c @@ -19,6 +21,7 @@ src/as-release.c src/as-screenshot.c src/as-suggested.c +src/as-tag.c src/as-translation.c src/as-utils.c src/as-validator.c diff -Nru appstream-0.12.0/po/pt_BR.po appstream-0.12.2/po/pt_BR.po --- appstream-0.12.0/po/pt_BR.po 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/po/pt_BR.po 2018-08-04 07:39:44.000000000 +0000 @@ -9,8 +9,8 @@ msgstr "" "Project-Id-Version: AppStream\n" "Report-Msgid-Bugs-To: appstream@lists.freedesktop.org\n" -"POT-Creation-Date: 2018-04-04 17:28+0200\n" -"PO-Revision-Date: 2018-03-29 02:14+0000\n" +"POT-Creation-Date: 2018-06-10 15:36+0200\n" +"PO-Revision-Date: 2018-06-10 17:49+0000\n" "Last-Translator: Rafael Fontenelle \n" "Language-Team: Portuguese (Brazil) \n" @@ -19,7 +19,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 2.20-dev\n" +"X-Generator: Weblate 3.0\n" #: tools/appstream-cli.c:146 #, c-format @@ -52,7 +52,7 @@ msgid "Also show pedantic hints." msgstr "Também mostre dicas pedestrais." -#: tools/appstream-cli.c:604 +#: tools/appstream-cli.c:696 msgid "An item type (e.g. lib, bin, python3, …)" msgstr "Um tipo de item (ex.: lib, bin, python3, …)" @@ -65,7 +65,7 @@ msgstr "CLI do AppStream" #. TRANSLATORS: Output if appstreamcli --version is run and the CLI and libappstream versions differ. -#: tools/appstream-cli.c:696 +#: tools/appstream-cli.c:789 #, c-format msgid "" "AppStream CLI tool version: %s\n" @@ -101,7 +101,7 @@ #. TRANSLATORS: This is the header to the --help menu for subcommands #. TRANSLATORS: This is the header to the --help menu -#: tools/appstream-cli.c:143 tools/appstream-cli.c:597 +#: tools/appstream-cli.c:143 tools/appstream-cli.c:689 msgid "AppStream command-line interface" msgstr "Interface de linha de comando do AppStream" @@ -121,7 +121,7 @@ "encontrados: %s" #. TRANSLATORS: Output if appstreamcli --version is executed. -#: tools/appstream-cli.c:693 +#: tools/appstream-cli.c:786 #, c-format msgid "AppStream version: %s" msgstr "Versão do AppStream: %s" @@ -227,6 +227,10 @@ msgid "Communication & News" msgstr "Comunicação & notícias" +#: tools/appstream-cli.c:712 +msgid "Compare two version numbers." +msgstr "Compara dois números de versões." + #: src/as-provided.c:167 msgid "Component" msgstr "Componente" @@ -242,7 +246,7 @@ msgstr "Compulsório para" #. TRANSLATORS: "convert" command in ascli. "Collection XML" is a term describing a specific type of AppStream XML data. -#: tools/appstream-cli.c:619 +#: tools/appstream-cli.c:711 msgid "Convert collection XML to YAML or vice versa." msgstr "Converter XML para YAML ou vice-versa." @@ -252,7 +256,7 @@ msgid "Could not find component providing '%s::%s'." msgstr "Não foi possível localizar componente fornecendo “%s::%s”." -#: tools/appstream-cli.c:620 +#: tools/appstream-cli.c:713 msgid "" "Create a template for a metainfo file (to be filled out by the upstream " "project)." @@ -301,7 +305,7 @@ msgid "Developer Tools" msgstr "Ferramentas do desenvolvedor" -#: tools/appstream-cli.c:616 +#: tools/appstream-cli.c:708 msgid "Display status information about available AppStream metadata." msgstr "Exibir informações sobre metadados disponíveis do AppStream." @@ -316,11 +320,11 @@ msgstr "Não usa acesso de rede." #. TRANSLATORS: ascli flag description for: --no-color -#: tools/appstream-cli.c:657 +#: tools/appstream-cli.c:750 msgid "Don't show colored output." msgstr "Não exibir saída colorida." -#: tools/appstream-cli.c:607 +#: tools/appstream-cli.c:699 msgid "Dump raw XML metadata for a component matching the ID." msgstr "" "Despejar metadados XML não tratados para um componente coincidindo com o ID." @@ -438,11 +442,11 @@ msgid "Games" msgstr "Jogos" -#: tools/appstream-cli.c:603 +#: tools/appstream-cli.c:695 msgid "Get components which provide the given item." msgstr "Obtém componentes que fornecem o item dado." -#: tools/appstream-cli.c:602 +#: tools/appstream-cli.c:694 msgid "Get information about a component by its ID." msgstr "Obtém informação sobre um componente por seu ID." @@ -477,11 +481,11 @@ msgid "Input Sources" msgstr "Fontes de entrada" -#: tools/appstream-cli.c:617 +#: tools/appstream-cli.c:709 msgid "Install a metadata file into the right location." msgstr "Instala um arquivo de metadados na localização certa." -#: tools/appstream-cli.c:613 +#: tools/appstream-cli.c:705 msgid "Install software matching the component-ID." msgstr "Instala software correspondente ao component-ID." @@ -648,11 +652,11 @@ msgid "Python 3" msgstr "Python 3" -#: tools/appstream-cli.c:608 +#: tools/appstream-cli.c:700 msgid "Rebuild the component metadata cache." msgstr "Reconstruir o cache de metadados de componentes." -#: tools/appstream-cli.c:614 +#: tools/appstream-cli.c:706 msgid "Remove software matching the component-ID." msgstr "Remove software correspondendo ao component-ID." @@ -666,7 +670,7 @@ msgid "Role Playing" msgstr "RPGs" -#: tools/appstream-cli.c:185 tools/appstream-cli.c:675 +#: tools/appstream-cli.c:185 tools/appstream-cli.c:768 #, c-format msgid "Run '%s --help' to see a full list of available command line options." msgstr "" @@ -696,7 +700,7 @@ msgid "Science" msgstr "Ciência" -#: tools/appstream-cli.c:601 +#: tools/appstream-cli.c:693 msgid "Search the component database." msgstr "Pesquisa na base de dados de componente." @@ -706,12 +710,12 @@ msgstr "Segurança" #. TRANSLATORS: ascli flag description for: --verbose -#: tools/appstream-cli.c:652 +#: tools/appstream-cli.c:745 msgid "Show extra debugging information." msgstr "Mostrar informações extras de depuração." #. TRANSLATORS: ascli flag description for: --version -#: tools/appstream-cli.c:646 +#: tools/appstream-cli.c:739 msgid "Show the program version." msgstr "Mostrar a versão do programa." @@ -726,7 +730,7 @@ msgstr "Estratégia" #. these are commands we can use with appstreamcli -#: tools/appstream-cli.c:599 +#: tools/appstream-cli.c:691 msgid "Subcommands:" msgstr "Subcomandos:" @@ -770,7 +774,7 @@ "mais informações." #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand, a bullet-pointed list of types follows -#: tools/appstream-cli.c:565 +#: tools/appstream-cli.c:657 #, c-format msgid "The TYPE must be a valid component-type, such as: %s" msgstr "O TIPO deve ser um component-type válido, como: %s" @@ -785,7 +789,7 @@ "possíveis são:" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand -#: tools/appstream-cli.c:562 +#: tools/appstream-cli.c:654 msgid "" "This command takes optional TYPE and FILE positional arguments, FILE being a " "file to write to (or \"-\" for standard output)." @@ -805,6 +809,14 @@ "sistema para, por exemplo, consultar por um software fornecendo um Tipo MIME " "específico e instalá-lo usando o identificador de componente de seu software." +#: tools/appstream-cli.c:622 +msgid "" +"Too many parameters: Need two version numbers or version numbers and a " +"comparison operator." +msgstr "" +"Parâmetros demais: é necessário dois números de versão, ou números de versão " +"e um operador de comparação." + #: tools/ascli-actions-mdata.c:541 #, c-format msgid "Unable to build the template metainfo file: %s" @@ -854,13 +866,19 @@ "metainfo." #. TRANSLATORS: ascli has been run with unknown command. -#: tools/appstream-cli.c:750 +#: tools/appstream-cli.c:845 #, c-format msgid "Unknown command '%s'." msgstr "Comando desconhecido “%s”." +#. * TRANSLATORS: The user tried to compare version numbers, but the comparison operator (greater-then, equal, etc.) was invalid. +#: tools/appstream-cli.c:582 +#, c-format +msgid "Unknown compare relation '%s'. Valid values are:" +msgstr "Relação de comparação desconhecida \"%s\". Valores válidos são:" + #. TRANSLATORS: ascli flag description for: --from-desktop (part of the new-template subcommand) -#: tools/appstream-cli.c:557 +#: tools/appstream-cli.c:649 msgid "" "Use the given .desktop file to fill in the basic values of the metainfo file." msgstr "" @@ -872,11 +890,11 @@ msgid "Utilities" msgstr "Utilitários" -#: tools/appstream-cli.c:610 +#: tools/appstream-cli.c:702 msgid "Validate AppStream XML files for issues." msgstr "Valida os arquivos XML de AppStream por problemas." -#: tools/appstream-cli.c:611 +#: tools/appstream-cli.c:703 msgid "Validate an installed file-tree of an application for valid metadata." msgstr "" "Valida uma árvore de arquivo instalado de um aplicativo para metadados " @@ -896,7 +914,7 @@ msgid "Validation was successful: %s" msgstr "Validação bem sucedida: %s" -#: tools/appstream-cli.c:605 +#: tools/appstream-cli.c:697 msgid "Value of the item that should be found." msgstr "Valor do item que deve ser encontrado." @@ -930,7 +948,7 @@ msgid "Word Processor" msgstr "Processadores de texto" -#: tools/appstream-cli.c:623 +#: tools/appstream-cli.c:716 msgid "" "You can find information about subcommand-specific options by passing \"--" "help\" to the subcommand." @@ -952,8 +970,15 @@ "Você precisa fornecer um tipo AppStream de componente de software para gerar " "um modelo. Valores possíveis são:" +#: tools/appstream-cli.c:553 +msgid "" +"You need to provide at least two version numbers to compare as parameters." +msgstr "" +"Você precisa fornecer pelo menos dois números de versão para comparar como " +"parâmetros." + #. TRANSLATORS: ascli has been run without command. -#: tools/appstream-cli.c:674 +#: tools/appstream-cli.c:767 msgid "You need to specify a command." msgstr "Você precisa especificar um comando." diff -Nru appstream-0.12.0/po/pt.po appstream-0.12.2/po/pt.po --- appstream-0.12.0/po/pt.po 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/po/pt.po 2018-08-04 07:39:44.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: AppStream\n" "Report-Msgid-Bugs-To: appstream@lists.freedesktop.org\n" -"POT-Creation-Date: 2018-04-04 17:28+0200\n" +"POT-Creation-Date: 2018-06-10 15:36+0200\n" "PO-Revision-Date: 2017-01-16 01:24+0000\n" "Last-Translator: Manuela Silva \n" "Language-Team: Portuguese \n" "Language-Team: Russian \n" @@ -17,9 +17,9 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 2.20-dev\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=" +"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 3.0\n" #: tools/appstream-cli.c:146 #, c-format @@ -52,7 +52,7 @@ msgid "Also show pedantic hints." msgstr "Кроме того, выводить педантичные подсказки." -#: tools/appstream-cli.c:604 +#: tools/appstream-cli.c:696 msgid "An item type (e.g. lib, bin, python3, …)" msgstr "Тип элемента (например lib, bin, python3, ...)" @@ -65,7 +65,7 @@ msgstr "Интерфейс командной строки AppStream" #. TRANSLATORS: Output if appstreamcli --version is run and the CLI and libappstream versions differ. -#: tools/appstream-cli.c:696 +#: tools/appstream-cli.c:789 #, c-format msgid "" "AppStream CLI tool version: %s\n" @@ -101,7 +101,7 @@ #. TRANSLATORS: This is the header to the --help menu for subcommands #. TRANSLATORS: This is the header to the --help menu -#: tools/appstream-cli.c:143 tools/appstream-cli.c:597 +#: tools/appstream-cli.c:143 tools/appstream-cli.c:689 msgid "AppStream command-line interface" msgstr "Интерфейс командной строки AppStream" @@ -119,7 +119,7 @@ msgstr "Системный кэш AppStream обновлён, но найдены проблемы: %s" #. TRANSLATORS: Output if appstreamcli --version is executed. -#: tools/appstream-cli.c:693 +#: tools/appstream-cli.c:786 #, c-format msgid "AppStream version: %s" msgstr "Версия AppStream: %s" @@ -225,6 +225,10 @@ msgid "Communication & News" msgstr "Общение и новости" +#: tools/appstream-cli.c:712 +msgid "Compare two version numbers." +msgstr "Сравнить два номера версий." + #: src/as-provided.c:167 msgid "Component" msgstr "Компонент" @@ -240,7 +244,7 @@ msgstr "Обязательно для" #. TRANSLATORS: "convert" command in ascli. "Collection XML" is a term describing a specific type of AppStream XML data. -#: tools/appstream-cli.c:619 +#: tools/appstream-cli.c:711 msgid "Convert collection XML to YAML or vice versa." msgstr "Конвертировать коллекцию из XML в YAML или наоборот." @@ -250,7 +254,7 @@ msgid "Could not find component providing '%s::%s'." msgstr "Не удалось найти компоненту, предоставляющую \"%s::%s\"." -#: tools/appstream-cli.c:620 +#: tools/appstream-cli.c:713 msgid "" "Create a template for a metainfo file (to be filled out by the upstream " "project)." @@ -299,7 +303,7 @@ msgid "Developer Tools" msgstr "Инструменты разработки" -#: tools/appstream-cli.c:616 +#: tools/appstream-cli.c:708 msgid "Display status information about available AppStream metadata." msgstr "Показать информацию о состоянии доступных метаданных AppStream." @@ -314,11 +318,11 @@ msgstr "Не использовать доступ к сети." #. TRANSLATORS: ascli flag description for: --no-color -#: tools/appstream-cli.c:657 +#: tools/appstream-cli.c:750 msgid "Don't show colored output." msgstr "Не показывать цветной вывод." -#: tools/appstream-cli.c:607 +#: tools/appstream-cli.c:699 msgid "Dump raw XML metadata for a component matching the ID." msgstr "" "Создать дамп необработанных метаданных XML для компоненты с соответствующим " @@ -437,11 +441,11 @@ msgid "Games" msgstr "Игры" -#: tools/appstream-cli.c:603 +#: tools/appstream-cli.c:695 msgid "Get components which provide the given item." msgstr "Получить компоненты, которые предоставляют данный элемент." -#: tools/appstream-cli.c:602 +#: tools/appstream-cli.c:694 msgid "Get information about a component by its ID." msgstr "Получить информацию о компоненте по его идентификатору." @@ -476,11 +480,11 @@ msgid "Input Sources" msgstr "Источники" -#: tools/appstream-cli.c:617 +#: tools/appstream-cli.c:709 msgid "Install a metadata file into the right location." msgstr "Установить файл метаданных в нужное место." -#: tools/appstream-cli.c:613 +#: tools/appstream-cli.c:705 msgid "Install software matching the component-ID." msgstr "" "Установить программное обеспечение, соответствующее идентификатору " @@ -650,11 +654,11 @@ msgid "Python 3" msgstr "Python 3" -#: tools/appstream-cli.c:608 +#: tools/appstream-cli.c:700 msgid "Rebuild the component metadata cache." msgstr "Перестроить кэш метаданных компонентах." -#: tools/appstream-cli.c:614 +#: tools/appstream-cli.c:706 msgid "Remove software matching the component-ID." msgstr "" "Удалить программное обеспечение, соответствующее идентификатору компоненты." @@ -669,7 +673,7 @@ msgid "Role Playing" msgstr "Ролевые" -#: tools/appstream-cli.c:185 tools/appstream-cli.c:675 +#: tools/appstream-cli.c:185 tools/appstream-cli.c:768 #, c-format msgid "Run '%s --help' to see a full list of available command line options." msgstr "" @@ -699,7 +703,7 @@ msgid "Science" msgstr "Наука" -#: tools/appstream-cli.c:601 +#: tools/appstream-cli.c:693 msgid "Search the component database." msgstr "Поиск по базе данных компонентов." @@ -709,12 +713,12 @@ msgstr "Безопасность" #. TRANSLATORS: ascli flag description for: --verbose -#: tools/appstream-cli.c:652 +#: tools/appstream-cli.c:745 msgid "Show extra debugging information." msgstr "Показывать дополнительную отладочную информацию." #. TRANSLATORS: ascli flag description for: --version -#: tools/appstream-cli.c:646 +#: tools/appstream-cli.c:739 msgid "Show the program version." msgstr "Показать версию программы." @@ -729,7 +733,7 @@ msgstr "Стратегии" #. these are commands we can use with appstreamcli -#: tools/appstream-cli.c:599 +#: tools/appstream-cli.c:691 msgid "Subcommands:" msgstr "Подкоманды:" @@ -773,7 +777,7 @@ "логу для информации." #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand, a bullet-pointed list of types follows -#: tools/appstream-cli.c:565 +#: tools/appstream-cli.c:657 #, c-format msgid "The TYPE must be a valid component-type, such as: %s" msgstr "TYPE должен быть типом программного компонента, таким как: %s" @@ -788,7 +792,7 @@ "Возможные значения:" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand -#: tools/appstream-cli.c:562 +#: tools/appstream-cli.c:654 msgid "" "This command takes optional TYPE and FILE positional arguments, FILE being a " "file to write to (or \"-\" for standard output)." @@ -809,6 +813,14 @@ "определённым типом файлов, и его установки по идентификатору программного " "компонента." +#: tools/appstream-cli.c:622 +msgid "" +"Too many parameters: Need two version numbers or version numbers and a " +"comparison operator." +msgstr "" +"Слишком много параметров: нужно два номера версий или номера версий и " +"оператор сравнения." + #: tools/ascli-actions-mdata.c:541 #, c-format msgid "Unable to build the template metainfo file: %s" @@ -857,13 +869,19 @@ "Не удаётся записать в \"%s\", невозможно установить файл метаинформации." #. TRANSLATORS: ascli has been run with unknown command. -#: tools/appstream-cli.c:750 +#: tools/appstream-cli.c:845 #, c-format msgid "Unknown command '%s'." msgstr "Неизвестная команда \"%s\"." +#. * TRANSLATORS: The user tried to compare version numbers, but the comparison operator (greater-then, equal, etc.) was invalid. +#: tools/appstream-cli.c:582 +#, c-format +msgid "Unknown compare relation '%s'. Valid values are:" +msgstr "Неизвестный оператор сравнения: \"%s\". Правильные значения:" + #. TRANSLATORS: ascli flag description for: --from-desktop (part of the new-template subcommand) -#: tools/appstream-cli.c:557 +#: tools/appstream-cli.c:649 msgid "" "Use the given .desktop file to fill in the basic values of the metainfo file." msgstr "" @@ -875,11 +893,11 @@ msgid "Utilities" msgstr "Утилиты" -#: tools/appstream-cli.c:610 +#: tools/appstream-cli.c:702 msgid "Validate AppStream XML files for issues." msgstr "Проверить файлы XML AppStream на недостатки." -#: tools/appstream-cli.c:611 +#: tools/appstream-cli.c:703 msgid "Validate an installed file-tree of an application for valid metadata." msgstr "" "Проверить установленную иерархию файлов приложения на корректность " @@ -899,7 +917,7 @@ msgid "Validation was successful: %s" msgstr "Проверка успешно пройдена: %s" -#: tools/appstream-cli.c:605 +#: tools/appstream-cli.c:697 msgid "Value of the item that should be found." msgstr "Значение элемента, который должен быть найден." @@ -933,7 +951,7 @@ msgid "Word Processor" msgstr "Текстовые процессоры" -#: tools/appstream-cli.c:623 +#: tools/appstream-cli.c:716 msgid "" "You can find information about subcommand-specific options by passing \"--" "help\" to the subcommand." @@ -955,8 +973,15 @@ "Вам необходимо указать тип программного компонента AppStream для генерации " "шаблона. Возможные значения:" +#: tools/appstream-cli.c:553 +msgid "" +"You need to provide at least two version numbers to compare as parameters." +msgstr "" +"Вам необходимо представить как минимум два номера версий для сравнения как " +"параметры." + #. TRANSLATORS: ascli has been run without command. -#: tools/appstream-cli.c:674 +#: tools/appstream-cli.c:767 msgid "You need to specify a command." msgstr "Вам необходимо указать команду." diff -Nru appstream-0.12.0/po/sk.po appstream-0.12.2/po/sk.po --- appstream-0.12.0/po/sk.po 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/po/sk.po 2018-08-04 07:39:44.000000000 +0000 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: AppStream\n" "Report-Msgid-Bugs-To: appstream@lists.freedesktop.org\n" -"POT-Creation-Date: 2018-04-04 17:28+0200\n" +"POT-Creation-Date: 2018-06-10 15:36+0200\n" "PO-Revision-Date: 2018-04-01 11:41+0000\n" "Last-Translator: Matúš Baňas \n" "Language-Team: Slovak \n" "Language-Team: Slovenian (http://www.transifex.com/freedesktop/appstream/" @@ -52,7 +52,7 @@ msgid "Also show pedantic hints." msgstr "" -#: tools/appstream-cli.c:604 +#: tools/appstream-cli.c:696 msgid "An item type (e.g. lib, bin, python3, …)" msgstr "" @@ -65,7 +65,7 @@ msgstr "" #. TRANSLATORS: Output if appstreamcli --version is run and the CLI and libappstream versions differ. -#: tools/appstream-cli.c:696 +#: tools/appstream-cli.c:789 #, c-format msgid "" "AppStream CLI tool version: %s\n" @@ -97,7 +97,7 @@ #. TRANSLATORS: This is the header to the --help menu for subcommands #. TRANSLATORS: This is the header to the --help menu -#: tools/appstream-cli.c:143 tools/appstream-cli.c:597 +#: tools/appstream-cli.c:143 tools/appstream-cli.c:689 msgid "AppStream command-line interface" msgstr "" @@ -113,7 +113,7 @@ msgstr "" #. TRANSLATORS: Output if appstreamcli --version is executed. -#: tools/appstream-cli.c:693 +#: tools/appstream-cli.c:786 #, c-format msgid "AppStream version: %s" msgstr "" @@ -217,6 +217,10 @@ msgid "Communication & News" msgstr "" +#: tools/appstream-cli.c:712 +msgid "Compare two version numbers." +msgstr "" + #: src/as-provided.c:167 msgid "Component" msgstr "" @@ -232,7 +236,7 @@ msgstr "Obvezno za" #. TRANSLATORS: "convert" command in ascli. "Collection XML" is a term describing a specific type of AppStream XML data. -#: tools/appstream-cli.c:619 +#: tools/appstream-cli.c:711 msgid "Convert collection XML to YAML or vice versa." msgstr "" @@ -242,7 +246,7 @@ msgid "Could not find component providing '%s::%s'." msgstr "Komponente z id »%s« ni mogoče najti!" -#: tools/appstream-cli.c:620 +#: tools/appstream-cli.c:713 msgid "" "Create a template for a metainfo file (to be filled out by the upstream " "project)." @@ -291,7 +295,7 @@ msgid "Developer Tools" msgstr "Razvijalec" -#: tools/appstream-cli.c:616 +#: tools/appstream-cli.c:708 msgid "Display status information about available AppStream metadata." msgstr "" @@ -306,12 +310,12 @@ msgstr "" #. TRANSLATORS: ascli flag description for: --no-color -#: tools/appstream-cli.c:657 +#: tools/appstream-cli.c:750 #, fuzzy msgid "Don't show colored output." msgstr "Ne pokaži izpisa v barvah" -#: tools/appstream-cli.c:607 +#: tools/appstream-cli.c:699 msgid "Dump raw XML metadata for a component matching the ID." msgstr "" @@ -429,11 +433,11 @@ msgid "Games" msgstr "" -#: tools/appstream-cli.c:603 +#: tools/appstream-cli.c:695 msgid "Get components which provide the given item." msgstr "" -#: tools/appstream-cli.c:602 +#: tools/appstream-cli.c:694 msgid "Get information about a component by its ID." msgstr "" @@ -468,11 +472,11 @@ msgid "Input Sources" msgstr "" -#: tools/appstream-cli.c:617 +#: tools/appstream-cli.c:709 msgid "Install a metadata file into the right location." msgstr "" -#: tools/appstream-cli.c:613 +#: tools/appstream-cli.c:705 msgid "Install software matching the component-ID." msgstr "" @@ -640,11 +644,11 @@ msgid "Python 3" msgstr "" -#: tools/appstream-cli.c:608 +#: tools/appstream-cli.c:700 msgid "Rebuild the component metadata cache." msgstr "" -#: tools/appstream-cli.c:614 +#: tools/appstream-cli.c:706 msgid "Remove software matching the component-ID." msgstr "" @@ -658,7 +662,7 @@ msgid "Role Playing" msgstr "" -#: tools/appstream-cli.c:185 tools/appstream-cli.c:675 +#: tools/appstream-cli.c:185 tools/appstream-cli.c:768 #, c-format msgid "Run '%s --help' to see a full list of available command line options." msgstr "" @@ -686,7 +690,7 @@ msgid "Science" msgstr "" -#: tools/appstream-cli.c:601 +#: tools/appstream-cli.c:693 msgid "Search the component database." msgstr "" @@ -696,13 +700,13 @@ msgstr "" #. TRANSLATORS: ascli flag description for: --verbose -#: tools/appstream-cli.c:652 +#: tools/appstream-cli.c:745 #, fuzzy msgid "Show extra debugging information." msgstr "Pokaži dodatne podatke razhroščevanja" #. TRANSLATORS: ascli flag description for: --version -#: tools/appstream-cli.c:646 +#: tools/appstream-cli.c:739 #, fuzzy msgid "Show the program version." msgstr "Pokaži različico programa" @@ -718,7 +722,7 @@ msgstr "" #. these are commands we can use with appstreamcli -#: tools/appstream-cli.c:599 +#: tools/appstream-cli.c:691 msgid "Subcommands:" msgstr "Podukazi:" @@ -759,7 +763,7 @@ msgstr "" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand, a bullet-pointed list of types follows -#: tools/appstream-cli.c:565 +#: tools/appstream-cli.c:657 #, c-format msgid "The TYPE must be a valid component-type, such as: %s" msgstr "" @@ -772,7 +776,7 @@ msgstr "" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand -#: tools/appstream-cli.c:562 +#: tools/appstream-cli.c:654 msgid "" "This command takes optional TYPE and FILE positional arguments, FILE being a " "file to write to (or \"-\" for standard output)." @@ -786,6 +790,12 @@ "and installing it by its software component identifier." msgstr "" +#: tools/appstream-cli.c:622 +msgid "" +"Too many parameters: Need two version numbers or version numbers and a " +"comparison operator." +msgstr "" + #: tools/ascli-actions-mdata.c:541 #, c-format msgid "Unable to build the template metainfo file: %s" @@ -831,13 +841,19 @@ msgstr "" #. TRANSLATORS: ascli has been run with unknown command. -#: tools/appstream-cli.c:750 +#: tools/appstream-cli.c:845 #, c-format msgid "Unknown command '%s'." msgstr "" +#. * TRANSLATORS: The user tried to compare version numbers, but the comparison operator (greater-then, equal, etc.) was invalid. +#: tools/appstream-cli.c:582 +#, c-format +msgid "Unknown compare relation '%s'. Valid values are:" +msgstr "" + #. TRANSLATORS: ascli flag description for: --from-desktop (part of the new-template subcommand) -#: tools/appstream-cli.c:557 +#: tools/appstream-cli.c:649 msgid "" "Use the given .desktop file to fill in the basic values of the metainfo file." msgstr "" @@ -847,11 +863,11 @@ msgid "Utilities" msgstr "" -#: tools/appstream-cli.c:610 +#: tools/appstream-cli.c:702 msgid "Validate AppStream XML files for issues." msgstr "" -#: tools/appstream-cli.c:611 +#: tools/appstream-cli.c:703 msgid "Validate an installed file-tree of an application for valid metadata." msgstr "" @@ -869,7 +885,7 @@ msgid "Validation was successful: %s" msgstr "" -#: tools/appstream-cli.c:605 +#: tools/appstream-cli.c:697 msgid "Value of the item that should be found." msgstr "" @@ -904,7 +920,7 @@ msgid "Word Processor" msgstr "" -#: tools/appstream-cli.c:623 +#: tools/appstream-cli.c:716 msgid "" "You can find information about subcommand-specific options by passing \"--" "help\" to the subcommand." @@ -921,8 +937,13 @@ "template. Possible values are:" msgstr "" +#: tools/appstream-cli.c:553 +msgid "" +"You need to provide at least two version numbers to compare as parameters." +msgstr "" + #. TRANSLATORS: ascli has been run without command. -#: tools/appstream-cli.c:674 +#: tools/appstream-cli.c:767 msgid "You need to specify a command." msgstr "Navesti morate ukaz." diff -Nru appstream-0.12.0/po/sr@latin.po appstream-0.12.2/po/sr@latin.po --- appstream-0.12.0/po/sr@latin.po 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/po/sr@latin.po 2018-08-04 07:39:44.000000000 +0000 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: AppStream\n" "Report-Msgid-Bugs-To: appstream@lists.freedesktop.org\n" -"POT-Creation-Date: 2018-04-04 17:28+0200\n" +"POT-Creation-Date: 2018-06-10 15:36+0200\n" "PO-Revision-Date: 2017-05-05 11:18+0000\n" "Last-Translator: Слободан Симић(Slobodan Simić) \n" "Language-Team: Serbian (latin) \n" "Language-Team: Serbian \n" "Language-Team: Swedish \n" @@ -18,7 +18,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.20-dev\n" +"X-Generator: Weblate 3.0.1\n" #: tools/appstream-cli.c:146 #, c-format @@ -51,7 +51,7 @@ msgid "Also show pedantic hints." msgstr "Visa också pedantiska tips." -#: tools/appstream-cli.c:604 +#: tools/appstream-cli.c:696 msgid "An item type (e.g. lib, bin, python3, …)" msgstr "Ett objekts typ (t.ex. lib, bin, python3, …)" @@ -64,7 +64,7 @@ msgstr "AppStream-CLI" #. TRANSLATORS: Output if appstreamcli --version is run and the CLI and libappstream versions differ. -#: tools/appstream-cli.c:696 +#: tools/appstream-cli.c:789 #, c-format msgid "" "AppStream CLI tool version: %s\n" @@ -100,7 +100,7 @@ #. TRANSLATORS: This is the header to the --help menu for subcommands #. TRANSLATORS: This is the header to the --help menu -#: tools/appstream-cli.c:143 tools/appstream-cli.c:597 +#: tools/appstream-cli.c:143 tools/appstream-cli.c:689 msgid "AppStream command-line interface" msgstr "AppStreams kommandoradsgränssnitt" @@ -118,7 +118,7 @@ msgstr "AppStream-cache uppdaterades, men det fanns problem: %s" #. TRANSLATORS: Output if appstreamcli --version is executed. -#: tools/appstream-cli.c:693 +#: tools/appstream-cli.c:786 #, c-format msgid "AppStream version: %s" msgstr "AppStream-version: %s" @@ -224,6 +224,10 @@ msgid "Communication & News" msgstr "Kommunikation och nyheter" +#: tools/appstream-cli.c:712 +msgid "Compare two version numbers." +msgstr "Jämför två versionsnummer." + #: src/as-provided.c:167 msgid "Component" msgstr "Komponent" @@ -239,7 +243,7 @@ msgstr "Obligatorisk för" #. TRANSLATORS: "convert" command in ascli. "Collection XML" is a term describing a specific type of AppStream XML data. -#: tools/appstream-cli.c:619 +#: tools/appstream-cli.c:711 msgid "Convert collection XML to YAML or vice versa." msgstr "Konvertera Collection XML till YAML eller tvärtom." @@ -247,9 +251,9 @@ #: tools/ascli-actions-mdata.c:225 #, c-format msgid "Could not find component providing '%s::%s'." -msgstr "Kunde inte hitta komponent som tillhandahåller ”%s;%s”." +msgstr "Kunde inte hitta komponent som tillhandahåller ”%s::%s”." -#: tools/appstream-cli.c:620 +#: tools/appstream-cli.c:713 msgid "" "Create a template for a metainfo file (to be filled out by the upstream " "project)." @@ -297,7 +301,7 @@ msgid "Developer Tools" msgstr "Utvecklarverktyg" -#: tools/appstream-cli.c:616 +#: tools/appstream-cli.c:708 msgid "Display status information about available AppStream metadata." msgstr "Visa statusinformation om tillgänglig AppStream-metadata." @@ -312,11 +316,11 @@ msgstr "Använd inte nätverksåtkomst." #. TRANSLATORS: ascli flag description for: --no-color -#: tools/appstream-cli.c:657 +#: tools/appstream-cli.c:750 msgid "Don't show colored output." msgstr "Visa inte färgad utdata." -#: tools/appstream-cli.c:607 +#: tools/appstream-cli.c:699 msgid "Dump raw XML metadata for a component matching the ID." msgstr "Dumpa rå XML-metadata för en komponent som matchar ID:t." @@ -433,11 +437,11 @@ msgid "Games" msgstr "Spel" -#: tools/appstream-cli.c:603 +#: tools/appstream-cli.c:695 msgid "Get components which provide the given item." msgstr "Hämta komponenter som tillhandahåller det angivna objektet." -#: tools/appstream-cli.c:602 +#: tools/appstream-cli.c:694 msgid "Get information about a component by its ID." msgstr "Hämta information om en komponent givet dess ID." @@ -472,11 +476,11 @@ msgid "Input Sources" msgstr "Indatakällor" -#: tools/appstream-cli.c:617 +#: tools/appstream-cli.c:709 msgid "Install a metadata file into the right location." msgstr "Installera en metadatafil på rätt plats." -#: tools/appstream-cli.c:613 +#: tools/appstream-cli.c:705 msgid "Install software matching the component-ID." msgstr "Installera programvara som matchar komponent-ID:t." @@ -642,11 +646,11 @@ msgid "Python 3" msgstr "Python 3" -#: tools/appstream-cli.c:608 +#: tools/appstream-cli.c:700 msgid "Rebuild the component metadata cache." msgstr "Bygg om cachen för komponentmetadata." -#: tools/appstream-cli.c:614 +#: tools/appstream-cli.c:706 msgid "Remove software matching the component-ID." msgstr "Ta bort programvara som matchar komponent-ID:t." @@ -660,7 +664,7 @@ msgid "Role Playing" msgstr "Rollspel" -#: tools/appstream-cli.c:185 tools/appstream-cli.c:675 +#: tools/appstream-cli.c:185 tools/appstream-cli.c:768 #, c-format msgid "Run '%s --help' to see a full list of available command line options." msgstr "" @@ -691,7 +695,7 @@ msgid "Science" msgstr "Vetenskap" -#: tools/appstream-cli.c:601 +#: tools/appstream-cli.c:693 msgid "Search the component database." msgstr "Sök i komponentdatabasen." @@ -701,12 +705,12 @@ msgstr "Säkerhet" #. TRANSLATORS: ascli flag description for: --verbose -#: tools/appstream-cli.c:652 +#: tools/appstream-cli.c:745 msgid "Show extra debugging information." msgstr "Visa extra felsökningsinformation." #. TRANSLATORS: ascli flag description for: --version -#: tools/appstream-cli.c:646 +#: tools/appstream-cli.c:739 msgid "Show the program version." msgstr "Visa programversion." @@ -721,7 +725,7 @@ msgstr "Strategi" #. these are commands we can use with appstreamcli -#: tools/appstream-cli.c:599 +#: tools/appstream-cli.c:691 msgid "Subcommands:" msgstr "Subkommandon:" @@ -764,7 +768,7 @@ "leda till saknad metadata. Se den utförliga loggen för mer information." #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand, a bullet-pointed list of types follows -#: tools/appstream-cli.c:565 +#: tools/appstream-cli.c:657 #, c-format msgid "The TYPE must be a valid component-type, such as: %s" msgstr "TYP måste vara en giltig komponenttyp, så som: %s" @@ -778,7 +782,7 @@ "Programvarukomponenttypen ”%s” är inte giltig i AppStream. Möjliga värden är:" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand -#: tools/appstream-cli.c:562 +#: tools/appstream-cli.c:654 msgid "" "This command takes optional TYPE and FILE positional arguments, FILE being a " "file to write to (or \"-\" for standard output)." @@ -799,6 +803,14 @@ "innehåller en specifik MIME-typ och installera den med dess " "programidentifierare." +#: tools/appstream-cli.c:622 +msgid "" +"Too many parameters: Need two version numbers or version numbers and a " +"comparison operator." +msgstr "" +"För många parametrar: Behöver två versionsnummer eller versionsnummer och en " +"jämförelseoperator." + #: tools/ascli-actions-mdata.c:541 #, c-format msgid "Unable to build the template metainfo file: %s" @@ -846,13 +858,19 @@ msgstr "Kunde inte skriva till ”%s”, kan inte installera metainfo-fil." #. TRANSLATORS: ascli has been run with unknown command. -#: tools/appstream-cli.c:750 +#: tools/appstream-cli.c:845 #, c-format msgid "Unknown command '%s'." msgstr "Okänt kommando ”%s”." +#. * TRANSLATORS: The user tried to compare version numbers, but the comparison operator (greater-then, equal, etc.) was invalid. +#: tools/appstream-cli.c:582 +#, c-format +msgid "Unknown compare relation '%s'. Valid values are:" +msgstr "Okänd jämförelserelation ”%s”. Giltiga värden är:" + #. TRANSLATORS: ascli flag description for: --from-desktop (part of the new-template subcommand) -#: tools/appstream-cli.c:557 +#: tools/appstream-cli.c:649 msgid "" "Use the given .desktop file to fill in the basic values of the metainfo file." msgstr "" @@ -864,11 +882,11 @@ msgid "Utilities" msgstr "Verktyg" -#: tools/appstream-cli.c:610 +#: tools/appstream-cli.c:702 msgid "Validate AppStream XML files for issues." msgstr "Genomsök AppStream XML-filer efter fel." -#: tools/appstream-cli.c:611 +#: tools/appstream-cli.c:703 msgid "Validate an installed file-tree of an application for valid metadata." msgstr "" "Genomsök ett installerat filträd för ett program efter giltig metadata." @@ -887,7 +905,7 @@ msgid "Validation was successful: %s" msgstr "Valideringen var framgångsrik: %s" -#: tools/appstream-cli.c:605 +#: tools/appstream-cli.c:697 msgid "Value of the item that should be found." msgstr "Värdet för objektet som borde hittas." @@ -921,7 +939,7 @@ msgid "Word Processor" msgstr "Ordbehandlare" -#: tools/appstream-cli.c:623 +#: tools/appstream-cli.c:716 msgid "" "You can find information about subcommand-specific options by passing \"--" "help\" to the subcommand." @@ -942,8 +960,14 @@ "Du behöver ange en AppStream-programkomponenttyp för att generera en mall. " "Möljiga värden är:" +#: tools/appstream-cli.c:553 +msgid "" +"You need to provide at least two version numbers to compare as parameters." +msgstr "" +"Du måste tillhandahålla minst två versionsnummer att jämföra som parametrar." + #. TRANSLATORS: ascli has been run without command. -#: tools/appstream-cli.c:674 +#: tools/appstream-cli.c:767 msgid "You need to specify a command." msgstr "Du måste specificera ett kommando." diff -Nru appstream-0.12.0/po/tr.po appstream-0.12.2/po/tr.po --- appstream-0.12.0/po/tr.po 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/po/tr.po 2018-08-04 07:39:44.000000000 +0000 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: AppStream\n" "Report-Msgid-Bugs-To: appstream@lists.freedesktop.org\n" -"POT-Creation-Date: 2018-04-04 17:28+0200\n" +"POT-Creation-Date: 2018-06-10 15:36+0200\n" "PO-Revision-Date: 2017-03-25 16:36+0000\n" "Last-Translator: Muhammet Kara \n" "Language-Team: Turkish \n" "Language-Team: Ukrainian \n" @@ -15,9 +15,9 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 2.20-dev\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=" +"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 3.0\n" #: tools/appstream-cli.c:146 #, c-format @@ -50,7 +50,7 @@ msgid "Also show pedantic hints." msgstr "Також виводити підказки щодо найдрібніших неточностей." -#: tools/appstream-cli.c:604 +#: tools/appstream-cli.c:696 msgid "An item type (e.g. lib, bin, python3, …)" msgstr "Тип запису (наприклад lib, bin, python3, ...)" @@ -63,7 +63,7 @@ msgstr "Командний рядок AppStream" #. TRANSLATORS: Output if appstreamcli --version is run and the CLI and libappstream versions differ. -#: tools/appstream-cli.c:696 +#: tools/appstream-cli.c:789 #, c-format msgid "" "AppStream CLI tool version: %s\n" @@ -99,7 +99,7 @@ #. TRANSLATORS: This is the header to the --help menu for subcommands #. TRANSLATORS: This is the header to the --help menu -#: tools/appstream-cli.c:143 tools/appstream-cli.c:597 +#: tools/appstream-cli.c:143 tools/appstream-cli.c:689 msgid "AppStream command-line interface" msgstr "Інтерфейс командного рядка AppStream" @@ -117,7 +117,7 @@ msgstr "Кеш системи AppStream оновлено, але виявлено проблеми: %s" #. TRANSLATORS: Output if appstreamcli --version is executed. -#: tools/appstream-cli.c:693 +#: tools/appstream-cli.c:786 #, c-format msgid "AppStream version: %s" msgstr "Версія AppStream: %s" @@ -223,6 +223,10 @@ msgid "Communication & News" msgstr "Спілкування і новини" +#: tools/appstream-cli.c:712 +msgid "Compare two version numbers." +msgstr "Порівняти два номери версій." + #: src/as-provided.c:167 msgid "Component" msgstr "Компонент" @@ -238,7 +242,7 @@ msgstr "Обов’язкове для" #. TRANSLATORS: "convert" command in ascli. "Collection XML" is a term describing a specific type of AppStream XML data. -#: tools/appstream-cli.c:619 +#: tools/appstream-cli.c:711 msgid "Convert collection XML to YAML or vice versa." msgstr "Перетворити XML збірки на YAML або навпаки." @@ -248,7 +252,7 @@ msgid "Could not find component providing '%s::%s'." msgstr "Не вдалося знайти компонент, що містить «%s::%s»." -#: tools/appstream-cli.c:620 +#: tools/appstream-cli.c:713 msgid "" "Create a template for a metainfo file (to be filled out by the upstream " "project)." @@ -296,7 +300,7 @@ msgid "Developer Tools" msgstr "Інструменти розробника" -#: tools/appstream-cli.c:616 +#: tools/appstream-cli.c:708 msgid "Display status information about available AppStream metadata." msgstr "Вивести дані щодо стану доступних метаданих AppStream." @@ -311,11 +315,11 @@ msgstr "Не використовувати доступ до мережі." #. TRANSLATORS: ascli flag description for: --no-color -#: tools/appstream-cli.c:657 +#: tools/appstream-cli.c:750 msgid "Don't show colored output." msgstr "Не розфарбовувати виведені дані." -#: tools/appstream-cli.c:607 +#: tools/appstream-cli.c:699 msgid "Dump raw XML metadata for a component matching the ID." msgstr "" "Створити дамп необроблених метаданих XML для компонента з відповідним " @@ -434,11 +438,11 @@ msgid "Games" msgstr "Ігри" -#: tools/appstream-cli.c:603 +#: tools/appstream-cli.c:695 msgid "Get components which provide the given item." msgstr "Отримати компоненти, які надають вказаний запис." -#: tools/appstream-cli.c:602 +#: tools/appstream-cli.c:694 msgid "Get information about a component by its ID." msgstr "Отримати інформацію щодо компонента за його ідентифікатором." @@ -473,11 +477,11 @@ msgid "Input Sources" msgstr "Вхідні коди" -#: tools/appstream-cli.c:617 +#: tools/appstream-cli.c:709 msgid "Install a metadata file into the right location." msgstr "Встановити файл метаданих у належному місці." -#: tools/appstream-cli.c:613 +#: tools/appstream-cli.c:705 msgid "Install software matching the component-ID." msgstr "" "Встановити програмне забезпечення, що відповідає ідентифікатору компонента." @@ -644,11 +648,11 @@ msgid "Python 3" msgstr "Python 3" -#: tools/appstream-cli.c:608 +#: tools/appstream-cli.c:700 msgid "Rebuild the component metadata cache." msgstr "Перебудувати кеш метаданих щодо компонентів." -#: tools/appstream-cli.c:614 +#: tools/appstream-cli.c:706 msgid "Remove software matching the component-ID." msgstr "Вилучити програмне забезпечення, вказане ідентифікатором компонента." @@ -662,7 +666,7 @@ msgid "Role Playing" msgstr "Рольові ігри" -#: tools/appstream-cli.c:185 tools/appstream-cli.c:675 +#: tools/appstream-cli.c:185 tools/appstream-cli.c:768 #, c-format msgid "Run '%s --help' to see a full list of available command line options." msgstr "" @@ -693,7 +697,7 @@ msgid "Science" msgstr "Наука" -#: tools/appstream-cli.c:601 +#: tools/appstream-cli.c:693 msgid "Search the component database." msgstr "Шукати у базі даних компонентів." @@ -703,12 +707,12 @@ msgstr "Безпека" #. TRANSLATORS: ascli flag description for: --verbose -#: tools/appstream-cli.c:652 +#: tools/appstream-cli.c:745 msgid "Show extra debugging information." msgstr "Вивести додаткові діагностичні дані." #. TRANSLATORS: ascli flag description for: --version -#: tools/appstream-cli.c:646 +#: tools/appstream-cli.c:739 msgid "Show the program version." msgstr "Вивести дані щодо версії програми." @@ -723,7 +727,7 @@ msgstr "Стратегії" #. these are commands we can use with appstreamcli -#: tools/appstream-cli.c:599 +#: tools/appstream-cli.c:691 msgid "Subcommands:" msgstr "Підкоманди:" @@ -767,7 +771,7 @@ "дізнатися про це більше." #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand, a bullet-pointed list of types follows -#: tools/appstream-cli.c:565 +#: tools/appstream-cli.c:657 #, c-format msgid "The TYPE must be a valid component-type, such as: %s" msgstr "Значенням ТИП має бути коректний запис компонент-тип, зокрема: %s" @@ -782,7 +786,7 @@ "Коректні типи:" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand -#: tools/appstream-cli.c:562 +#: tools/appstream-cli.c:654 msgid "" "This command takes optional TYPE and FILE positional arguments, FILE being a " "file to write to (or \"-\" for standard output)." @@ -805,6 +809,14 @@ "певного типу MIME та його встановлення за ідентифікатором компонента " "програмного забезпечення." +#: tools/appstream-cli.c:622 +msgid "" +"Too many parameters: Need two version numbers or version numbers and a " +"comparison operator." +msgstr "" +"Забагато параметрів: слід вказати два номери версій або номери версій і " +"оператор порівняння." + #: tools/ascli-actions-mdata.c:541 #, c-format msgid "Unable to build the template metainfo file: %s" @@ -853,13 +865,19 @@ "Не вдалося виконати запис до «%s», не вдалося встановити файл metainfo." #. TRANSLATORS: ascli has been run with unknown command. -#: tools/appstream-cli.c:750 +#: tools/appstream-cli.c:845 #, c-format msgid "Unknown command '%s'." msgstr "Невідома команда «%s»." +#. * TRANSLATORS: The user tried to compare version numbers, but the comparison operator (greater-then, equal, etc.) was invalid. +#: tools/appstream-cli.c:582 +#, c-format +msgid "Unknown compare relation '%s'. Valid values are:" +msgstr "Невідоме співвідношення порівняння, «%s». Коректними значеннями є такі:" + #. TRANSLATORS: ascli flag description for: --from-desktop (part of the new-template subcommand) -#: tools/appstream-cli.c:557 +#: tools/appstream-cli.c:649 msgid "" "Use the given .desktop file to fill in the basic values of the metainfo file." msgstr "" @@ -871,11 +889,11 @@ msgid "Utilities" msgstr "Інструменти" -#: tools/appstream-cli.c:610 +#: tools/appstream-cli.c:702 msgid "Validate AppStream XML files for issues." msgstr "Перевірити файли XML AppStream на вади." -#: tools/appstream-cli.c:611 +#: tools/appstream-cli.c:703 msgid "Validate an installed file-tree of an application for valid metadata." msgstr "" "Перевіряти на коректність метаданих усю встановлену ієрархію файлів програми." @@ -894,7 +912,7 @@ msgid "Validation was successful: %s" msgstr "Перевірку пройдено: %s" -#: tools/appstream-cli.c:605 +#: tools/appstream-cli.c:697 msgid "Value of the item that should be found." msgstr "Значення запису, який має бути знайдено." @@ -928,7 +946,7 @@ msgid "Word Processor" msgstr "Текстові процесори" -#: tools/appstream-cli.c:623 +#: tools/appstream-cli.c:716 msgid "" "You can find information about subcommand-specific options by passing \"--" "help\" to the subcommand." @@ -949,8 +967,14 @@ "Для створення шаблона вам слід вказати тип компонента програмного " "забезпечення у AppStream. Можливі значення типу:" +#: tools/appstream-cli.c:553 +msgid "" +"You need to provide at least two version numbers to compare as parameters." +msgstr "" +"Для порівняння вам слід вказати принаймні два номери версій як параметри." + #. TRANSLATORS: ascli has been run without command. -#: tools/appstream-cli.c:674 +#: tools/appstream-cli.c:767 msgid "You need to specify a command." msgstr "Вам слід вказати команду." diff -Nru appstream-0.12.0/po/zh_CN.po appstream-0.12.2/po/zh_CN.po --- appstream-0.12.0/po/zh_CN.po 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/po/zh_CN.po 2018-08-04 07:39:44.000000000 +0000 @@ -12,7 +12,7 @@ msgstr "" "Project-Id-Version: AppStream\n" "Report-Msgid-Bugs-To: appstream@lists.freedesktop.org\n" -"POT-Creation-Date: 2018-04-04 17:28+0200\n" +"POT-Creation-Date: 2018-06-10 15:36+0200\n" "PO-Revision-Date: 2017-12-02 15:44+0000\n" "Last-Translator: Dingzhong Chen \n" "Language-Team: Chinese (Simplified) \n" "Language-Team: Chinese (Traditional) \n" @@ -18,7 +18,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 2.20-dev\n" +"X-Generator: Weblate 3.1-dev\n" #: tools/appstream-cli.c:146 #, c-format @@ -51,7 +51,7 @@ msgid "Also show pedantic hints." msgstr "也列印詳盡的提示。" -#: tools/appstream-cli.c:604 +#: tools/appstream-cli.c:696 msgid "An item type (e.g. lib, bin, python3, …)" msgstr "項目類型(例:lib、bin、python3…等)" @@ -64,7 +64,7 @@ msgstr "AppStream 命令列介面" #. TRANSLATORS: Output if appstreamcli --version is run and the CLI and libappstream versions differ. -#: tools/appstream-cli.c:696 +#: tools/appstream-cli.c:789 #, c-format msgid "" "AppStream CLI tool version: %s\n" @@ -98,7 +98,7 @@ #. TRANSLATORS: This is the header to the --help menu for subcommands #. TRANSLATORS: This is the header to the --help menu -#: tools/appstream-cli.c:143 tools/appstream-cli.c:597 +#: tools/appstream-cli.c:143 tools/appstream-cli.c:689 msgid "AppStream command-line interface" msgstr "AppStream 指令列介面" @@ -114,7 +114,7 @@ msgstr "AppStream 系統快取已更新,但發現一些問題:%s" #. TRANSLATORS: Output if appstreamcli --version is executed. -#: tools/appstream-cli.c:693 +#: tools/appstream-cli.c:786 #, c-format msgid "AppStream version: %s" msgstr "AppStream 版本:%s" @@ -218,6 +218,10 @@ msgid "Communication & News" msgstr "溝通和新聞" +#: tools/appstream-cli.c:712 +msgid "Compare two version numbers." +msgstr "比較兩個版本號。" + #: src/as-provided.c:167 msgid "Component" msgstr "組件" @@ -233,7 +237,7 @@ msgstr "強制項目為" #. TRANSLATORS: "convert" command in ascli. "Collection XML" is a term describing a specific type of AppStream XML data. -#: tools/appstream-cli.c:619 +#: tools/appstream-cli.c:711 msgid "Convert collection XML to YAML or vice versa." msgstr "將收藏集 XML 轉換成 YAML,或是相反。" @@ -243,7 +247,7 @@ msgid "Could not find component providing '%s::%s'." msgstr "找不到提供「%s::%s」的組件。" -#: tools/appstream-cli.c:620 +#: tools/appstream-cli.c:713 msgid "" "Create a template for a metainfo file (to be filled out by the upstream " "project)." @@ -290,7 +294,7 @@ msgid "Developer Tools" msgstr "開發者工具" -#: tools/appstream-cli.c:616 +#: tools/appstream-cli.c:708 msgid "Display status information about available AppStream metadata." msgstr "顯示可用的 AppStream 中介資料相關狀態資訊。" @@ -305,11 +309,11 @@ msgstr "不使用網路存取。" #. TRANSLATORS: ascli flag description for: --no-color -#: tools/appstream-cli.c:657 +#: tools/appstream-cli.c:750 msgid "Don't show colored output." msgstr "不要顯示色彩化的輸出。" -#: tools/appstream-cli.c:607 +#: tools/appstream-cli.c:699 msgid "Dump raw XML metadata for a component matching the ID." msgstr "傾印符合該 ID 的組件原生 XML 中介資料。" @@ -426,11 +430,11 @@ msgid "Games" msgstr "遊戲" -#: tools/appstream-cli.c:603 +#: tools/appstream-cli.c:695 msgid "Get components which provide the given item." msgstr "取得提供指定項目的組件。" -#: tools/appstream-cli.c:602 +#: tools/appstream-cli.c:694 msgid "Get information about a component by its ID." msgstr "根據 ID 取得組件的資訊。" @@ -465,11 +469,11 @@ msgid "Input Sources" msgstr "輸入來源" -#: tools/appstream-cli.c:617 +#: tools/appstream-cli.c:709 msgid "Install a metadata file into the right location." msgstr "安裝中介資料檔到適當位置。" -#: tools/appstream-cli.c:613 +#: tools/appstream-cli.c:705 msgid "Install software matching the component-ID." msgstr "安裝符合組件 ID 的軟體。" @@ -635,11 +639,11 @@ msgid "Python 3" msgstr "Python 3" -#: tools/appstream-cli.c:608 +#: tools/appstream-cli.c:700 msgid "Rebuild the component metadata cache." msgstr "重建組件的中介資料快取。" -#: tools/appstream-cli.c:614 +#: tools/appstream-cli.c:706 msgid "Remove software matching the component-ID." msgstr "移除符合該組件 ID 的軟體。" @@ -653,7 +657,7 @@ msgid "Role Playing" msgstr "角色扮演" -#: tools/appstream-cli.c:185 tools/appstream-cli.c:675 +#: tools/appstream-cli.c:185 tools/appstream-cli.c:768 #, c-format msgid "Run '%s --help' to see a full list of available command line options." msgstr "執行「%s --help」查看可用指令列選項的完整清單。" @@ -681,7 +685,7 @@ msgid "Science" msgstr "科學" -#: tools/appstream-cli.c:601 +#: tools/appstream-cli.c:693 msgid "Search the component database." msgstr "搜尋組件資料庫。" @@ -691,12 +695,12 @@ msgstr "安全" #. TRANSLATORS: ascli flag description for: --verbose -#: tools/appstream-cli.c:652 +#: tools/appstream-cli.c:745 msgid "Show extra debugging information." msgstr "顯示額外除錯資訊。" #. TRANSLATORS: ascli flag description for: --version -#: tools/appstream-cli.c:646 +#: tools/appstream-cli.c:739 msgid "Show the program version." msgstr "顯示程式版本。" @@ -711,7 +715,7 @@ msgstr "策略" #. these are commands we can use with appstreamcli -#: tools/appstream-cli.c:599 +#: tools/appstream-cli.c:691 msgid "Subcommands:" msgstr "子指令:" @@ -754,7 +758,7 @@ "式記錄瞭解更多資訊。" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand, a bullet-pointed list of types follows -#: tools/appstream-cli.c:565 +#: tools/appstream-cli.c:657 #, c-format msgid "The TYPE must be a valid component-type, such as: %s" msgstr "TYPE 必須是有效組件類型,例如:%s" @@ -767,7 +771,7 @@ msgstr "「%s」軟體組件類型在 AppStream 中無效。可用的值有:" #. TRANSLATORS: Additional help text for the 'new-template' ascli subcommand -#: tools/appstream-cli.c:562 +#: tools/appstream-cli.c:654 msgid "" "This command takes optional TYPE and FILE positional arguments, FILE being a " "file to write to (or \"-\" for standard output)." @@ -786,6 +790,12 @@ "介資料池,搜尋諸如提供某特定 MIME 類型使用的軟體,並按照其軟體組件辨識碼安裝" "等。" +#: tools/appstream-cli.c:622 +msgid "" +"Too many parameters: Need two version numbers or version numbers and a " +"comparison operator." +msgstr "過多參數:需要的只有兩個版本號,或是版號加比較操作符。" + #: tools/ascli-actions-mdata.c:541 #, c-format msgid "Unable to build the template metainfo file: %s" @@ -831,13 +841,19 @@ msgstr "無法寫入「%s」,無法安裝中介資料檔。" #. TRANSLATORS: ascli has been run with unknown command. -#: tools/appstream-cli.c:750 +#: tools/appstream-cli.c:845 #, c-format msgid "Unknown command '%s'." msgstr "未知指令「%s」。" +#. * TRANSLATORS: The user tried to compare version numbers, but the comparison operator (greater-then, equal, etc.) was invalid. +#: tools/appstream-cli.c:582 +#, c-format +msgid "Unknown compare relation '%s'. Valid values are:" +msgstr "未知比較關係「%s」。有效的值有:" + #. TRANSLATORS: ascli flag description for: --from-desktop (part of the new-template subcommand) -#: tools/appstream-cli.c:557 +#: tools/appstream-cli.c:649 msgid "" "Use the given .desktop file to fill in the basic values of the metainfo file." msgstr "使用給定的 .deskotp 檔以在中介資訊檔中填入基礎值。" @@ -847,11 +863,11 @@ msgid "Utilities" msgstr "公用程式" -#: tools/appstream-cli.c:610 +#: tools/appstream-cli.c:702 msgid "Validate AppStream XML files for issues." msgstr "驗證 AppStream XML 檔是否有問題。" -#: tools/appstream-cli.c:611 +#: tools/appstream-cli.c:703 msgid "Validate an installed file-tree of an application for valid metadata." msgstr "驗證已安裝應用程式的檔案樹是否存在有效的中介資料。" @@ -869,7 +885,7 @@ msgid "Validation was successful: %s" msgstr "驗證成功:%s" -#: tools/appstream-cli.c:605 +#: tools/appstream-cli.c:697 msgid "Value of the item that should be found." msgstr "應找到的項目值。" @@ -903,7 +919,7 @@ msgid "Word Processor" msgstr "文書處理器" -#: tools/appstream-cli.c:623 +#: tools/appstream-cli.c:716 msgid "" "You can find information about subcommand-specific options by passing \"--" "help\" to the subcommand." @@ -920,8 +936,13 @@ "template. Possible values are:" msgstr "您需要給予 AppStream 軟體組件類型以生成範本。可用的值有:" +#: tools/appstream-cli.c:553 +msgid "" +"You need to provide at least two version numbers to compare as parameters." +msgstr "您需要提供至少兩個版本號作為參數比較。" + #. TRANSLATORS: ascli has been run without command. -#: tools/appstream-cli.c:674 +#: tools/appstream-cli.c:767 msgid "You need to specify a command." msgstr "您需要指定個指令。" diff -Nru appstream-0.12.0/qt/component.cpp appstream-0.12.2/qt/component.cpp --- appstream-0.12.0/qt/component.cpp 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/qt/component.cpp 2018-08-04 07:39:44.000000000 +0000 @@ -50,6 +50,8 @@ { Component::KindFirmware, QLatin1String("firmware") }, { Component::KindDriver, QLatin1String("driver") }, { Component::KindLocalization, QLatin1String("localization") }, + { Component::KindService, QLatin1String("service") }, + { Component::KindRepository, QLatin1String("repository") }, { Component::KindUnknown, QLatin1String("unknown") } } )); @@ -95,6 +97,12 @@ if (kindString == QLatin1String("localization")) return KindLocalization; + if (kindString == QLatin1String("service")) + return KindService; + + if (kindString == QLatin1String("repository")) + return KindRepository; + return KindUnknown; } diff -Nru appstream-0.12.0/qt/component.h appstream-0.12.2/qt/component.h --- appstream-0.12.0/qt/component.h 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/qt/component.h 2018-08-04 07:39:44.000000000 +0000 @@ -62,7 +62,9 @@ KindInputmethod, KindFirmware, KindDriver, - KindLocalization + KindLocalization, + KindService, + KindRepository }; Q_ENUM(Kind) diff -Nru appstream-0.12.0/qt/meson.build appstream-0.12.2/qt/meson.build --- appstream-0.12.0/qt/meson.build 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/qt/meson.build 2018-08-04 07:39:44.000000000 +0000 @@ -50,6 +50,11 @@ #moc_sources: asqt_src ) +asqt_cpp_args = [] +if get_option('maintainer') + asqt_cpp_args = ['-Wno-inline'] +endif + appstreamqt_lib = library ('AppStreamQt', [asqt_src, asqt_pub_headers, @@ -63,6 +68,7 @@ gio_dep], link_with: [appstream_lib], include_directories: [appstream_lib_inc], + cpp_args: asqt_cpp_args, install: true ) diff -Nru appstream-0.12.0/qt/tests/asqt-pool-test.cpp appstream-0.12.2/qt/tests/asqt-pool-test.cpp --- appstream-0.12.0/qt/tests/asqt-pool-test.cpp 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/qt/tests/asqt-pool-test.cpp 2018-08-04 07:39:44.000000000 +0000 @@ -52,7 +52,7 @@ QVERIFY(pool->load()); auto cpts = pool->components(); - QCOMPARE(cpts.size(), 18); + QCOMPARE(cpts.size(), 19); cpts = pool->componentsById("org.neverball.Neverball"); QCOMPARE(cpts.size(), 1); diff -Nru appstream-0.12.0/qt/tests/meson.build appstream-0.12.2/qt/tests/meson.build --- appstream-0.12.0/qt/tests/meson.build 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/qt/tests/meson.build 2018-08-04 07:39:44.000000000 +0000 @@ -18,6 +18,7 @@ dependencies: [qt5_test_dep], include_directories: [include_directories('..')], link_with: [appstreamqt_lib], + cpp_args: asqt_cpp_args ) test ('as-test_qt', as_test_qt_exe, diff -Nru appstream-0.12.0/RELEASE appstream-0.12.2/RELEASE --- appstream-0.12.0/RELEASE 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/RELEASE 2018-08-04 07:39:44.000000000 +0000 @@ -2,10 +2,10 @@ 1. Write NEWS entries for AppStream in the same format as usual. -git shortlog APPSTREAM_0_11_8.. | grep -i -v trivial | grep -v Merge > NEWS.new +git shortlog APPSTREAM_0_12_1.. | grep -i -v trivial | grep -v Merge > NEWS.new -------------------------------------------------------------------------------- -Version 0.12.0 +Version 0.12.2 ~~~~~~~~~~~~~~ Released: 2018-xx-xx @@ -24,12 +24,12 @@ 3. Commit changes in AppStream git: -git commit -a -m "Release version 0.12.0" -git tag -s -f -m "Release 0.12.0" APPSTREAM_0_12_0 +git commit -a -m "Release version 0.12.2" +git tag -s -f -m "Release 0.12.2" APPSTREAM_0_12_2 git push --tags git push -4. run './release.sh --version=0.12.0 --git-tag=APPSTREAM_0_12_0 --sign' +4. run './release.sh --version=0.12.2 --git-tag=APPSTREAM_0_12_2 --sign' 5. Upload tarball: scp -r *.tar.xz* annarchy.freedesktop.org:/srv/www.freedesktop.org/www/software/appstream/releases @@ -46,7 +46,7 @@ 9. Send an email to appstream@lists.freedesktop.org ================================================= -AppStream 0.12.0 released! +AppStream 0.12.2 released! Tarballs available here: http://www.freedesktop.org/software/appstream/releases diff -Nru appstream-0.12.0/src/as-agreement.c appstream-0.12.2/src/as-agreement.c --- appstream-0.12.0/src/as-agreement.c 1970-01-01 00:00:00.000000000 +0000 +++ appstream-0.12.2/src/as-agreement.c 2018-08-04 07:39:44.000000000 +0000 @@ -0,0 +1,521 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Richard Hughes + * Copyright (C) 2018 Matthias Klumpp + * + * Licensed under the GNU Lesser General Public License Version 2.1 + * + * This library is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 2.1 of the license, or + * (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library. If not, see . + */ + +/** + * SECTION:as-agreement + * @short_description: Object representing a privacy policy + * @include: appstream-glib.h + * @stability: Unstable + * + * Agreements can be used by components to specify GDPR, EULA or other warnings. + * + * See also: #AsAgreementSection + */ + +#include "config.h" + +#include "as-agreement-private.h" +#include "as-agreement-section-private.h" + +typedef struct { + AsAgreementKind kind; + gchar *version_id; + GPtrArray *sections; + + AsContext *context; +} AsAgreementPrivate; + +G_DEFINE_TYPE_WITH_PRIVATE (AsAgreement, as_agreement, G_TYPE_OBJECT) + +#define GET_PRIVATE(o) (as_agreement_get_instance_private (o)) + +static void +as_agreement_finalize (GObject *object) +{ + AsAgreement *agreement = AS_AGREEMENT (object); + AsAgreementPrivate *priv = GET_PRIVATE (agreement); + + g_free (priv->version_id); + g_ptr_array_unref (priv->sections); + + if (priv->context != NULL) + g_object_unref (priv->context); + + G_OBJECT_CLASS (as_agreement_parent_class)->finalize (object); +} + +static void +as_agreement_init (AsAgreement *agreement) +{ + AsAgreementPrivate *priv = GET_PRIVATE (agreement); + priv->sections = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref); +} + +static void +as_agreement_class_init (AsAgreementClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + object_class->finalize = as_agreement_finalize; +} + +/** + * as_agreement_kind_to_string: + * @value: the #AsAgreementKind. + * + * Converts the enumerated value to an text representation. + * + * Returns: string version of @value + * + * Since: 0.12.1 + **/ +const gchar* +as_agreement_kind_to_string (AsAgreementKind value) +{ + if (value == AS_AGREEMENT_KIND_GENERIC) + return "generic"; + if (value == AS_AGREEMENT_KIND_EULA) + return "eula"; + if (value == AS_AGREEMENT_KIND_PRIVACY) + return "privacy"; + return "unknown"; +} + +/** + * as_agreement_kind_from_string: + * @value: the string. + * + * Converts the text representation to an enumerated value. + * + * Returns: a #AsAgreementKind or %AS_AGREEMENT_KIND_UNKNOWN for unknown + * + * Since: 0.12.1 + **/ +AsAgreementKind +as_agreement_kind_from_string (const gchar *value) +{ + if (value == NULL || g_strcmp0 (value, "") == 0) + return AS_AGREEMENT_KIND_GENERIC; + if (g_strcmp0 (value, "generic") == 0) + return AS_AGREEMENT_KIND_GENERIC; + if (g_strcmp0 (value, "eula") == 0) + return AS_AGREEMENT_KIND_EULA; + if (g_strcmp0 (value, "privacy") == 0) + return AS_AGREEMENT_KIND_PRIVACY; + return AS_AGREEMENT_KIND_UNKNOWN; +} + +/** + * as_agreement_get_kind: + * @agreement: a #AsAgreement instance. + * + * Gets the agreement kind. + * + * Returns: a string, e.g. %AS_AGREEMENT_KIND_EULA + * + * Since: 0.12.1 + **/ +AsAgreementKind +as_agreement_get_kind (AsAgreement *agreement) +{ + AsAgreementPrivate *priv = GET_PRIVATE (agreement); + return priv->kind; +} + +/** + * as_agreement_set_kind: + * @agreement: a #AsAgreement instance. + * @kind: the agreement kind, e.g. %AS_AGREEMENT_KIND_EULA + * + * Sets the agreement kind. + * + * Since: 0.12.1 + **/ +void +as_agreement_set_kind (AsAgreement *agreement, AsAgreementKind kind) +{ + AsAgreementPrivate *priv = GET_PRIVATE (agreement); + priv->kind = kind; +} + +/** + * as_agreement_get_version_id: + * @agreement: a #AsAgreement instance. + * + * Gets the agreement version_id. + * + * Returns: a string, e.g. "1.4a", or NULL + * + * Since: 0.12.1 + **/ +const gchar* +as_agreement_get_version_id (AsAgreement *agreement) +{ + AsAgreementPrivate *priv = GET_PRIVATE (agreement); + return priv->version_id; +} + +/** + * as_agreement_set_version_id: + * @agreement: a #AsAgreement instance. + * @version_id: the agreement version ID, e.g. "1.4a" + * + * Sets the agreement version identifier. + * + * Since: 0.12.1 + **/ +void +as_agreement_set_version_id (AsAgreement *agreement, const gchar *version_id) +{ + AsAgreementPrivate *priv = GET_PRIVATE (agreement); + + g_free (priv->version_id); + priv->version_id = g_strdup (version_id); +} + +/** + * as_agreement_get_sections: + * @agreement: a #AsAgreement instance. + * + * Gets all the sections in the agreement. + * + * Returns: (transfer container) (element-type AsAgreementSection): array + * + * Since: 0.12.1 + **/ +GPtrArray* +as_agreement_get_sections (AsAgreement *agreement) +{ + AsAgreementPrivate *priv = GET_PRIVATE (agreement); + return priv->sections; +} + +/** + * as_agreement_get_section_default: + * @agreement: a #AsAgreement instance. + * + * Gets the first section in the agreement. + * + * Returns: (transfer none): agreement section, or %NULL + * + * Since: 0.12.1 + **/ +AsAgreementSection * +as_agreement_get_section_default (AsAgreement *agreement) +{ + AsAgreementPrivate *priv = GET_PRIVATE (agreement); + if (priv->sections->len == 0) + return NULL; + return AS_AGREEMENT_SECTION (g_ptr_array_index (priv->sections, 0)); +} + +/** + * as_agreement_add_detail: + * @agreement: a #AsAgreement instance. + * @agreement_section: a #AsAgreementSection instance. + * + * Adds a section to the agreement. + * + * Since: 0.12.1 + **/ +void +as_agreement_add_section (AsAgreement *agreement, AsAgreementSection *agreement_section) +{ + AsAgreementPrivate *priv = GET_PRIVATE (agreement); + g_ptr_array_add (priv->sections, g_object_ref (agreement_section)); +} + +/** + * as_agreement_get_context: + * @agreement: An instance of #AsAgreement. + * + * Returns: the #AsContext associated with this agreement. + * This function may return %NULL if no context is set. + * + * Since: 0.12.1 + */ +AsContext* +as_agreement_get_context (AsAgreement *agreement) +{ + AsAgreementPrivate *priv = GET_PRIVATE (agreement); + return priv->context; +} + +/** + * as_agreement_set_context: + * @agreement: An instance of #AsAgreement. + * @context: the #AsContext. + * + * Sets the document context this agreement is associated + * with. + * + * Since: 0.12.1 + */ +void +as_agreement_set_context (AsAgreement *agreement, AsContext *context) +{ + AsAgreementPrivate *priv = GET_PRIVATE (agreement); + if (priv->context != NULL) + g_object_unref (priv->context); + priv->context = g_object_ref (context); +} + +/** + * as_agreement_load_from_xml: + * @agreement: an #AsAgreement + * @ctx: the AppStream document context. + * @node: the XML node. + * @error: a #GError. + * + * Loads data from an XML node. + **/ +gboolean +as_agreement_load_from_xml (AsAgreement *agreement, AsContext *ctx, xmlNode *node, GError **error) +{ + AsAgreementPrivate *priv = GET_PRIVATE (agreement); + xmlNode *iter; + gchar *prop; + + /* propagate context */ + as_agreement_set_context (agreement, ctx); + + prop = (gchar*) xmlGetProp (node, (xmlChar*) "type"); + if (prop != NULL) { + priv->kind = as_agreement_kind_from_string (prop); + g_free (prop); + } + + prop = (gchar*) xmlGetProp (node, (xmlChar*) "version_id"); + if (prop != NULL) { + as_agreement_set_version_id (agreement, prop); + g_free (prop); + } + + /* read agreement sections */ + for (iter = node->children; iter != NULL; iter = iter->next) { + if (iter->type != XML_ELEMENT_NODE) + continue; + + if (g_strcmp0 ((gchar*) iter->name, "agreement_section") == 0) { + g_autoptr(AsAgreementSection) asection = as_agreement_section_new (); + + if (!as_agreement_section_load_from_xml (asection, priv->context, iter, error)) + return FALSE; + as_agreement_add_section (agreement, asection); + } + } + + return TRUE; +} + +/** + * as_agreement_to_xml_node: + * @agreement: an #AsAgreement + * @ctx: the AppStream document context. + * @root: XML node to attach the new nodes to. + * + * Serializes the data to an XML node. + **/ +void +as_agreement_to_xml_node (AsAgreement *agreement, AsContext *ctx, xmlNode *root) +{ + AsAgreementPrivate *priv = GET_PRIVATE (agreement); + xmlNode *agnode; + guint i; + + agnode = xmlNewChild (root, NULL, (xmlChar*) "agreement", (xmlChar*) ""); + xmlNewProp (agnode, (xmlChar*) "type", + (xmlChar*) as_agreement_kind_to_string (priv->kind)); + xmlNewProp (agnode, (xmlChar*) "version_id", (xmlChar*) priv->version_id); + + for (i = 0; i < priv->sections->len; i++) { + AsAgreementSection *agsec = AS_AGREEMENT_SECTION (g_ptr_array_index (priv->sections, i)); + as_agreement_section_to_xml_node (agsec, ctx, agnode); + } +} + +/** + * as_agreement_load_from_yaml: + * @agreement: an #AsAgreement + * @ctx: the AppStream document context. + * @node: the YAML node. + * @error: a #GError. + * + * Loads data from a YAML field. + **/ +gboolean +as_agreement_load_from_yaml (AsAgreement *agreement, AsContext *ctx, GNode *node, GError **error) +{ + AsAgreementPrivate *priv = GET_PRIVATE (agreement); + GNode *n; + + /* propagate context */ + as_agreement_set_context (agreement, ctx); + + for (n = node->children; n != NULL; n = n->next) { + const gchar *key = as_yaml_node_get_key (n); + const gchar *value = as_yaml_node_get_value (n); + + if (g_strcmp0 (key, "type") == 0) { + priv->kind = as_agreement_kind_from_string (value); + } else if (g_strcmp0 (key, "version_id") == 0) { + as_agreement_set_version_id (agreement, value); + } else if (g_strcmp0 (key, "sections") == 0) { + GNode *sn; + + for (sn = n->children; sn != NULL; sn = sn->next) { + g_autoptr(AsAgreementSection) asec = as_agreement_section_new (); + + if (!as_agreement_section_load_from_yaml (asec, ctx, sn, error)) + return FALSE; + as_agreement_add_section (agreement, asec); + } + } else { + as_yaml_print_unknown ("agreement", key); + } + } + + return TRUE; +} + +/** + * as_agreement_emit_yaml: + * @agreement: an #AsAgreement + * @ctx: the AppStream document context. + * @emitter: The YAML emitter to emit data on. + * + * Emit YAML data for this object. + **/ +void +as_agreement_emit_yaml (AsAgreement *agreement, AsContext *ctx, yaml_emitter_t *emitter) +{ + AsAgreementPrivate *priv = GET_PRIVATE (agreement); + + /* start mapping for this agreement */ + as_yaml_mapping_start (emitter); + + /* type */ + as_yaml_emit_entry (emitter, "type", as_agreement_kind_to_string (priv->kind)); + + /* version */ + as_yaml_emit_entry (emitter, "version_id", priv->version_id); + + + + as_yaml_emit_scalar (emitter, "sections"); + as_yaml_sequence_start (emitter); + for (guint i = 0; i < priv->sections->len; i++) { + AsAgreementSection *asec = AS_AGREEMENT_SECTION (g_ptr_array_index (priv->sections, i)); + as_agreement_section_emit_yaml (asec, ctx, emitter); + } + as_yaml_sequence_end (emitter); + + /* end mapping for the agreement */ + as_yaml_mapping_end (emitter); +} + +/** + * as_agreement_to_variant: + * @agreement: an #AsAgreement + * @builder: A #GVariantBuilder + * + * Serialize the current active state of this object to a GVariant + * for use in the on-disk binary cache. + */ +void +as_agreement_to_variant (AsAgreement *agreement, GVariantBuilder *builder) +{ + AsAgreementPrivate *priv = GET_PRIVATE (agreement); + GVariantBuilder sections_b; + GVariantBuilder agreement_b; + + g_variant_builder_init (&agreement_b, G_VARIANT_TYPE_ARRAY); + g_variant_builder_add_parsed (&agreement_b, "{'kind', <%u>}", priv->kind); + g_variant_builder_add_parsed (&agreement_b, "{'version_id', %v}", as_variant_mstring_new (priv->version_id)); + + g_variant_builder_init (§ions_b, G_VARIANT_TYPE_ARRAY); + for (guint i = 0; i < priv->sections->len; i++) { + as_agreement_section_to_variant (AS_AGREEMENT_SECTION (g_ptr_array_index (priv->sections, i)), §ions_b); + } + + as_variant_builder_add_kv (&agreement_b, "sections", g_variant_builder_end (§ions_b)); + g_variant_builder_add_value (builder, g_variant_builder_end (&agreement_b)); +} + +/** + * as_agreement_set_from_variant: + * @agreement: an #AsAgreement + * @variant: The #GVariant to read from. + * + * Read the active state of this object from a #GVariant serialization. + * This is used by the on-disk binary cache. + */ +gboolean +as_agreement_set_from_variant (AsAgreement *agreement, GVariant *variant, const gchar *locale) +{ + AsAgreementPrivate *priv = GET_PRIVATE (agreement); + GVariant *tmp; + GVariantDict adict; + + g_variant_dict_init (&adict, variant); + + priv->kind = as_variant_get_dict_uint32 (&adict, "kind"); + + as_agreement_set_version_id (agreement, as_variant_get_dict_mstr (&adict, "version_id", &tmp)); + g_variant_unref (tmp); + + /* sizes */ + tmp = g_variant_dict_lookup_value (&adict, "sections", G_VARIANT_TYPE_ARRAY); + if (tmp != NULL) { + GVariant *inner_child; + GVariantIter siter; + + g_variant_iter_init (&siter, tmp); + while ((inner_child = g_variant_iter_next_value (&siter))) { + g_autoptr(AsAgreementSection) asec = as_agreement_section_new (); + + if (!as_agreement_section_set_from_variant (asec, inner_child, locale)) + return FALSE; + as_agreement_add_section (agreement, asec); + + g_variant_unref (inner_child); + } + g_variant_unref (tmp); + } + + return TRUE; +} + +/** + * as_agreement_new: + * + * Creates a new #AsAgreement. + * + * Returns: (transfer full): a #AsAgreement + * + * Since: 0.12.1 + **/ +AsAgreement* +as_agreement_new (void) +{ + AsAgreement *agreement; + agreement = g_object_new (AS_TYPE_AGREEMENT, NULL); + return AS_AGREEMENT (agreement); +} diff -Nru appstream-0.12.0/src/as-agreement.h appstream-0.12.2/src/as-agreement.h --- appstream-0.12.0/src/as-agreement.h 1970-01-01 00:00:00.000000000 +0000 +++ appstream-0.12.2/src/as-agreement.h 2018-08-04 07:39:44.000000000 +0000 @@ -0,0 +1,90 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Richard Hughes + * Copyright (C) 2018 Matthias Klumpp + * + * Licensed under the GNU Lesser General Public License Version 2.1 + * + * This library is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 2.1 of the license, or + * (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library. If not, see . + */ + +#if !defined (__APPSTREAM_H) && !defined (AS_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __AS_AGREEMENT_H +#define __AS_AGREEMENT_H + +#include + +#include "as-agreement-section.h" + +G_BEGIN_DECLS + +#define AS_TYPE_AGREEMENT (as_agreement_get_type ()) +G_DECLARE_DERIVABLE_TYPE (AsAgreement, as_agreement, AS, AGREEMENT, GObject) + +struct _AsAgreementClass +{ + GObjectClass parent_class; + /*< private >*/ + void (*_as_reserved1) (void); + void (*_as_reserved2) (void); + void (*_as_reserved3) (void); + void (*_as_reserved4) (void); + void (*_as_reserved5) (void); + void (*_as_reserved6) (void); + void (*_as_reserved7) (void); + void (*_as_reserved8) (void); +}; + +/** + * AsAgreementKind: + * @AS_AGREEMENT_KIND_UNKNOWN: Unknown value + * @AS_AGREEMENT_KIND_GENERIC: A generic agreement without a specific type + * @AS_AGREEMENT_KIND_EULA: An End User License Agreement + * @AS_AGREEMENT_KIND_PRIVACY: A privacy agreement, typically a GDPR statement + * + * The kind of the agreement. + **/ +typedef enum { + AS_AGREEMENT_KIND_UNKNOWN, + AS_AGREEMENT_KIND_GENERIC, + AS_AGREEMENT_KIND_EULA, + AS_AGREEMENT_KIND_PRIVACY, + /*< private >*/ + AS_AGREEMENT_KIND_LAST +} AsAgreementKind; + +AsAgreement *as_agreement_new (void); + +const gchar *as_agreement_kind_to_string (AsAgreementKind value); +AsAgreementKind as_agreement_kind_from_string (const gchar *value); + +AsAgreementKind as_agreement_get_kind (AsAgreement *agreement); +void as_agreement_set_kind (AsAgreement *agreement, + AsAgreementKind kind); + +const gchar *as_agreement_get_version_id (AsAgreement *agreement); +void as_agreement_set_version_id (AsAgreement *agreement, + const gchar *version_id); + +AsAgreementSection *as_agreement_get_section_default (AsAgreement *agreement); +GPtrArray *as_agreement_get_sections (AsAgreement *agreement); +void as_agreement_add_section (AsAgreement *agreement, + AsAgreementSection *agreement_section); + +G_END_DECLS + +#endif /* __AS_AGREEMENT_H */ diff -Nru appstream-0.12.0/src/as-agreement-private.h appstream-0.12.2/src/as-agreement-private.h --- appstream-0.12.0/src/as-agreement-private.h 1970-01-01 00:00:00.000000000 +0000 +++ appstream-0.12.2/src/as-agreement-private.h 2018-08-04 07:39:44.000000000 +0000 @@ -0,0 +1,66 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Richard Hughes + * Copyright (C) 2018 Matthias Klumpp + * + * Licensed under the GNU Lesser General Public License Version 2.1 + * + * This library is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 2.1 of the license, or + * (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library. If not, see . + */ + +#ifndef __AS_AGREEMENT_PRIVATE_H +#define __AS_AGREEMENT_PRIVATE_H + +#include + +#include "as-context.h" +#include "as-agreement.h" +#include "as-xml.h" +#include "as-yaml.h" +#include "as-variant-cache.h" + +G_BEGIN_DECLS +#pragma GCC visibility push(hidden) + +AsContext *as_agreement_get_context (AsAgreement *agreement); +void as_agreement_set_context (AsAgreement *agreement, + AsContext *context); + + +void as_agreement_to_xml_node (AsAgreement *agreement, + AsContext *ctx, + xmlNode *root); +gboolean as_agreement_load_from_xml (AsAgreement *agreement, + AsContext *ctx, + xmlNode *node, + GError **error); + +gboolean as_agreement_load_from_yaml (AsAgreement *agreement, + AsContext *ctx, + GNode *node, + GError **error); +void as_agreement_emit_yaml (AsAgreement *agreement, + AsContext *ctx, + yaml_emitter_t *emitter); + +void as_agreement_to_variant (AsAgreement *agreement, + GVariantBuilder *builder); +gboolean as_agreement_set_from_variant (AsAgreement *agreement, + GVariant *variant, + const gchar *locale); + +#pragma GCC visibility pop +G_END_DECLS + +#endif /* __AS_AGREEMENT_PRIVATE_H */ diff -Nru appstream-0.12.0/src/as-agreement-section.c appstream-0.12.2/src/as-agreement-section.c --- appstream-0.12.0/src/as-agreement-section.c 1970-01-01 00:00:00.000000000 +0000 +++ appstream-0.12.2/src/as-agreement-section.c 2018-08-04 07:39:44.000000000 +0000 @@ -0,0 +1,499 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Richard Hughes + * Copyright (C) 2018 Matthias Klumpp + * + * Licensed under the GNU Lesser General Public License Version 2.1 + * + * This library is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 2.1 of the license, or + * (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library. If not, see . + */ + +/** + * SECTION:as-agreement-section + * @short_description: Object representing a agreement section + * @include: appstream-glib.h + * @stability: Unstable + * + * Agreements are typically split up into sections. + * This class describes one agreement section. + * + * See also: #AsAgreement + */ + +#include "as-agreement-section-private.h" +#include "as-utils-private.h" + +typedef struct { + gchar *kind; + GHashTable *name; + GHashTable *description; + + AsContext *context; + gchar *active_locale_override; +} AsAgreementSectionPrivate; + +G_DEFINE_TYPE_WITH_PRIVATE (AsAgreementSection, as_agreement_section, G_TYPE_OBJECT) + +#define GET_PRIVATE(o) (as_agreement_section_get_instance_private (o)) + +static void +as_agreement_section_finalize (GObject *object) +{ + AsAgreementSection *agreement_section = AS_AGREEMENT_SECTION (object); + AsAgreementSectionPrivate *priv = GET_PRIVATE (agreement_section); + + g_free (priv->kind); + g_hash_table_unref (priv->name); + g_hash_table_unref (priv->description); + + g_free (priv->active_locale_override); + if (priv->context != NULL) + g_object_unref (priv->context); + + G_OBJECT_CLASS (as_agreement_section_parent_class)->finalize (object); +} + +static void +as_agreement_section_init (AsAgreementSection *agreement_section) +{ + AsAgreementSectionPrivate *priv = GET_PRIVATE (agreement_section); + + priv->name = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); + priv->description = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); +} + +static void +as_agreement_section_class_init (AsAgreementSectionClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + object_class->finalize = as_agreement_section_finalize; +} + +/** + * as_agreement_section_get_kind: + * @agreement_section: a #AsAgreementSection instance. + * + * Gets the agreement section kind. + * + * Returns: a string, e.g. "GDPR", or NULL + * + * Since: 0.12.1 + **/ +const gchar* +as_agreement_section_get_kind (AsAgreementSection *agreement_section) +{ + AsAgreementSectionPrivate *priv = GET_PRIVATE (agreement_section); + return priv->kind; +} + +/** + * as_agreement_section_set_kind: + * @agreement_section: a #AsAgreementSection instance. + * @kind: the agreement kind, e.g. "GDPR" + * + * Sets the agreement section kind. + * + * Since: 0.12.1 + **/ +void +as_agreement_section_set_kind (AsAgreementSection *agreement_section, const gchar *kind) +{ + AsAgreementSectionPrivate *priv = GET_PRIVATE (agreement_section); + + g_free (priv->kind); + priv->kind = g_strdup (kind); +} + +/** + * as_agreement_section_get_name: + * @agreement_section: a #AsAgreementSection instance. + * + * Gets the agreement section name. + * + * Returns: a string, e.g. "GDPR", or NULL + * + * Since: 0.12.1 + **/ +const gchar* +as_agreement_section_get_name (AsAgreementSection *agreement_section) +{ + AsAgreementSectionPrivate *priv = GET_PRIVATE (agreement_section); + const gchar *name; + + name = g_hash_table_lookup (priv->name, + as_agreement_section_get_active_locale (agreement_section)); + if (name == NULL) + name = g_hash_table_lookup (priv->name, "C"); + + return name; +} + +/** + * as_agreement_section_set_name: + * @agreement_section: a #AsAgreementSection instance. + * @locale: (nullable): the locale. e.g. "en_GB" + * @name: the agreement name, e.g. "GDPR" + * + * Sets the agreement section name. + * + * Since: 0.12.1 + **/ +void +as_agreement_section_set_name (AsAgreementSection *agreement_section, + const gchar *name, const gchar *locale) +{ + AsAgreementSectionPrivate *priv = GET_PRIVATE (agreement_section); + + if (locale == NULL) + locale = as_agreement_section_get_active_locale (agreement_section); + g_hash_table_insert (priv->name, + as_locale_strip_encoding (g_strdup (locale)), + g_strdup (name)); +} + +/** + * as_agreement_section_get_description: + * @agreement_section: a #AsAgreementSection instance. + * + * Gets the agreement section desc. + * + * Returns: a string, e.g. "GDPR", or NULL + * + * Since: 0.12.1 + **/ +const gchar* +as_agreement_section_get_description (AsAgreementSection *agreement_section) +{ + AsAgreementSectionPrivate *priv = GET_PRIVATE (agreement_section); + const gchar *desc; + + desc = g_hash_table_lookup (priv->description, + as_agreement_section_get_active_locale (agreement_section)); + if (desc == NULL) + desc = g_hash_table_lookup (priv->description, "C"); + + return desc; +} + +/** + * as_agreement_section_set_description: + * @agreement_section: a #AsAgreementSection instance. + * @locale: (nullable): the locale. e.g. "en_GB" + * @desc: the agreement description, e.g. "GDPR" + * + * Sets the agreement section desc. + * + * Since: 0.12.1 + **/ +void +as_agreement_section_set_description (AsAgreementSection *agreement_section, + const gchar *desc, const gchar *locale) +{ + AsAgreementSectionPrivate *priv = GET_PRIVATE (agreement_section); + + if (locale == NULL) + locale = as_agreement_section_get_active_locale (agreement_section); + g_hash_table_insert (priv->description, + as_locale_strip_encoding (g_strdup (locale)), + g_strdup (desc)); +} + +/** + * as_agreement_section_get_context: + * @agreement_section: An instance of #AsAgreementSection. + * + * Returns: the #AsContext associated with this release. + * This function may return %NULL if no context is set. + * + * Since: 0.12.1 + */ +AsContext* +as_agreement_section_get_context (AsAgreementSection *agreement_section) +{ + AsAgreementSectionPrivate *priv = GET_PRIVATE (agreement_section); + return priv->context; +} + +/** + * as_agreement_section_set_context: + * @agreement_section: An instance of #AsAgreementSection. + * @context: the #AsContext. + * + * Sets the document context this release is associated + * with. + * + * Since: 0.12.1 + */ +void +as_agreement_section_set_context (AsAgreementSection *agreement_section, AsContext *context) +{ + AsAgreementSectionPrivate *priv = GET_PRIVATE (agreement_section); + if (priv->context != NULL) + g_object_unref (priv->context); + priv->context = g_object_ref (context); +} + +/** + * as_agreement_section_get_active_locale: + * + * Get the current active locale, which + * is used to get localized messages. + */ +const gchar* +as_agreement_section_get_active_locale (AsAgreementSection *agreement_section) +{ + AsAgreementSectionPrivate *priv = GET_PRIVATE (agreement_section); + const gchar *locale; + + /* return context locale, if the locale isn't explicitly overridden for this component */ + if ((priv->context != NULL) && (priv->active_locale_override == NULL)) { + locale = as_context_get_locale (priv->context); + } else { + locale = priv->active_locale_override; + } + + if (locale == NULL) + return "C"; + else + return locale; +} + +/** + * as_agreement_section_set_active_locale: + * + * Set the current active locale, which + * is used to get localized messages. + */ +void +as_agreement_section_set_active_locale (AsAgreementSection *agreement_section, const gchar *locale) +{ + AsAgreementSectionPrivate *priv = GET_PRIVATE (agreement_section); + + g_free (priv->active_locale_override); + priv->active_locale_override = g_strdup (locale); +} + +/** + * as_agreement_section_load_from_xml: + * @agreement_section: an #AsAgreement + * @ctx: the AppStream document context. + * @node: the XML node. + * @error: a #GError. + * + * Loads data from an XML node. + **/ +gboolean +as_agreement_section_load_from_xml (AsAgreementSection *agreement_section, AsContext *ctx, xmlNode *node, GError **error) +{ + xmlNode *iter; + gchar *prop; + + /* propagate context */ + as_agreement_section_set_context (agreement_section, ctx); + + prop = (gchar*) xmlGetProp (node, (xmlChar*) "type"); + if (prop != NULL) { + as_agreement_section_set_kind (agreement_section, prop); + g_free (prop); + } + + for (iter = node->children; iter != NULL; iter = iter->next) { + g_autofree gchar *lang = NULL; + if (iter->type != XML_ELEMENT_NODE) + continue; + + lang = as_xmldata_get_node_locale (ctx, iter); + + if (g_strcmp0 ((gchar*) iter->name, "name") == 0) { + g_autofree gchar *content = NULL; + + content = as_xml_get_node_value (iter); + if (content == NULL) + continue; + if (lang != NULL) + as_agreement_section_set_name (agreement_section, content, lang); + + continue; + } + + if (g_strcmp0 ((gchar*) iter->name, "description") == 0) { + g_autofree gchar *content = NULL; + + content = as_xml_dump_node_children (iter); + if (lang != NULL) + as_agreement_section_set_description (agreement_section, content, lang); + + continue; + } + } + + return TRUE; +} + +/** + * as_agreement_section_to_xml_node: + * @agreement_section: an #AsAgreement + * @ctx: the AppStream document context. + * @root: XML node to attach the new nodes to. + * + * Serializes the data to an XML node. + **/ +void +as_agreement_section_to_xml_node (AsAgreementSection *agreement_section, AsContext *ctx, xmlNode *root) +{ + AsAgreementSectionPrivate *priv = GET_PRIVATE (agreement_section); + xmlNode *asnode; + + asnode = xmlNewChild (root, NULL, (xmlChar*) "agreement_section", (xmlChar*) ""); + xmlNewProp (asnode, (xmlChar*) "type", (xmlChar*) priv->kind); + + as_xml_add_localized_text_node (asnode, "name", priv->name); + as_xml_add_description_node (ctx, asnode, priv->description); +} + +/** + * as_agreement_section_load_from_yaml: + * @agreement_section: an #AsAgreementSection + * @ctx: the AppStream document context. + * @node: the YAML node. + * @error: a #GError. + * + * Loads data from a YAML field. + **/ +gboolean +as_agreement_section_load_from_yaml (AsAgreementSection *agreement_section, AsContext *ctx, GNode *node, GError **error) +{ + AsAgreementSectionPrivate *priv = GET_PRIVATE (agreement_section); + GNode *n; + + /* propagate context */ + as_agreement_section_set_context (agreement_section, ctx); + + for (n = node->children; n != NULL; n = n->next) { + const gchar *key = as_yaml_node_get_key (n); + + if (g_strcmp0 (key, "type") == 0) { + as_agreement_section_set_kind (agreement_section, as_yaml_node_get_value (n)); + } else if (g_strcmp0 (key, "name") == 0) { + as_yaml_set_localized_table (ctx, n, priv->name); + } else if (g_strcmp0 (key, "description") == 0) { + as_yaml_set_localized_table (ctx, n, priv->description); + } else { + as_yaml_print_unknown ("agreement_section", key); + } + } + + return TRUE; +} + +/** + * as_agreement_section_emit_yaml: + * @agreement_section: an #AsAgreementSection + * @ctx: the AppStream document context. + * @emitter: The YAML emitter to emit data on. + * + * Emit YAML data for this object. + **/ +void +as_agreement_section_emit_yaml (AsAgreementSection *agreement_section, AsContext *ctx, yaml_emitter_t *emitter) +{ + AsAgreementSectionPrivate *priv = GET_PRIVATE (agreement_section); + + /* start mapping for this agreement */ + as_yaml_mapping_start (emitter); + + /* type */ + as_yaml_emit_entry (emitter, "type", priv->kind); + + /* name */ + as_yaml_emit_localized_entry (emitter, + "name", + priv->name); + + /* description */ + as_yaml_emit_long_localized_entry (emitter, + "description", + priv->description); + + /* end mapping for the agreement */ + as_yaml_mapping_end (emitter); +} + +/** + * as_agreement_section_to_variant: + * @agreement_section: an #AsAgreementSection + * @builder: A #GVariantBuilder + * + * Serialize the current active state of this object to a GVariant + * for use in the on-disk binary cache. + */ +void +as_agreement_section_to_variant (AsAgreementSection *agreement_section, GVariantBuilder *builder) +{ + AsAgreementSectionPrivate *priv = GET_PRIVATE (agreement_section); + GVariantBuilder asec_b; + + g_variant_builder_init (&asec_b, G_VARIANT_TYPE_ARRAY); + g_variant_builder_add_parsed (&asec_b, "{'kind', %v}", as_variant_mstring_new (priv->kind)); + g_variant_builder_add_parsed (&asec_b, "{'name', %v}", as_variant_mstring_new (as_agreement_section_get_name (agreement_section))); + g_variant_builder_add_parsed (&asec_b, "{'description', %v}", as_variant_mstring_new (as_agreement_section_get_description (agreement_section))); + + g_variant_builder_add_value (builder, g_variant_builder_end (&asec_b)); +} + +/** + * as_agreement_section_set_from_variant: + * @agreement_section: an #AsAgreementSection + * @variant: The #GVariant to read from. + * + * Read the active state of this object from a #GVariant serialization. + * This is used by the on-disk binary cache. + */ +gboolean +as_agreement_section_set_from_variant (AsAgreementSection *agreement_section, GVariant *variant, const gchar *locale) +{ + GVariant *tmp; + GVariantDict adict; + + as_agreement_section_set_active_locale (agreement_section, locale); + g_variant_dict_init (&adict, variant); + + as_agreement_section_set_kind (agreement_section, as_variant_get_dict_mstr (&adict, "kind", &tmp)); + g_variant_unref (tmp); + + as_agreement_section_set_name (agreement_section, as_variant_get_dict_mstr (&adict, "name", &tmp), locale); + g_variant_unref (tmp); + + as_agreement_section_set_description (agreement_section, as_variant_get_dict_mstr (&adict, "description", &tmp), locale); + g_variant_unref (tmp); + + return TRUE; +} + +/** + * as_agreement_section_new: + * + * Creates a new #AsAgreementSection. + * + * Returns: (transfer full): a #AsAgreementSection + * + * Since: 0.12.1 + **/ +AsAgreementSection * +as_agreement_section_new (void) +{ + AsAgreementSection *agreement_section; + agreement_section = g_object_new (AS_TYPE_AGREEMENT_SECTION, NULL); + return AS_AGREEMENT_SECTION (agreement_section); +} diff -Nru appstream-0.12.0/src/as-agreement-section.h appstream-0.12.2/src/as-agreement-section.h --- appstream-0.12.0/src/as-agreement-section.h 1970-01-01 00:00:00.000000000 +0000 +++ appstream-0.12.2/src/as-agreement-section.h 2018-08-04 07:39:44.000000000 +0000 @@ -0,0 +1,72 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Richard Hughes + * Copyright (C) 2018 Matthias Klumpp + * + * Licensed under the GNU Lesser General Public License Version 2.1 + * + * This library is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 2.1 of the license, or + * (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library. If not, see . + */ + +#if !defined (__APPSTREAM_H) && !defined (AS_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __AS_AGREEMENT_SECTION_H +#define __AS_AGREEMENT_SECTION_H + +#include + +G_BEGIN_DECLS + +#define AS_TYPE_AGREEMENT_SECTION (as_agreement_section_get_type ()) +G_DECLARE_DERIVABLE_TYPE (AsAgreementSection, as_agreement_section, AS, AGREEMENT_SECTION, GObject) + +struct _AsAgreementSectionClass +{ + GObjectClass parent_class; + /*< private >*/ + void (*_as_reserved1) (void); + void (*_as_reserved2) (void); + void (*_as_reserved3) (void); + void (*_as_reserved4) (void); + void (*_as_reserved5) (void); + void (*_as_reserved6) (void); + void (*_as_reserved7) (void); + void (*_as_reserved8) (void); +}; + +AsAgreementSection *as_agreement_section_new (void); + +const gchar *as_agreement_section_get_kind (AsAgreementSection *agreement_section); +void as_agreement_section_set_kind (AsAgreementSection *agreement_section, + const gchar *kind); + +const gchar *as_agreement_section_get_name (AsAgreementSection *agreement_section); +void as_agreement_section_set_name (AsAgreementSection *agreement_section, + const gchar *name, + const gchar *locale); + +const gchar *as_agreement_section_get_description (AsAgreementSection *agreement_section); +void as_agreement_section_set_description (AsAgreementSection *agreement_section, + const gchar *desc, + const gchar *locale); + +const gchar *as_agreement_section_get_active_locale (AsAgreementSection *agreement_section); +void as_agreement_section_set_active_locale (AsAgreementSection *agreement_section, + const gchar *locale); + +G_END_DECLS + +#endif /* __AS_AGREEMENT_SECTION_H */ diff -Nru appstream-0.12.0/src/as-agreement-section-private.h appstream-0.12.2/src/as-agreement-section-private.h --- appstream-0.12.0/src/as-agreement-section-private.h 1970-01-01 00:00:00.000000000 +0000 +++ appstream-0.12.2/src/as-agreement-section-private.h 2018-08-04 07:39:44.000000000 +0000 @@ -0,0 +1,64 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Richard Hughes + * Copyright (C) 2018 Matthias Klumpp + * + * Licensed under the GNU Lesser General Public License Version 2.1 + * + * This library is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 2.1 of the license, or + * (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library. If not, see . + */ + +#ifndef __AS_AGREEMENT_SECTION_PRIVATE_H +#define __AS_AGREEMENT_SECTION_PRIVATE_H + +#include + +#include "as-agreement-section.h" +#include "as-xml.h" +#include "as-yaml.h" +#include "as-variant-cache.h" + +G_BEGIN_DECLS +#pragma GCC visibility push(hidden) + +AsContext *as_agreement_section_get_context (AsAgreementSection *agreement_section); +void as_agreement_section_set_context (AsAgreementSection *agreement_section, + AsContext *context); + +gboolean as_agreement_section_load_from_xml (AsAgreementSection *agreement_section, + AsContext *ctx, + xmlNode *node, + GError **error); +void as_agreement_section_to_xml_node (AsAgreementSection *agreement_section, + AsContext *ctx, + xmlNode *root); + +gboolean as_agreement_section_load_from_yaml (AsAgreementSection *agreement_section, + AsContext *ctx, + GNode *node, + GError **error); +void as_agreement_section_emit_yaml (AsAgreementSection *agreement_section, + AsContext *ctx, + yaml_emitter_t *emitter); + +void as_agreement_section_to_variant (AsAgreementSection *agreement_section, + GVariantBuilder *builder); +gboolean as_agreement_section_set_from_variant (AsAgreementSection *agreement_section, + GVariant *variant, + const gchar *locale); + +#pragma GCC visibility pop +G_END_DECLS + +#endif /* __AS_AGREEMENT_SECTION_PRIVATE_H */ diff -Nru appstream-0.12.0/src/as-component.c appstream-0.12.2/src/as-component.c --- appstream-0.12.0/src/as-component.c 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/src/as-component.c 2018-08-04 07:39:44.000000000 +0000 @@ -1,6 +1,6 @@ /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- * - * Copyright (C) 2012-2016 Matthias Klumpp + * Copyright (C) 2012-2018 Matthias Klumpp * * Licensed under the GNU Lesser General Public License Version 2.1 * @@ -39,6 +39,7 @@ #include "as-launchable-private.h" #include "as-provided-private.h" #include "as-relation-private.h" +#include "as-agreement-private.h" /** @@ -95,6 +96,7 @@ GPtrArray *content_ratings; /* of AsContentRating */ GPtrArray *recommends; /* of AsRelation */ GPtrArray *requires; /* of AsRelation */ + GPtrArray *agreements; /* of AsAgreement */ GHashTable *urls; /* of int:utf8 */ GHashTable *languages; /* of utf8:utf8 */ @@ -176,6 +178,7 @@ {AS_COMPONENT_KIND_DRIVER, "AS_COMPONENT_KIND_DRIVER", "driver"}, {AS_COMPONENT_KIND_LOCALIZATION, "AS_COMPONENT_KIND_LOCALIZATION", "localization"}, {AS_COMPONENT_KIND_SERVICE, "AS_COMPONENT_KIND_SERVICE", "service"}, + {AS_COMPONENT_KIND_REPOSITORY, "AS_COMPONENT_KIND_REPOSITORY", "repository"}, {0, NULL, NULL} }; GType as_component_type_type_id; @@ -220,6 +223,8 @@ return "localization"; if (kind == AS_COMPONENT_KIND_SERVICE) return "service"; + if (kind == AS_COMPONENT_KIND_REPOSITORY) + return "repository"; return "unknown"; } @@ -260,6 +265,8 @@ return AS_COMPONENT_KIND_LOCALIZATION; if (g_strcmp0 (kind_str, "service") == 0) return AS_COMPONENT_KIND_SERVICE; + if (g_strcmp0 (kind_str, "repository") == 0) + return AS_COMPONENT_KIND_REPOSITORY; /* legacy */ if (g_strcmp0 (kind_str, "desktop") == 0) @@ -376,6 +383,7 @@ priv->content_ratings = g_ptr_array_new_with_free_func (g_object_unref); priv->recommends = g_ptr_array_new_with_free_func (g_object_unref); priv->requires = g_ptr_array_new_with_free_func (g_object_unref); + priv->agreements = g_ptr_array_new_with_free_func (g_object_unref); /* others */ priv->urls = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, g_free); @@ -431,6 +439,8 @@ g_ptr_array_unref (priv->recommends); g_ptr_array_unref (priv->requires); + g_ptr_array_unref (priv->agreements); + if (priv->translations != NULL) g_ptr_array_unref (priv->translations); @@ -2757,7 +2767,7 @@ * * Since: 0.10.5 */ -gchar* +const gchar* as_component_get_custom_value (AsComponent *cpt, const gchar *key) { AsComponentPrivate *priv = GET_PRIVATE (cpt); @@ -2968,6 +2978,47 @@ } /** + * as_component_add_agreement: + * @cpt: a #AsComponent instance. + * @agreement: an #AsAgreement instance. + * + * Adds an agreement to the software component. + * + * Since: 0.12.1 + **/ +void +as_component_add_agreement (AsComponent *cpt, AsAgreement *agreement) +{ + AsComponentPrivate *priv = GET_PRIVATE (cpt); + g_ptr_array_add (priv->agreements, g_object_ref (agreement)); +} + +/** + * as_component_get_agreement_by_kind: + * @cpt: a #AsComponent instance. + * @kind: an agreement kind, e.g. %AS_AGREEMENT_KIND_EULA + * + * Gets an agreement the component has specified for the particular kind. + * + * Returns: (transfer none): a #AsAgreement or %NULL for not found + * + * Since: 0.12.1 + **/ +AsAgreement* +as_component_get_agreement_by_kind (AsComponent *cpt, AsAgreementKind kind) +{ + AsComponentPrivate *priv = GET_PRIVATE (cpt); + guint i; + + for (i = 0; i < priv->agreements->len; i++) { + AsAgreement *agreement = AS_AGREEMENT (g_ptr_array_index (priv->agreements, i)); + if (as_agreement_get_kind (agreement) == kind) + return agreement; + } + return NULL; +} + +/** * as_component_get_context: * @cpt: a #AsComponent instance. * @@ -3439,6 +3490,7 @@ for (iter = node->children; iter != NULL; iter = iter->next) { g_autofree gchar *content = NULL; g_autofree gchar *lang = NULL; + AsTag tag_id; /* discard spaces */ if (iter->type != XML_ELEMENT_NODE) @@ -3448,24 +3500,26 @@ content = as_xml_get_node_value (iter); lang = as_xmldata_get_node_locale (ctx, iter); - if (g_strcmp0 (node_name, "id") == 0) { + tag_id = as_xml_tag_from_string (node_name); + + if (tag_id == AS_TAG_ID) { as_component_set_id (cpt, content); if ((as_context_get_style (ctx) == AS_FORMAT_STYLE_METAINFO) && (priv->kind == AS_COMPONENT_KIND_GENERIC)) { /* parse legacy component type information */ as_component_set_kind_from_node (cpt, iter); } - } else if (g_strcmp0 (node_name, "pkgname") == 0) { + } else if (tag_id == AS_TAG_PKGNAME) { if (content != NULL) g_ptr_array_add (pkgnames, g_strdup (content)); - } else if (g_strcmp0 (node_name, "source_pkgname") == 0) { + } else if (tag_id == AS_TAG_SOURCE_PKGNAME) { as_component_set_source_pkgname (cpt, content); - } else if (g_strcmp0 (node_name, "name") == 0) { + } else if (tag_id == AS_TAG_NAME) { if (lang != NULL) as_component_set_name (cpt, content, lang); - } else if (g_strcmp0 (node_name, "summary") == 0) { + } else if (tag_id == AS_TAG_SUMMARY) { if (lang != NULL) as_component_set_summary (cpt, content, lang); - } else if (g_strcmp0 (node_name, "description") == 0) { + } else if (tag_id == AS_TAG_DESCRIPTION) { if (as_context_get_style (ctx) == AS_FORMAT_STYLE_COLLECTION) { /* for collection XML, the "description" tag has a language property, so parsing it is simple */ if (lang != NULL) { @@ -3480,14 +3534,14 @@ (GHFunc) as_xml_metainfo_description_to_cpt, cpt); } - } else if (g_strcmp0 (node_name, "icon") == 0) { + } else if (tag_id == AS_TAG_ICON) { g_autoptr(AsIcon) icon = NULL; if (content == NULL) continue; icon = as_icon_new (); if (as_icon_load_from_xml (icon, ctx, iter, NULL)) as_component_add_icon (cpt, icon); - } else if (g_strcmp0 (node_name, "url") == 0) { + } else if (tag_id == AS_TAG_URL) { if (content != NULL) { g_autofree gchar *urltype_str = NULL; AsUrlKind url_kind; @@ -3496,17 +3550,17 @@ if (url_kind != AS_URL_KIND_UNKNOWN) as_component_add_url (cpt, url_kind, content); } - } else if (g_strcmp0 (node_name, "categories") == 0) { + } else if (tag_id == AS_TAG_CATEGORIES) { as_xml_add_children_values_to_array (iter, "category", priv->categories); - } else if (g_strcmp0 (node_name, "keywords") == 0) { + } else if (tag_id == AS_TAG_KEYWORDS) { if (lang != NULL) { g_auto(GStrv) kw_array = NULL; kw_array = as_xml_get_children_as_strv (iter, "keyword"); as_component_set_keywords (cpt, kw_array, lang); } - } else if (g_strcmp0 (node_name, "mimetypes") == 0) { + } else if (tag_id == AS_TAG_MIMETYPES) { g_autoptr(GPtrArray) mime_list = NULL; guint i; @@ -3519,9 +3573,9 @@ AS_PROVIDED_KIND_MIMETYPE, (const gchar*) g_ptr_array_index (mime_list, i)); } - } else if (g_strcmp0 (node_name, "provides") == 0) { + } else if (tag_id == AS_TAG_PROVIDES) { as_component_load_provides_from_xml (cpt, iter); - } else if (g_strcmp0 (node_name, "screenshots") == 0) { + } else if (tag_id == AS_TAG_SCREENSHOTS) { xmlNode *iter2; for (iter2 = iter->children; iter2 != NULL; iter2 = iter2->next) { @@ -3533,19 +3587,19 @@ as_component_add_screenshot (cpt, screenshot); } } - } else if (g_strcmp0 (node_name, "metadata_license") == 0) { + } else if (tag_id == AS_TAG_METADATA_LICENSE) { as_component_set_metadata_license (cpt, content); - } else if (g_strcmp0 (node_name, "project_license") == 0) { + } else if (tag_id == AS_TAG_PROJECT_LICENSE) { as_component_set_project_license (cpt, content); - } else if (g_strcmp0 (node_name, "project_group") == 0) { + } else if (tag_id == AS_TAG_PROJECT_GROUP) { as_component_set_project_group (cpt, content); - } else if (g_strcmp0 (node_name, "developer_name") == 0) { + } else if (tag_id == AS_TAG_DEVELOPER_NAME) { if (lang != NULL) as_component_set_developer_name (cpt, content, lang); - } else if (g_strcmp0 (node_name, "compulsory_for_desktop") == 0) { + } else if (tag_id == AS_TAG_COMPULSORY_FOR_DESKTOP) { if (content != NULL) as_component_set_compulsory_for_desktop (cpt, content); - } else if (g_strcmp0 (node_name, "releases") == 0) { + } else if (tag_id == AS_TAG_RELEASES) { xmlNode *iter2; for (iter2 = iter->children; iter2 != NULL; iter2 = iter2->next) { @@ -3557,36 +3611,40 @@ as_component_add_release (cpt, release); } } - } else if (g_strcmp0 (node_name, "extends") == 0) { + } else if (tag_id == AS_TAG_EXTENDS) { as_component_add_extends (cpt, content); - } else if (g_strcmp0 (node_name, "languages") == 0) { + } else if (tag_id == AS_TAG_LANGUAGES) { as_component_xml_parse_languages_node (cpt, iter); - } else if (g_strcmp0 (node_name, "launchable") == 0) { + } else if (tag_id == AS_TAG_LAUNCHABLE) { as_component_load_launchable_from_xml (cpt, iter); - } else if (g_strcmp0 (node_name, "bundle") == 0) { + } else if (tag_id == AS_TAG_BUNDLE) { g_autoptr(AsBundle) bundle = as_bundle_new (); if (as_bundle_load_from_xml (bundle, ctx, iter, NULL)) as_component_add_bundle (cpt, bundle); - } else if (g_strcmp0 (node_name, "translation") == 0) { + } else if (tag_id == AS_TAG_TRANSLATION) { if (content != NULL) { g_autoptr(AsTranslation) tr = as_translation_new (); if (as_translation_load_from_xml (tr, ctx, iter, NULL)) as_component_add_translation (cpt, tr); } - } else if (g_strcmp0 (node_name, "suggests") == 0) { + } else if (tag_id == AS_TAG_SUGGESTS) { g_autoptr(AsSuggested) suggested = as_suggested_new (); if (as_suggested_load_from_xml (suggested, ctx, iter, NULL)) as_component_add_suggested (cpt, suggested); - } else if (g_strcmp0 (node_name, "custom") == 0) { + } else if (tag_id == AS_TAG_CUSTOM) { as_component_xml_parse_custom_node (cpt, iter); - } else if (g_strcmp0 (node_name, "content_rating") == 0) { + } else if (tag_id == AS_TAG_CONTENT_RATING) { g_autoptr(AsContentRating) ctrating = as_content_rating_new (); if (as_content_rating_load_from_xml (ctrating, ctx, iter, NULL)) as_component_add_content_rating (cpt, ctrating); - } else if (g_strcmp0 (node_name, "recommends") == 0) { + } else if (tag_id == AS_TAG_RECOMMENDS) { as_component_load_relations_from_xml (cpt, ctx, iter, AS_RELATION_KIND_RECOMMENDS); - } else if (g_strcmp0 (node_name, "requires") == 0) { + } else if (tag_id == AS_TAG_REQUIRES) { as_component_load_relations_from_xml (cpt, ctx, iter, AS_RELATION_KIND_REQUIRES); + } else if (tag_id == AS_TAG_AGREEMENT) { + g_autoptr(AsAgreement) agreement = as_agreement_new (); + if (as_agreement_load_from_xml (agreement, ctx, iter, NULL)) + as_component_add_agreement (cpt, agreement); } } @@ -3941,6 +3999,12 @@ } } + /* agreements */ + for (i = 0; i < priv->agreements->len; i++) { + AsAgreement *agreement = AS_AGREEMENT (g_ptr_array_index (priv->agreements, i)); + as_agreement_to_xml_node (agreement, ctx, cnode); + } + /* releases */ if (priv->releases->len > 0) { xmlNode *rnode = xmlNewChild (cnode, NULL, (xmlChar*) "releases", NULL); @@ -4004,22 +4068,22 @@ as_component_yaml_parse_keywords (AsComponent *cpt, AsContext *ctx, GNode *node) { GNode *tnode; - g_autoptr(GPtrArray) keywords = NULL; - g_auto(GStrv) strv = NULL; - keywords = g_ptr_array_new_with_free_func (g_free); - - tnode = as_yaml_get_localized_node (ctx, node, NULL); - /* no node found? */ - if (tnode == NULL) - return; + for (tnode = node->children; tnode != NULL; tnode = tnode->next) { + const gchar *locale = as_yaml_get_node_locale (ctx, tnode); + if (locale != NULL) { + g_autoptr(GPtrArray) keywords = NULL; + g_auto(GStrv) strv = NULL; - as_yaml_list_to_str_array (tnode, keywords); + keywords = g_ptr_array_new_with_free_func (g_free); + as_yaml_list_to_str_array (tnode, keywords); - strv = as_ptr_array_to_strv (keywords); - as_component_set_keywords (cpt, - strv, - as_yaml_node_get_key (tnode)); + strv = as_ptr_array_to_strv (keywords); + as_component_set_keywords (cpt, + strv, + locale); + } + } } /** @@ -4327,122 +4391,120 @@ for (node = root->children; node != NULL; node = node->next) { const gchar *key; const gchar *value; - gchar *lvalue; + AsTag field_id; if (node->children == NULL) continue; key = as_yaml_node_get_key (node); value = as_yaml_node_get_value (node); + field_id = as_yaml_tag_from_string (key); - if (g_strcmp0 (key, "Type") == 0) { + if (field_id == AS_TAG_TYPE) { if (g_strcmp0 (value, "generic") == 0) priv->kind = AS_COMPONENT_KIND_GENERIC; else priv->kind = as_component_kind_from_string (value); - } else if (g_strcmp0 (key, "ID") == 0) { + } else if (field_id == AS_TAG_ID) { as_component_set_id (cpt, value); - } else if (g_strcmp0 (key, "Priority") == 0) { + } else if (field_id == AS_TAG_PRIORITY) { priv->priority = g_ascii_strtoll (value, NULL, 10); - } else if (g_strcmp0 (key, "Merge") == 0) { + } else if (field_id == AS_TAG_MERGE) { priv->merge_kind = as_merge_kind_from_string (value); - } else if (g_strcmp0 (key, "Package") == 0) { - g_auto(GStrv) strv = NULL; - strv = g_new0 (gchar*, 1 + 1); - strv[0] = g_strdup (value); - strv[1] = NULL; + } else if (field_id == AS_TAG_PKGNAME) { + g_strfreev (priv->pkgnames); - as_component_set_pkgnames (cpt, strv); - } else if (g_strcmp0 (key, "SourcePackage") == 0) { + priv->pkgnames = g_new0 (gchar*, 1 + 1); + priv->pkgnames[0] = g_strdup (value); + priv->pkgnames[1] = NULL; + g_object_notify ((GObject *) cpt, "pkgnames"); + } else if (field_id == AS_TAG_SOURCE_PKGNAME) { as_component_set_source_pkgname (cpt, value); - } else if (g_strcmp0 (key, "Name") == 0) { - lvalue = as_yaml_get_localized_value (ctx, node, "C"); - if (lvalue != NULL) { - as_component_set_name (cpt, lvalue, "C"); /* Unlocalized */ - g_free (lvalue); - } - lvalue = as_yaml_get_localized_value (ctx, node, NULL); - as_component_set_name (cpt, lvalue, NULL); - g_free (lvalue); - } else if (g_strcmp0 (key, "Summary") == 0) { - lvalue = as_yaml_get_localized_value (ctx, node, NULL); - as_component_set_summary (cpt, lvalue, NULL); - g_free (lvalue); - } else if (g_strcmp0 (key, "Description") == 0) { - lvalue = as_yaml_get_localized_value (ctx, node, NULL); - as_component_set_description (cpt, lvalue, NULL); - g_free (lvalue); - } else if (g_strcmp0 (key, "DeveloperName") == 0) { - lvalue = as_yaml_get_localized_value (ctx, node, NULL); - as_component_set_developer_name (cpt, lvalue, NULL); - g_free (lvalue); - } else if (g_strcmp0 (key, "ProjectLicense") == 0) { + } else if (field_id == AS_TAG_NAME) { + as_yaml_set_localized_table (ctx, node, priv->name); + g_object_notify ((GObject *) cpt, "name"); + } else if (field_id == AS_TAG_SUMMARY) { + as_yaml_set_localized_table (ctx, node, priv->summary); + g_object_notify ((GObject *) cpt, "summary"); + } else if (field_id == AS_TAG_DESCRIPTION) { + as_yaml_set_localized_table (ctx, node, priv->description); + g_object_notify ((GObject *) cpt, "description"); + } else if (field_id == AS_TAG_DEVELOPER_NAME) { + as_yaml_set_localized_table (ctx, node, priv->developer_name); + } else if (field_id == AS_TAG_PROJECT_LICENSE) { as_component_set_project_license (cpt, value); - } else if (g_strcmp0 (key, "ProjectGroup") == 0) { + } else if (field_id == AS_TAG_PROJECT_GROUP) { as_component_set_project_group (cpt, value); - } else if (g_strcmp0 (key, "Categories") == 0) { + } else if (field_id == AS_TAG_CATEGORIES) { as_yaml_list_to_str_array (node, priv->categories); - } else if (g_strcmp0 (key, "CompulsoryForDesktops") == 0) { + } else if (field_id == AS_TAG_COMPULSORY_FOR_DESKTOP) { as_yaml_list_to_str_array (node, priv->compulsory_for_desktops); - } else if (g_strcmp0 (key, "Extends") == 0) { + } else if (field_id == AS_TAG_EXTENDS) { as_yaml_list_to_str_array (node, priv->extends); - } else if (g_strcmp0 (key, "Keywords") == 0) { + } else if (field_id == AS_TAG_KEYWORDS) { as_component_yaml_parse_keywords (cpt, ctx, node); - } else if (g_strcmp0 (key, "Url") == 0) { + } else if (field_id == AS_TAG_URL) { as_component_yaml_parse_urls (cpt, node); - } else if (g_strcmp0 (key, "Icon") == 0) { + } else if (field_id == AS_TAG_ICON) { as_component_yaml_parse_icons (cpt, ctx, node); - } else if (g_strcmp0 (key, "Bundles") == 0) { + } else if (field_id == AS_TAG_BUNDLE) { GNode *n; for (n = node->children; n != NULL; n = n->next) { g_autoptr(AsBundle) bundle = as_bundle_new (); if (as_bundle_load_from_yaml (bundle, ctx, n, NULL)) as_component_add_bundle (cpt, bundle); } - } else if (g_strcmp0 (key, "Launchable") == 0) { + } else if (field_id == AS_TAG_LAUNCHABLE) { GNode *n; for (n = node->children; n != NULL; n = n->next) { g_autoptr(AsLaunchable) launch = as_launchable_new (); if (as_launchable_load_from_yaml (launch, ctx, n, NULL)) as_component_add_launchable (cpt, launch); } - } else if (g_strcmp0 (key, "Provides") == 0) { + } else if (field_id == AS_TAG_PROVIDES) { as_component_yaml_parse_provides (cpt, node); - } else if (g_strcmp0 (key, "Screenshots") == 0) { + } else if (field_id == AS_TAG_SCREENSHOTS) { GNode *n; for (n = node->children; n != NULL; n = n->next) { g_autoptr(AsScreenshot) scr = as_screenshot_new (); if (as_screenshot_load_from_yaml (scr, ctx, n, NULL)) as_component_add_screenshot (cpt, scr); } - } else if (g_strcmp0 (key, "Languages") == 0) { + } else if (field_id == AS_TAG_LANGUAGES) { as_component_yaml_parse_languages (cpt, node); - } else if (g_strcmp0 (key, "Releases") == 0) { + } else if (field_id == AS_TAG_RELEASES) { GNode *n; for (n = node->children; n != NULL; n = n->next) { g_autoptr(AsRelease) release = as_release_new (); if (as_release_load_from_yaml (release, ctx, n, NULL)) as_component_add_release (cpt, release); } - } else if (g_strcmp0 (key, "Suggests") == 0) { + } else if (field_id == AS_TAG_SUGGESTS) { GNode *n; for (n = node->children; n != NULL; n = n->next) { g_autoptr(AsSuggested) suggested = as_suggested_new (); if (as_suggested_load_from_yaml (suggested, ctx, n, NULL)) as_component_add_suggested (cpt, suggested); } - } else if (g_strcmp0 (key, "ContentRating") == 0) { + } else if (field_id == AS_TAG_CONTENT_RATING) { GNode *n; for (n = node->children; n != NULL; n = n->next) { g_autoptr(AsContentRating) rating = as_content_rating_new (); if (as_content_rating_load_from_yaml (rating, ctx, n, NULL)) as_component_add_content_rating (cpt, rating); } - } else if (g_strcmp0 (key, "Recommends") == 0) { + } else if (field_id == AS_TAG_RECOMMENDS) { as_component_yaml_parse_relations (cpt, ctx, node, AS_RELATION_KIND_RECOMMENDS); - } else if (g_strcmp0 (key, "Requires") == 0) { + } else if (field_id == AS_TAG_REQUIRES) { as_component_yaml_parse_relations (cpt, ctx, node, AS_RELATION_KIND_REQUIRES); - } else if (g_strcmp0 (key, "Custom") == 0) { + } else if (field_id == AS_TAG_AGREEMENT) { + GNode *n; + for (n = node->children; n != NULL; n = n->next) { + g_autoptr(AsAgreement) agreement = as_agreement_new (); + if (as_agreement_load_from_yaml (agreement, ctx, n, NULL)) + as_component_add_agreement (cpt, agreement); + } + } else if (field_id == AS_TAG_CUSTOM) { as_component_yaml_parse_custom (cpt, node); } else { as_yaml_print_unknown ("root", key); @@ -4933,6 +4995,19 @@ /* Translation details */ as_component_yaml_emit_languages (cpt, emitter); + /* Agreements */ + if (priv->agreements->len > 0) { + as_yaml_emit_scalar (emitter, "Agreements"); + as_yaml_sequence_start (emitter); + + for (i = 0; i < priv->agreements->len; i++) { + AsAgreement *agreement = AS_AGREEMENT (g_ptr_array_index (priv->agreements, i)); + as_agreement_emit_yaml (agreement, ctx, emitter); + } + + as_yaml_sequence_end (emitter); + } + /* Releases */ if (priv->releases->len > 0) { as_yaml_emit_scalar (emitter, "Releases"); @@ -5171,6 +5246,18 @@ g_variant_builder_end (&array_b)); } + /* agreements */ + if (priv->agreements->len > 0) { + GVariantBuilder array_b; + g_variant_builder_init (&array_b, G_VARIANT_TYPE_ARRAY); + + for (i = 0; i < priv->agreements->len; i++) { + as_agreement_to_variant (AS_AGREEMENT (g_ptr_array_index (priv->agreements, i)), &array_b); + } + + as_variant_builder_add_kv (&cb, "agreements", g_variant_builder_end (&array_b)); + } + /* releases */ if (priv->releases->len > 0) { GVariantBuilder array_b; @@ -5307,7 +5394,7 @@ as_component_set_from_variant (AsComponent *cpt, GVariant *variant, const gchar *locale) { AsComponentPrivate *priv = GET_PRIVATE (cpt); - GVariantDict dict; + g_auto(GVariantDict) dict; const gchar **strv; GVariant *var; GVariantIter gvi; @@ -5489,6 +5576,24 @@ g_variant_unref (child); } + g_variant_unref (var); + } + + /* agreements */ + var = g_variant_dict_lookup_value (&dict, + "agreements", + G_VARIANT_TYPE_ARRAY); + if (var != NULL) { + GVariant *child; + + g_variant_iter_init (&gvi, var); + while ((child = g_variant_iter_next_value (&gvi))) { + g_autoptr(AsAgreement) agreement = as_agreement_new (); + if (as_agreement_set_from_variant (agreement, child, locale)) + as_component_add_agreement (cpt, agreement); + + g_variant_unref (child); + } g_variant_unref (var); } diff -Nru appstream-0.12.0/src/as-component.h appstream-0.12.2/src/as-component.h --- appstream-0.12.0/src/as-component.h 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/src/as-component.h 2018-08-04 07:39:44.000000000 +0000 @@ -38,6 +38,7 @@ #include "as-content-rating.h" #include "as-launchable.h" #include "as-relation.h" +#include "as-agreement.h" G_BEGIN_DECLS @@ -70,6 +71,7 @@ * @AS_COMPONENT_KIND_FIRMWARE: Firmware * @AS_COMPONENT_KIND_DRIVER: A driver * @AS_COMPONENT_KIND_LOCALIZATION: Software localization (usually l10n resources) + * @AS_COMPONENT_KIND_REPOSITORY: A remote software or data source * * The type of an #AsComponent. **/ @@ -87,6 +89,7 @@ AS_COMPONENT_KIND_DRIVER, AS_COMPONENT_KIND_LOCALIZATION, AS_COMPONENT_KIND_SERVICE, + AS_COMPONENT_KIND_REPOSITORY, /*< private >*/ AS_COMPONENT_KIND_LAST } AsComponentKind; @@ -313,7 +316,7 @@ gchar *as_component_to_string (AsComponent *cpt); GHashTable *as_component_get_custom (AsComponent *cpt); -gchar *as_component_get_custom_value (AsComponent *cpt, +const gchar *as_component_get_custom_value (AsComponent *cpt, const gchar *key); gboolean as_component_insert_custom_value (AsComponent *cpt, const gchar *key, @@ -328,7 +331,12 @@ GPtrArray *as_component_get_recommends (AsComponent *cpt); GPtrArray *as_component_get_requires (AsComponent *cpt); void as_component_add_relation (AsComponent *cpt, - AsRelation *relation); + AsRelation *relation); + +void as_component_add_agreement (AsComponent *cpt, + AsAgreement *agreement); +AsAgreement *as_component_get_agreement_by_kind (AsComponent *cpt, + AsAgreementKind kind); /* DEPRECATED */ diff -Nru appstream-0.12.0/src/as-component-private.h appstream-0.12.2/src/as-component-private.h --- appstream-0.12.0/src/as-component-private.h 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/src/as-component-private.h 2018-08-04 07:39:44.000000000 +0000 @@ -23,6 +23,7 @@ #include "as-component.h" #include "as-settings-private.h" +#include "as-tag.h" #include "as-xml.h" #include "as-yaml.h" diff -Nru appstream-0.12.0/src/as-content-rating.c appstream-0.12.2/src/as-content-rating.c --- appstream-0.12.0/src/as-content-rating.c 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/src/as-content-rating.c 2018-08-04 07:39:44.000000000 +0000 @@ -524,7 +524,7 @@ as_content_rating_set_from_variant (AsContentRating *content_rating, GVariant *variant) { GVariantIter inner_iter; - GVariantDict idict; + g_auto(GVariantDict) idict; GVariant *tmp; GVariant *v_child; g_autoptr(GVariant) values_var = NULL; diff -Nru appstream-0.12.0/src/as-icon.c appstream-0.12.2/src/as-icon.c --- appstream-0.12.0/src/as-icon.c 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/src/as-icon.c 2018-08-04 07:39:44.000000000 +0000 @@ -513,7 +513,7 @@ as_icon_set_from_variant (AsIcon *icon, GVariant *variant) { AsIconPrivate *priv = GET_PRIVATE (icon); - GVariantDict idict; + g_auto(GVariantDict) idict; g_autoptr(GVariant) ival_var = NULL; g_variant_dict_init (&idict, variant); diff -Nru appstream-0.12.0/src/as-image.c appstream-0.12.2/src/as-image.c --- appstream-0.12.0/src/as-image.c 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/src/as-image.c 2018-08-04 07:39:44.000000000 +0000 @@ -509,7 +509,7 @@ as_image_set_from_variant (AsImage *image, GVariant *variant) { AsImagePrivate *priv = GET_PRIVATE (image); - GVariantDict dict; + g_auto(GVariantDict) dict; GVariant *tmp; g_variant_dict_init (&dict, variant); diff -Nru appstream-0.12.0/src/as-metadata.c appstream-0.12.2/src/as-metadata.c --- appstream-0.12.0/src/as-metadata.c 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/src/as-metadata.c 2018-08-04 07:39:44.000000000 +0000 @@ -59,6 +59,7 @@ gboolean update_existing; gboolean write_header; + AsParseFlags parse_flags; GPtrArray *cpts; } AsMetadataPrivate; @@ -186,6 +187,7 @@ priv->default_priority = 0; priv->write_header = TRUE; priv->update_existing = FALSE; + priv->parse_flags = AS_PARSE_FLAG_NONE; priv->cpts = g_ptr_array_new_with_free_func (g_object_unref); } @@ -220,10 +222,12 @@ as_context_set_format_version (context, priv->format_version); as_context_set_locale (context, priv->locale); as_context_set_origin (context, priv->origin); - as_context_set_media_baseurl (context, priv->media_baseurl); as_context_set_architecture (context, priv->arch); as_context_set_priority (context, priv->default_priority); + if (!as_flags_contains (priv->parse_flags, AS_PARSE_FLAG_IGNORE_MEDIABASEURL)) + as_context_set_media_baseurl (context, priv->media_baseurl); + as_context_set_style (context, style); as_context_set_filename (context, fname); @@ -259,9 +263,11 @@ g_free (tmp); /* set baseurl for the media files */ - tmp = (gchar*) xmlGetProp (node, (xmlChar*) "media_baseurl"); - as_context_set_media_baseurl (context, tmp); - g_free (tmp); + if (!as_flags_contains (priv->parse_flags, AS_PARSE_FLAG_IGNORE_MEDIABASEURL)) { + tmp = (gchar*) xmlGetProp (node, (xmlChar*) "media_baseurl"); + as_context_set_media_baseurl (context, tmp); + g_free (tmp); + } /* set architecture for the components */ tmp = (gchar*) xmlGetProp (node, (xmlChar*) "architecture"); @@ -310,6 +316,7 @@ static GPtrArray* as_metadata_yaml_parse_collection_doc (AsMetadata *metad, AsContext *context, const gchar *data, GError **error) { + AsMetadataPrivate *priv = GET_PRIVATE (metad); yaml_parser_t parser; yaml_event_t event; gboolean header = TRUE; @@ -404,8 +411,9 @@ as_context_set_priority (context, g_ascii_strtoll (value, NULL, 10)); } } else if (g_strcmp0 (key, "MediaBaseUrl") == 0) { - if (value != NULL) { - as_context_set_media_baseurl (context, value); + if (value != NULL && + !as_flags_contains (priv->parse_flags, AS_PARSE_FLAG_IGNORE_MEDIABASEURL)) { + as_context_set_media_baseurl (context, value); } } else if (g_strcmp0 (key, "Architecture") == 0) { if (value != NULL) { @@ -1327,6 +1335,33 @@ } /** + * as_metadata_get_parse_flags: + * @metad: a #AsMetadata instance. + * + * Get the metadata parse flags. + **/ +AsParseFlags +as_metadata_get_parse_flags (AsMetadata *metad) +{ + AsMetadataPrivate *priv = GET_PRIVATE (metad); + return priv->parse_flags; +} + +/** + * as_metadata_set_parse_flags: + * @metad: a #AsMetadata instance. + * @flags: the #AsParseFlags. + * + * Sets the current metadata parse flags. + **/ +void +as_metadata_set_parse_flags (AsMetadata *metad, AsParseFlags flags) +{ + AsMetadataPrivate *priv = GET_PRIVATE (metad); + priv->parse_flags = flags; +} + +/** * as_metadata_class_init: **/ static void diff -Nru appstream-0.12.0/src/as-metadata.h appstream-0.12.2/src/as-metadata.h --- appstream-0.12.0/src/as-metadata.h 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/src/as-metadata.h 2018-08-04 07:39:44.000000000 +0000 @@ -117,6 +117,18 @@ #define AS_CURRENT_FORMAT_VERSION AS_FORMAT_VERSION_V0_12 /** + * AsParseFlags: + * @AS_PARSE_FLAG_NONE: No flags. + * @AS_PARSE_FLAG_IGNORE_MEDIABASEURL: Do not process the media_baseurl document property. + * + * Influence certain aspects of how AppStream metadata is parsed. + */ +typedef enum { + AS_PARSE_FLAG_NONE = 0, + AS_PARSE_FLAG_IGNORE_MEDIABASEURL = 1 << 0 +} AsParseFlags; + +/** * AsMetadataError: * @AS_METADATA_ERROR_FAILED: Generic failure. * @AS_METADATA_ERROR_PARSE: Unable to parse the metadata file. @@ -207,6 +219,10 @@ void as_metadata_set_architecture (AsMetadata *metad, const gchar *arch); +AsParseFlags as_metadata_get_parse_flags (AsMetadata *metad); +void as_metadata_set_parse_flags (AsMetadata *metad, + AsParseFlags flags); + G_END_DECLS #endif /* __AS_METADATA_H */ diff -Nru appstream-0.12.0/src/as-pool.c appstream-0.12.2/src/as-pool.c --- appstream-0.12.0/src/as-pool.c 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/src/as-pool.c 2018-08-04 07:39:44.000000000 +0000 @@ -568,21 +568,22 @@ as_pool_clear (AsPool *pool) { AsPoolPrivate *priv = GET_PRIVATE (pool); - if (g_hash_table_size (priv->cpt_table) > 0) { - /* contents */ - g_hash_table_unref (priv->cpt_table); - priv->cpt_table = g_hash_table_new_full (g_str_hash, - g_str_equal, - g_free, - (GDestroyNotify) g_object_unref); - - /* cid info set */ - g_hash_table_unref (priv->known_cids); - priv->known_cids = g_hash_table_new_full (g_str_hash, + if (g_hash_table_size (priv->cpt_table) == 0) + return; + + /* contents */ + g_hash_table_unref (priv->cpt_table); + priv->cpt_table = g_hash_table_new_full (g_str_hash, + g_str_equal, + g_free, + (GDestroyNotify) g_object_unref); + + /* cid info set */ + g_hash_table_unref (priv->known_cids); + priv->known_cids = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); - } } /** @@ -840,14 +841,14 @@ mi_cid_desktop = g_strdup_printf ("%s.desktop", mi_cid); /* check with .desktop suffix too */ - if (!g_hash_table_contains (priv->known_cids, mi_cid_desktop)) { + if (g_hash_table_contains (priv->known_cids, mi_cid_desktop)) { g_debug ("Skipped: %s (already known)", fname); continue; } } /* quickly check if we know the component already */ - if (!g_hash_table_contains (priv->known_cids, mi_cid)) { + if (g_hash_table_contains (priv->known_cids, mi_cid)) { g_debug ("Skipped: %s (already known)", fname); continue; } @@ -926,7 +927,7 @@ if (!as_flags_contains (priv->flags, AS_POOL_FLAG_READ_METAINFO)) { g_autofree gchar *de_cid = g_path_get_basename (fname); - if (!g_hash_table_contains (priv->known_cids, de_cid)) { + if (g_hash_table_contains (priv->known_cids, de_cid)) { g_debug ("Skipped: %s (already known)", fname); continue; } @@ -934,7 +935,7 @@ /* check without .desktop suffix too */ if (g_str_has_suffix (de_cid, ".desktop")) { de_cid[strlen (de_cid) - 8] = '\0'; - if (!g_hash_table_contains (priv->known_cids, de_cid)) { + if (g_hash_table_contains (priv->known_cids, de_cid)) { g_debug ("Skipped: %s (already known)", fname); continue; } @@ -1084,7 +1085,6 @@ cpts = as_pool_get_components (pool); as_cache_file_save (fname, priv->locale, cpts, error); - g_ptr_array_unref (cpts); return TRUE; } @@ -1764,6 +1764,7 @@ g_warning ("Ignored serialized component: %s", str); } } + g_variant_unref (cptv); } return cpts; diff -Nru appstream-0.12.0/src/as-release.c appstream-0.12.2/src/as-release.c --- appstream-0.12.0/src/as-release.c 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/src/as-release.c 2018-08-04 07:39:44.000000000 +0000 @@ -819,8 +819,7 @@ } else if (g_strcmp0 (key, "urgency") == 0) { priv->urgency = as_urgency_kind_from_string (value); } else if (g_strcmp0 (key, "description") == 0) { - g_autofree gchar *tmp = as_yaml_get_localized_value (ctx, n, NULL); - as_release_set_description (release, tmp, NULL); + as_yaml_set_localized_table (ctx, n, priv->description); } else { as_yaml_print_unknown ("release", key); } @@ -975,7 +974,7 @@ { AsReleasePrivate *priv = GET_PRIVATE (release); GVariant *tmp; - GVariantDict rdict; + g_auto(GVariantDict) rdict; GVariantIter riter; GVariant *inner_child;; diff -Nru appstream-0.12.0/src/as-screenshot.c appstream-0.12.2/src/as-screenshot.c --- appstream-0.12.0/src/as-screenshot.c 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/src/as-screenshot.c 2018-08-04 07:39:44.000000000 +0000 @@ -504,10 +504,8 @@ else priv->kind = AS_SCREENSHOT_KIND_EXTRA; } else if (g_strcmp0 (key, "caption") == 0) { - gchar *lvalue; /* the caption is a localized element */ - lvalue = as_yaml_get_localized_value (ctx, n, NULL); - as_screenshot_set_caption (screenshot, lvalue, NULL); + as_yaml_set_localized_table (ctx, n, priv->caption); } else if (g_strcmp0 (key, "source-image") == 0) { /* there can only be one source image */ g_autoptr(AsImage) image = as_image_new (); @@ -625,7 +623,7 @@ { AsScreenshotPrivate *priv = GET_PRIVATE (screenshot); GVariantIter inner_iter; - GVariantDict idict; + g_auto(GVariantDict) idict; GVariant *tmp; g_autoptr(GVariant) images_var = NULL; @@ -647,6 +645,7 @@ g_autoptr(AsImage) img = as_image_new (); if (as_image_set_from_variant (img, img_child)) as_screenshot_add_image (screenshot, img); + g_variant_unref (img_child); } } diff -Nru appstream-0.12.0/src/as-tag.c appstream-0.12.2/src/as-tag.c --- appstream-0.12.0/src/as-tag.c 1970-01-01 00:00:00.000000000 +0000 +++ appstream-0.12.2/src/as-tag.c 2018-08-04 07:39:44.000000000 +0000 @@ -0,0 +1,103 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- + * + * Copyright (C) 2014-2018 Matthias Klumpp + * Copyright (C) 2014-2017 Richard Hughes + * + * Licensed under the GNU Lesser General Public License Version 2.1 + * + * This library is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 2.1 of the license, or + * (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library. If not, see . + */ + +/** + * SECTION:as-tag + * @short_description: Helper functions to convert to and from tag enums + * @include: appstream.h + * + * These functions will convert a tag enum such as %AS_TAG_COMPONENT to + * it's string form, and also vice-versa. + * + * These helper functions may be useful if implementing an AppStream parser. + */ + +#include "as-tag.h" + +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wmissing-field-initializers" +#endif + +#pragma GCC visibility push(hidden) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#pragma GCC diagnostic ignored "-Wsign-conversion" +#pragma GCC diagnostic ignored "-Wmissing-field-initializers" +#include "as-tag-xml-private.h" +#include "as-tag-yaml-private.h" +#pragma GCC diagnostic pop +#pragma GCC visibility pop + +/** + * as_xml_tag_from_string: + * @tag: the string. + * + * Converts the XML text representation to an enumerated value. + * + * Returns: a %AsTag, or %AS_TAG_UNKNOWN if not known. + * + * Since: 0.12.1 + **/ +AsTag +as_xml_tag_from_string (const gchar *tag) +{ + const struct xml_tag_data *ky; + AsTag etag = AS_TAG_UNKNOWN; + + /* invalid */ + if (tag == NULL) + return AS_TAG_UNKNOWN; + + /* use a perfect hash */ + ky = _as_xml_tag_from_gperf (tag, strlen (tag)); + if (ky != NULL) + etag = ky->etag; + + return etag; +} + +/** + * as_yaml_tag_from_string: + * @tag: the string. + * + * Converts the YAML text representation to an enumerated value. + * + * Returns: a %AsTag, or %AS_TAG_UNKNOWN if not known. + * + * Since: 0.12.1 + **/ +AsTag +as_yaml_tag_from_string (const gchar *tag) +{ + const struct yaml_tag_data *ky; + AsTag etag = AS_TAG_UNKNOWN; + + /* invalid */ + if (tag == NULL) + return AS_TAG_UNKNOWN; + + /* use a perfect hash */ + ky = _as_yaml_tag_from_gperf (tag, strlen (tag)); + if (ky != NULL) + etag = ky->etag; + + return etag; +} diff -Nru appstream-0.12.0/src/as-tag.h appstream-0.12.2/src/as-tag.h --- appstream-0.12.0/src/as-tag.h 1970-01-01 00:00:00.000000000 +0000 +++ appstream-0.12.2/src/as-tag.h 2018-08-04 07:39:44.000000000 +0000 @@ -0,0 +1,119 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- + * + * Copyright (C) 2014-2018 Matthias Klumpp + * + * Licensed under the GNU Lesser General Public License Version 2.1 + * + * This library is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 2.1 of the license, or + * (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library. If not, see . + */ + +#if !defined (__APPSTREAM_H) && !defined (AS_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __AS_TAG_H +#define __AS_TAG_H + +#include + +G_BEGIN_DECLS +#pragma GCC visibility push(hidden) + +/** + * AsTag: + * @AS_TAG_UNKNOWN: Type invalid or not known + * @AS_TAG_TYPE: - / `Type` + * @AS_TAG_PRIORITY: - / `Priority` + * @AS_TAG_MERGE: - / `Merge` + * @AS_TAG_ID: `id` / `ID` + * @AS_TAG_PKGNAME: `pkgname` / `Package` + * @AS_TAG_SOURCE_PKGNAME: `source_pkgname` / `SourcePackage` + * @AS_TAG_NAME: `name` / `Name` + * @AS_TAG_SUMMARY: `summary` / `Summary` + * @AS_TAG_DESCRIPTION: `description` / `Description` + * @AS_TAG_ICON: `icon` / `Icon` + * @AS_TAG_URL: `url` / `Url` + * @AS_TAG_CATEGORIES: `categories` / `Categories` + * @AS_TAG_KEYWORDS: `keywords` / `Keywords` + * @AS_TAG_MIMETYPES: ``mimetypes` / - + * @AS_TAG_PROVIDES: `provides` / `Provides` + * @AS_TAG_SCREENSHOTS: `screenshots` / `Screenshots` + * @AS_TAG_METADATA_LICENSE: `metadata_license` / `MetadataLicense` + * @AS_TAG_PROJECT_LICENSE: `project_license` / `ProjectLicense` + * @AS_TAG_PROJECT_GROUP: `project_group` / `ProjectGroup` + * @AS_TAG_DEVELOPER_NAME: `developer_name` / `DeveloperName` + * @AS_TAG_COMPULSORY_FOR_DESKTOP: `compulsory_for_desktop` / `CompulsoryForDesktops` + * @AS_TAG_RELEASES: `releases` / `Releases` + * @AS_TAG_EXTENDS: `extends` / `Extends` + * @AS_TAG_LANGUAGES: `languages` / `Languages` + * @AS_TAG_LAUNCHABLE: `launchable` / `Launchables` + * @AS_TAG_BUNDLE: `bundle` / `Bundles` + * @AS_TAG_TRANSLATION: `translation` / - + * @AS_TAG_SUGGESTS: `suggests` / `Suggests` + * @AS_TAG_CUSTOM: `custom` / `Custom` + * @AS_TAG_CONTENT_RATING: `content_rating` / `ContentRating` + * @AS_TAG_RECOMMENDS: `recommends` / `Recommends` + * @AS_TAG_REQUIRES: `requires` / `Requires` + * @AS_TAG_AGREEMENT: `agreement` / `Àgreement` + * + * The tag type. + **/ +typedef enum { + AS_TAG_UNKNOWN, + AS_TAG_TYPE, + AS_TAG_PRIORITY, + AS_TAG_MERGE, + AS_TAG_ID, + AS_TAG_PKGNAME, + AS_TAG_SOURCE_PKGNAME, + AS_TAG_NAME, + AS_TAG_SUMMARY, + AS_TAG_DESCRIPTION, + AS_TAG_ICON, + AS_TAG_URL, + AS_TAG_CATEGORIES, + AS_TAG_KEYWORDS, + AS_TAG_MIMETYPES, + AS_TAG_PROVIDES, + AS_TAG_SCREENSHOTS, + AS_TAG_METADATA_LICENSE, + AS_TAG_PROJECT_LICENSE, + AS_TAG_PROJECT_GROUP, + AS_TAG_DEVELOPER_NAME, + AS_TAG_COMPULSORY_FOR_DESKTOP, + AS_TAG_RELEASES, + AS_TAG_EXTENDS, + AS_TAG_LANGUAGES, + AS_TAG_LAUNCHABLE, + AS_TAG_BUNDLE, + AS_TAG_TRANSLATION, + AS_TAG_SUGGESTS, + AS_TAG_CUSTOM, + AS_TAG_CONTENT_RATING, + AS_TAG_RECOMMENDS, + AS_TAG_REQUIRES, + AS_TAG_AGREEMENT, + + /*< private >*/ + AS_TAG_LAST +} AsTag; + +AsTag as_xml_tag_from_string (const gchar *tag); + +AsTag as_yaml_tag_from_string (const gchar *tag); + +#pragma GCC visibility pop +G_END_DECLS + +#endif /* __AS_TAG_H */ diff -Nru appstream-0.12.0/src/as-tag-xml.gperf appstream-0.12.2/src/as-tag-xml.gperf --- appstream-0.12.0/src/as-tag-xml.gperf 1970-01-01 00:00:00.000000000 +0000 +++ appstream-0.12.2/src/as-tag-xml.gperf 2018-08-04 07:39:44.000000000 +0000 @@ -0,0 +1,41 @@ +%language=ANSI-C +%enum +%define hash-function-name _as_xml_tag_hash +%define lookup-function-name _as_xml_tag_from_gperf +%define string-pool-name xml_tag_stringpool +%readonly-tables +%includes +%pic +%struct-type +struct xml_tag_data { int name; unsigned int etag; }; +%% +id, AS_TAG_ID +pkgname, AS_TAG_PKGNAME +source_pkgname, AS_TAG_SOURCE_PKGNAME +name, AS_TAG_NAME +summary, AS_TAG_SUMMARY +description, AS_TAG_DESCRIPTION +icon, AS_TAG_ICON +url, AS_TAG_URL +categories, AS_TAG_CATEGORIES +keywords, AS_TAG_KEYWORDS +mimetypes, AS_TAG_MIMETYPES +provides, AS_TAG_PROVIDES +screenshots, AS_TAG_SCREENSHOTS +metadata_license, AS_TAG_METADATA_LICENSE +project_license, AS_TAG_PROJECT_LICENSE +project_group, AS_TAG_PROJECT_GROUP +developer_name, AS_TAG_DEVELOPER_NAME +compulsory_for_desktop, AS_TAG_COMPULSORY_FOR_DESKTOP +releases, AS_TAG_RELEASES +extends, AS_TAG_EXTENDS +languages, AS_TAG_LANGUAGES +launchable, AS_TAG_LAUNCHABLE +bundle, AS_TAG_BUNDLE +translation, AS_TAG_TRANSLATION +suggests, AS_TAG_SUGGESTS +custom, AS_TAG_CUSTOM +content_rating, AS_TAG_CONTENT_RATING +recommends, AS_TAG_RECOMMENDS +requires, AS_TAG_REQUIRES +agreement, AS_TAG_AGREEMENT diff -Nru appstream-0.12.0/src/as-tag-yaml.gperf appstream-0.12.2/src/as-tag-yaml.gperf --- appstream-0.12.0/src/as-tag-yaml.gperf 1970-01-01 00:00:00.000000000 +0000 +++ appstream-0.12.2/src/as-tag-yaml.gperf 2018-08-04 07:39:44.000000000 +0000 @@ -0,0 +1,42 @@ +%language=ANSI-C +%enum +%define hash-function-name _as_yaml_tag_hash +%define lookup-function-name _as_yaml_tag_from_gperf +%define string-pool-name yaml_tag_stringpool +%readonly-tables +%includes +%pic +%struct-type +struct yaml_tag_data { int name; unsigned int etag; }; +%% +Type, AS_TAG_TYPE +Priority, AS_TAG_PRIORITY +Merge, AS_TAG_MERGE +ID, AS_TAG_ID +Package, AS_TAG_PKGNAME +SourcePackage, AS_TAG_SOURCE_PKGNAME +Name, AS_TAG_NAME +Summary, AS_TAG_SUMMARY +Description, AS_TAG_DESCRIPTION +Icon, AS_TAG_ICON +Url, AS_TAG_URL +Categories, AS_TAG_CATEGORIES +Keywords, AS_TAG_KEYWORDS +Provides, AS_TAG_PROVIDES +Screenshots, AS_TAG_SCREENSHOTS +MetadataLicense, AS_TAG_METADATA_LICENSE +ProjectLicense, AS_TAG_PROJECT_LICENSE +ProjectGroup, AS_TAG_PROJECT_GROUP +DeveloperName, AS_TAG_DEVELOPER_NAME +CompulsoryForDesktops, AS_TAG_COMPULSORY_FOR_DESKTOP +Releases, AS_TAG_RELEASES +Extends, AS_TAG_EXTENDS +Languages, AS_TAG_LANGUAGES +Launchable, AS_TAG_LAUNCHABLE +Bundles, AS_TAG_BUNDLE +Suggests, AS_TAG_SUGGESTS +Custom, AS_TAG_CUSTOM +ContentRating, AS_TAG_CONTENT_RATING +Recommends, AS_TAG_RECOMMENDS +Requires, AS_TAG_REQUIRES +Agreements, AS_TAG_AGREEMENT diff -Nru appstream-0.12.0/src/as-utils.c appstream-0.12.2/src/as-utils.c --- appstream-0.12.0/src/as-utils.c 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/src/as-utils.c 2018-08-04 07:39:44.000000000 +0000 @@ -276,7 +276,7 @@ GPtrArray* as_utils_find_files_matching (const gchar* dir, const gchar* pattern, gboolean recursive, GError **error) { - GPtrArray* list; + GPtrArray *list; GFileInfo *file_info; GFileEnumerator *enumerator = NULL; GFile *fdir; @@ -291,12 +291,16 @@ goto out; while ((file_info = g_file_enumerator_next_file (enumerator, NULL, &tmp_error)) != NULL) { - gchar *path; + g_autofree gchar *path = NULL; - if (tmp_error != NULL) - goto out; - if (g_file_info_get_is_hidden (file_info)) + if (tmp_error != NULL) { + g_object_unref (file_info); + break; + } + if (g_file_info_get_is_hidden (file_info)) { + g_object_unref (file_info); continue; + } path = g_build_filename (dir, g_file_info_get_name (file_info), @@ -310,8 +314,8 @@ if (subdir_list == NULL) { g_ptr_array_unref (list); list = NULL; - g_free (path); - goto out; + g_object_unref (file_info); + break; } for (i=0; ilen; i++) g_ptr_array_add (list, @@ -320,12 +324,15 @@ } else { if (!as_str_empty (pattern)) { if (!g_pattern_match_simple (pattern, g_file_info_get_name (file_info))) { - g_free (path); + g_object_unref (file_info); continue; } } g_ptr_array_add (list, path); + path = NULL; } + + g_object_unref (file_info); } @@ -1017,8 +1024,8 @@ int rc; gboolean isnum; - strcpy(str1, a); - strcpy(str2, b); + strcpy (str1, a); + strcpy (str2, b); one = str1; two = str2; diff -Nru appstream-0.12.0/src/as-validator.c appstream-0.12.2/src/as-validator.c --- appstream-0.12.0/src/as-validator.c 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/src/as-validator.c 2018-08-04 07:39:44.000000000 +0000 @@ -714,7 +714,7 @@ as_validator_add_issue (validator, license_node, AS_ISSUE_IMPORTANCE_WARNING, AS_ISSUE_KIND_VALUE_WRONG, - "The metadata itself seems to be licensed under a complex collection of licenses. Please license the data under a simple permissive license, like FSFAP, CC-0-1.0 or MIT " + "The metadata itself seems to be licensed under a complex collection of licenses. Please license the data under a simple permissive license, like FSFAP, MIT or CC0-1.0 " "to allow distributors to include it in mixed data collections without the risk of license violations due to mutually incompatible licenses."); return; } @@ -1235,6 +1235,8 @@ as_validator_check_requires_recommends (validator, iter, cpt, AS_RELATION_KIND_REQUIRES); } else if (g_strcmp0 (node_name, "recommends") == 0) { as_validator_check_requires_recommends (validator, iter, cpt, AS_RELATION_KIND_RECOMMENDS); + } else if (g_strcmp0 (node_name, "agreement") == 0) { + as_validator_check_children_quick (validator, iter, "agreement_section", cpt); } else if (g_strcmp0 (node_name, "custom") == 0) { as_validator_check_appear_once (validator, iter, found_tags, cpt); as_validator_check_children_quick (validator, iter, "value", cpt); @@ -1359,11 +1361,13 @@ /* validate addon specific stuff */ if (as_component_get_extends (cpt)->len > 0) { AsComponentKind kind = as_component_get_kind (cpt); - if ((kind != AS_COMPONENT_KIND_ADDON) && (kind != AS_COMPONENT_KIND_LOCALIZATION)) + if ((kind != AS_COMPONENT_KIND_ADDON) && + (kind != AS_COMPONENT_KIND_LOCALIZATION) && + (kind != AS_COMPONENT_KIND_REPOSITORY)) as_validator_add_issue (validator, NULL, AS_ISSUE_IMPORTANCE_ERROR, AS_ISSUE_KIND_TAG_NOT_ALLOWED, - "An 'extends' tag is specified, but the component is not of type 'addon' or 'localization'."); + "An 'extends' tag is specified, but the component is not of type 'addon', 'localization' or 'repository'."); } else { if (as_component_get_kind (cpt) == AS_COMPONENT_KIND_ADDON) as_validator_add_issue (validator, NULL, @@ -1858,7 +1862,7 @@ as_validator_set_current_fname (validator, fname_basename); as_validator_add_issue (validator, NULL, - AS_ISSUE_IMPORTANCE_INFO, + AS_ISSUE_IMPORTANCE_WARNING, AS_ISSUE_KIND_LEGACY, "The metainfo file is stored in a legacy path. Please place it in '/usr/share/metainfo'."); diff -Nru appstream-0.12.0/src/as-xml.h appstream-0.12.2/src/as-xml.h --- appstream-0.12.0/src/as-xml.h 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/src/as-xml.h 2018-08-04 07:39:44.000000000 +0000 @@ -29,6 +29,7 @@ #include #include #include "as-context.h" +#include "as-tag.h" G_BEGIN_DECLS #pragma GCC visibility push(hidden) diff -Nru appstream-0.12.0/src/as-yaml.c appstream-0.12.2/src/as-yaml.c --- appstream-0.12.0/src/as-yaml.c 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/src/as-yaml.c 2018-08-04 07:39:44.000000000 +0000 @@ -398,61 +398,54 @@ } /** - * as_yaml_get_localized_node: + * as_yaml_get_node_locale: + * @node: A YAML node + * + * Returns: The locale of a node, if the node should be considered for inclusion. + * %NULL if the node should be ignored due to a not-matching locale. */ -GNode* -as_yaml_get_localized_node (AsContext *ctx, GNode *node, gchar *locale_override) +const gchar* +as_yaml_get_node_locale (AsContext *ctx, GNode *node) { - GNode *n; - GNode *tnode = NULL; - const gchar *locale; + const gchar *key = as_yaml_node_get_key (node); - if (locale_override == NULL) - locale = as_context_get_locale (ctx); - else - locale = locale_override; - - for (n = node->children; n != NULL; n = n->next) { - const gchar *key = as_yaml_node_get_key (n); - - if ((tnode == NULL) && (g_strcmp0 (key, "C") == 0)) { - tnode = n; - if (g_strcmp0 (locale, "C") == 0) - goto out; - } - - if (g_strcmp0 (locale, key) == 0) { - tnode = n; - goto out; - } + if (as_context_get_all_locale_enabled (ctx)) { + /* we should read all languages */ + return key; + } - if (as_utils_locale_is_compatible (locale, key)) - tnode = n; + /* we always include the untranslated strings */ + if (g_strcmp0 (key, "C") == 0) { + return key; } -out: - return tnode; + if (as_utils_locale_is_compatible (as_context_get_locale (ctx), key)) { + return key; + } else { + /* If we are here, we haven't found a matching locale. + * In that case, we return %NULL to indicate that this element should not be added. + */ + return NULL; + } } /** - * as_yaml_get_localized_value: + * as_yaml_set_localized_table: * - * Get localized string from a translated DEP-11 key + * Apply node values to a hash table holding the l10n data. */ -gchar* -as_yaml_get_localized_value (AsContext *ctx, GNode *node, gchar *locale_override) +void +as_yaml_set_localized_table (AsContext *ctx, GNode *node, GHashTable *l10n_table) { - GNode *tnode; - gchar *lvalue; - - tnode = as_yaml_get_localized_node (ctx, node, locale_override); - if (tnode == NULL) - return NULL; - - lvalue = g_strdup ((gchar*) tnode->children->data); - g_strstrip (lvalue); + GNode *n; - return lvalue; + for (n = node->children; n != NULL; n = n->next) { + const gchar *locale = as_yaml_get_node_locale (ctx, n); + if (locale != NULL) + g_hash_table_insert (l10n_table, + as_locale_strip_encoding (g_strdup (locale)), + g_strdup (as_yaml_node_get_value (n))); + } } /** diff -Nru appstream-0.12.0/src/as-yaml.h appstream-0.12.2/src/as-yaml.h --- appstream-0.12.0/src/as-yaml.h 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/src/as-yaml.h 2018-08-04 07:39:44.000000000 +0000 @@ -27,6 +27,7 @@ #include #include "as-context.h" +#include "as-tag.h" G_BEGIN_DECLS #pragma GCC visibility push(hidden) @@ -81,9 +82,11 @@ GNode *as_yaml_get_localized_node (AsContext *ctx, GNode *node, gchar *locale_override); -gchar *as_yaml_get_localized_value (AsContext *ctx, - GNode *node, - gchar *locale_override); +const gchar *as_yaml_get_node_locale (AsContext *ctx, + GNode *node); +void as_yaml_set_localized_table (AsContext *ctx, + GNode *node, + GHashTable *l10n_table); void as_yaml_emit_localized_entry (yaml_emitter_t *emitter, const gchar *key, diff -Nru appstream-0.12.0/src/meson.build appstream-0.12.2/src/meson.build --- appstream-0.12.0/src/meson.build 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/src/meson.build 2018-08-04 07:39:44.000000000 +0000 @@ -4,7 +4,8 @@ aslib_src = [ 'as-utils.c', - # internal + # internal + 'as-tag.c', 'as-context.c', 'as-xml.c', 'as-yaml.c', @@ -12,7 +13,7 @@ 'as-desktop-entry.c', 'as-distro-extras.c', 'as-stemmer.c', - # (mostly) public + # (mostly) public 'as-spdx.c', 'as-metadata.c', 'as-component.c', @@ -33,7 +34,9 @@ 'as-suggested.c', 'as-content-rating.c', 'as-launchable.c', - 'as-relation.c' + 'as-relation.c', + 'as-agreement.c', + 'as-agreement-section.c' ] aslib_pub_headers = [ @@ -59,11 +62,14 @@ 'as-suggested.h', 'as-content-rating.h', 'as-launchable.h', - 'as-relation.h' + 'as-relation.h', + 'as-agreement.h', + 'as-agreement-section.h' ] aslib_priv_headers = [ 'as-utils-private.h', + 'as-tag.h', 'as-context.h', 'as-xml.h', 'as-yaml.h', @@ -81,7 +87,9 @@ 'as-checksum-private.h', 'as-icon-private.h', 'as-launchable-private.h', - 'as-relation-private.h' + 'as-relation-private.h', + 'as-agreement-private.h', + 'as-agreement-section-private.h' ] aslib_res = glib.compile_resources ( @@ -90,6 +98,32 @@ source_dir : ['../data'] ) + +# gperf sources +aslib_gperf_xml = custom_target( + 'gperf as-xml-tag', + output : 'as-tag-xml-private.h', + input : 'as-tag-xml.gperf', + command : [ + gperf.path(), + '@INPUT@', + '--output-file', + '@OUTPUT@' + ] +) +aslib_gperf_yaml = custom_target( + 'gperf as-yaml-tag', + output : 'as-tag-yaml-private.h', + input : 'as-tag-yaml.gperf', + command : [ + gperf.path(), + '@INPUT@', + '--output-file', + '@OUTPUT@' + ] +) +aslib_src = aslib_src + [aslib_gperf_xml, aslib_gperf_yaml] + aslib_deps = [glib_dep, xml2_dep, yaml_dep, gobject_dep, gio_unix_dep] if get_option ('stemming') aslib_deps += [stemmer_lib] @@ -115,9 +149,20 @@ description: 'Library to work with AppStream metadata.', filebase: 'appstream', subdirs: 'appstream', - requires: ['glib-2.0', 'gio-2.0'] + requires: ['glib-2.0', 'gio-2.0', 'gobject-2.0'] ) +# Meson adds (in our case) bogus Requires.private lines which break +# builds using libappstream. Fix this issue by post-processing the file. +sed_prog = find_program('sed') +pc_fixup = run_command(sed_prog, + '-i', + '/^Requires.private\|^Libs.private/ d', + join_paths(meson.build_root(), 'meson-private', 'appstream.pc')) +if pc_fixup.returncode() != 0 + error('Unable to fix up the .pc file:\n' + pc_fixup.stderr()) +endif + install_headers(aslib_pub_headers, subdir: 'appstream') if get_option ('gir') diff -Nru appstream-0.12.0/tests/ci/Dockerfile appstream-0.12.2/tests/ci/Dockerfile --- appstream-0.12.0/tests/ci/Dockerfile 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/tests/ci/Dockerfile 2018-08-04 07:39:44.000000000 +0000 @@ -25,6 +25,7 @@ publican \ gobject-introspection \ libstemmer-dev \ + gperf \ valac # finish diff -Nru appstream-0.12.0/tests/meson.build appstream-0.12.2/tests/meson.build --- appstream-0.12.0/tests/meson.build 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/tests/meson.build 2018-08-04 07:39:44.000000000 +0000 @@ -106,3 +106,21 @@ args: as_test_args, env: as_test_env ) + +# Performance +as_test_perf_exe = executable ('as-test_perf', + ['test-performance.c', + as_test_common_src], + include_directories: [appstream_lib_inc, + include_directories('..')], + dependencies: [glib_dep, + gobject_dep, + gio_dep, + xml2_dep], + link_with: [appstream_lib], +) +test ('as-test_perf', + as_test_perf_exe, + args: as_test_args, + env: as_test_env +) diff -Nru appstream-0.12.0/tests/samples/collection/xml/limba_6375db4bb7186c39a4860544884575f7.xml appstream-0.12.2/tests/samples/collection/xml/limba_6375db4bb7186c39a4860544884575f7.xml --- appstream-0.12.0/tests/samples/collection/xml/limba_6375db4bb7186c39a4860544884575f7.xml 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/tests/samples/collection/xml/limba_6375db4bb7186c39a4860544884575f7.xml 2018-08-04 07:39:44.000000000 +0000 @@ -1,6 +1,6 @@ - + org.neverball.Neverball Neverball A 3D arcade game with a ball. diff -Nru appstream-0.12.0/tests/samples/collection/xml/lvfs-gdpr.xml appstream-0.12.2/tests/samples/collection/xml/lvfs-gdpr.xml --- appstream-0.12.0/tests/samples/collection/xml/lvfs-gdpr.xml 1970-01-01 00:00:00.000000000 +0000 +++ appstream-0.12.2/tests/samples/collection/xml/lvfs-gdpr.xml 2018-08-04 07:39:44.000000000 +0000 @@ -0,0 +1,401 @@ + + + + + + + org.fwupd.lvfs + Linux Vendor Firmware Service + A firmware repository + CC0 + + + + + Introduction + +

+ We hold personal data about vendors, administrators, clients and other + individuals for a variety of purposes. + This policy sets out how we seek to protect personal data and ensure that + administrators understand the rules governing their use of personal data to + which they have access in the course of their work. + In particular, this policy requires that the Data Protection Officer (DPO) be + consulted before any significant new data processing activity is initiated to + ensure that relevant compliance steps are addressed. +

+
+
+ + + Scope + +

+ This policy applies to all users who have access to any of the personally + identifiable data. +

+
+
+ + + Who is responsible for this policy? + +

+ As the Data Protection Officer, Richard Hughes + has overall responsibility for the day-to-day implementation of this policy. + The DPO is registered with the Information Commissioner’s Office (ICO) in the + United Kingdom as a registered data controller. +

+
+
+ + + Fair and lawful processing + +

+ We must process personal data fairly and lawfully in accordance with individuals’ rights. + This generally means that we should not process personal data unless the + individual whose details we are processing has consented to this happening, + or where such collection is unavoidable and/or considered pragmatic in the + context, e.g. logging the number of downloads of a particular file. +

+

+ We do not consider an IP address to represent a single user (due to NAT or VPN use), + and as such metadata requests are not considered personal data using the draft GDPR guidelines. +

+
+
+ + + Accuracy and relevance + +

+ We will ensure that any personal data we process is accurate, adequate, + relevant and not excessive, given the purpose for which it was obtained. + We will not process personal data obtained for one purpose for any unconnected + purpose unless the individual concerned has agreed to this or would otherwise + reasonably expect this. + Individuals may ask that we correct inaccurate personal data relating to them. + If you believe that information is inaccurate you should inform the DPO. +

+
+
+ + + Your personal data + +

+ You must take reasonable steps to ensure that personal data we hold about + hardware vendors is accurate and updated as required. + For example, if your personal circumstances change, please update them using + the profile pages or inform the Data Protection Officer. +

+
+
+ + + Data security + +

+ We keep personal data secure against loss or misuse. + Where other organisations process personal data as a service on our behalf, + the DPO will establish what, if any, additional specific data security + arrangements need to be implemented in contracts with those third party + organisations. +

+
+
+ + + Storing data securely + +

+ All data is stored electronically. + All documents and code are held on a locked LUKS partition with a password + adhering to security best practices. +

+
+
+ + + Data retention + +

+ We must retain personal data for no longer than is necessary. + What is necessary will depend on the circumstances of each case, taking into + account the reasons that the personal data was obtained, but should be + determined in a manner consistent with our data retention guidelines. + Anonymized user data (e.g. metadata requests) will be kept for a maximum of + 5 years which allows us to project future service requirements and provide + usage graphs to the vendor. +

+
+
+ + + Transferring data internationally + +

+ There are restrictions on international transfers of personal data. + We do not transfer personal data anywhere outside the EU without the approval + of the Data Protection Officer, unless required to do so by law. +

+
+
+ + + Subject Access Requests + +

+ Please note that under the Data Protection Act 1998, individuals are entitled, + subject to certain exceptions, to request access to information held about them. +

+

+ On receiving a subject access request, we will refer that request immediately + to the DPO. We may ask you to help us comply with those requests. + Please also contact the Data Protection Officer if you would like to correct + or request information that we hold about you. + There are also restrictions on the information to which you are entitled under + applicable law. +

+
+
+ + + Processing data in accordance with your rights + +

+ We will never use identifiable vendor data for direct marketing purposes. +

+
+
+ + + Transparency of data protection + +

+ Being transparent and providing accessible information to individuals about how + we will use their personal data is important for our project. +

+

+ We will ensure any use of personal data is justified using at least one of + the conditions for processing and this had been specifically documented. +

+
+
+ + + Consent + +

+ The data that we collect is subject to active consent by the data subject. + This consent can be revoked at any time, but would end any vendor + relationship with the LVFS. +

+
+
+ + + Data portability + +

+ Upon request, a data subject should have the right to receive a copy of their + data in a structured format, typically an SQL export. + These requests should be processed within one month, provided there is no + undue burden and it does not compromise the privacy of other individuals. + A data subject may also request that their data is transferred directly to + another system. This is available for free. +

+
+
+ + + Right to be forgotten + +

+ A vendor may request that any information held on them is deleted or removed, + and any third parties who process or use that data must also comply with the request. + An erasure request can only be refused if an exemption applies. +

+
+
+ + + Privacy by design and default + +

+ Privacy by design is an approach to projects that promote privacy and data + protection compliance from the start. + The DPO will be responsible for conducting Privacy Impact Assessments and + ensuring that all changes commence with a privacy plan. + When relevant, and when it does not have a negative impact on the data subject, + privacy settings will be set to the most private by default. +

+
+
+ + + Data audit and register + +

+ Regular data audits to manage and mitigate risks will inform the data register. + This contains information on what data is held, where it is stored, + how it is used, who is responsible and any further regulations or retention + timescales that may be relevant. +

+
+
+ + + Reporting breaches + +

+ All users of the LVFS have an obligation to report actual or potential data + protection compliance failures. This allows us to: +

+
    +
  • Investigate the failure and take remedial steps if necessary
  • +
  • Maintain a register of compliance failures
  • +
  • + Notify the Supervisory Authority (SA) of any compliance failures that are + material either in their own right or as part of a pattern of failures +
  • +
+

+ Please refer to the DPO for our reporting procedure. +

+
+
+ + + Monitoring + +

+ Everyone who actively uses the LVFS must observe this policy. + The DPO has overall responsibility for this policy. + They will monitor it regularly to make sure it is being adhered to. +

+
+
+ + + Consequences of Failing to Comply + +

+ We take compliance with this policy very seriously. + Failure to comply puts both you and us at risk. + The importance of this policy means that failure to comply with any requirement + may lead to disciplinary action under our procedures. + If you have any questions or concerns about anything in this policy, + do not hesitate to contact the DPO. +

+
+
+ + + Details: Firmware Vendor Information + +

+ What: The hardware vendor name, password, GPG public key and content of original + uploaded firmware files.. +

+

+ Why colected: Secure authentication, to allow any possible future audit and to provide + authorised users access to signed firmware files. +

+

+ Where stored: MySQL database on fwupd.org. +

+

+ When copied: Backed up to off-site secure LUKS partition weekly. +

+

+ Who has access: The hardware vendor (filtered by the QA group) and the DPO. +

+

+ Wiped: When the vendor requests deletion of the user account. +

+
+
+ + + Details: Service Event Log + +

+ What: IP address (unhashed) and REST method requested, along with any error. +

+

+ Why colected: Providing an event log for checking what the various hardware vendors are + doing, or trying to do.. +

+

+ Where stored: MySQL database on fwupd.org. +

+

+ When copied: Backed up to off-site secure LUKS partition weekly. +

+

+ Who has access: The hardware vendor (filtered by the QA group) and the DPO. +

+

+ Wiped: When the QA group is deleted. +

+
+
+ + + Details: Firmware Download Log + +

+ What: IP address (hashed), timestamp, filename of firmware, user-agent of client. +

+

+ Why colected: To know what client versions are being used for download, and to provide + a download count over time for a specific firmware file. +

+

+ Where stored: MySQL database on fwupd.org. +

+

+ When copied: Backed up to off-site secure LUKS partition weekly. +

+

+ Who has access: The hardware vendor (filtered by the QA group) and the DPO. +

+

+ Wiped: When the firmware is deleted. +

+
+
+ + + Details: Firmware Reports + +

+ What: Machine ID (hashed), failure string and checksum of failing file, + OS distribution name and version. +

+

+ Why colected: Allows the hardware vendor to assess if the firmware update is working on + real hardware. +

+

+ Where stored: MySQL database on fwupd.org. +

+

+ When copied: Backed up to off-site secure LUKS partition weekly. +

+

+ Who has access: The hardware vendor (filtered by the QA group) and the DPO. +

+

+ Wiped: When the firmware is deleted. +

+
+
+ +
+ +
+ +
diff -Nru appstream-0.12.0/tests/samples/dep11-0.8.yml appstream-0.12.2/tests/samples/dep11-0.8.yml --- appstream-0.12.0/tests/samples/dep11-0.8.yml 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/tests/samples/dep11-0.8.yml 2018-08-04 07:39:44.000000000 +0000 @@ -465,3 +465,198 @@ Type: desktop-app Url: homepage: http://www.gnu.org/software/pspp/ +--- +Type: desktop-application +ID: kid3.desktop +Package: kid3 +Name: + C: Kid3 + sr: Кид3 + sr@ijekavian: Кид3 +Summary: + de: Metadaten von Audio-Dateien bearbeiten + pl: Modyfikowanie metadanych plików dźwiękowych + fi: Muokkaa ja konvertoi äänitiedostojen tageja + C: Edit audio file metadata + cs: Upravit metadata zvukového souboru + ru: Редактировать метаданные аудиофайла + tr: Ses dosyası üstveri düzenle + sr: Уређујте метаподатке звучних датотека + es: Editar los metadatos de archivos de sonido + fr: Modifier les métadonnées de fichiers son + it: Modificare i metadati di file sono + sr@latin: Uređujte metapodatke zvučnih datoteka +Description: + ru: >- +

С помощью Kid3, редактора ID3-тегов для KDE, вы можете: * Редактировать ID3v1.1 теги в MP3 файлах * Редактировать + все ID3v2.3 и ID3v2.4 фреймы в MP3 файлах * Конвертировать теги между форматами ID3v1.1, ID3v2.3 и ID3v2.4 * Редактировать + теги в файлах MP3, Ogg/Vorbis, Opus, DSF, FLAC, MPC, APE, MP4/AAC, MP2, Speex, TrueAudio, WavPack, WMA, WAV и AIFF + * Редактировать теги сразу в нескольких файлах, такие как артист, альбом, год и жанр всех файлов в альбоме, обычно + имеющих одинаковые значения * Генерировать теги из названий файлов * Генерировать поля тегов на основе других полей + * Генерировать названия файлов из тегов * Генерировать файлы списка проигрывания * Автоматически преобразовывать регистр + и переводить строки * Импортировать и экспортировать данные альбома * Импортировать из gnudb.org, TrackType.org, MusicBrainz, + Discogs, Amazon

+ +

Этот пакет использует библиотеки KDE. Если вы не используете KDE, установите пакет kid3-qt вместо этого.

+ fr: >- +

Kid3 est un éditeur de balises ID3 pour KDE offrant les fonctionnalités suivantes⋅: —⋅éditer les balises ID3v1.1 des + fichiers MP3⋅; —⋅éditer tous les champs ID3v2.3 et ID3v2.4 des fichiers MP3⋅; —⋅convertir entre les balises ID3v1.1, + ID3v2.3 et ID3v2.4⋅; —⋅éditer les balises des fichiers MP3, Ogg/Vorbis, Opus, DSF, FLAC, MPC, APE, MP4/AAC, MP2, Speex, + TrueAudio, WavPack, WMA, WAV, AIFF et des modules de tracker ; —⋅éditer les balises de plusieurs fichiers en même + temps. Par exemple les champs artiste, album, année et genre de tous les fichiers d'un même album ont généralement + les mêmes valeurs et peuvent être définies en même temps⋅; —⋅générer les balises depuis les noms de fichiers⋅; —⋅générer + les balises depuis le contenu des champs de balise⋅; —⋅générer les noms de fichiers depuis les balises⋅; —⋅générer des + listes de lecture⋅; —⋅gérer de façon automatique la casse et les conversions de chaînes de caractères⋅; —⋅importer + et exporter les données d'un album⋅; —⋅importer les balises depuis gnudb.org, TrackType.org, MusicBrainz, Discogs, + Amazon.

+ +

Ce paquet utilise des bibliothèques de KDE. Pour une utilisation hors KDE, voir le paquet kid3-qt.

+ sk: >- +

Pomocou Kid3, editora zvukových značiek ID3 pre KDE môžete: * upravovať značky ID3v1.1 vo vašich MP3 * upravovať + všetky rámce ID3v2.3 a ID3v2.4 vo vašich MP3 * konvertovať značky medzi formátmi ID3v1.1, ID3v2.3 a ID3v2.4 * upravovať + značky v súboroch MP3, Ogg/Vorbis, Opus, DSF, FLAC, MPC, APE, MP4/AAC, MP2, Speex, TrueAudio, WavPack, WMA, WAV, AIFF + a mod. * upravovať značky viacerých súborov naraz, napr. interpret, album, rok a žáner všetkých súborov v albume máva + zvyčajne rovnaké hodnoty a je možné ich nastaviť naraz * tvorba značiek z názvov súboru * tvorba značiek z obsahu + polí značiek * tvorba názvov súboru zo značiek * tvorba súborov so zoznamom stôp * automatická konverzia veľkosti písmen + a preklad reťazcov * import a export dát albumov * import z gnudb.org, TrackType.org, MusicBrainz, Discogs, Amazon

+ +

Tento balík používa knižnice KDE. Ak nepoužívate KDE, mali by ste použiť kid3-qt.

+ it: >- +

Con Kid3, un editor di tag ID3 per KDE, è possibile: * modificare i tag ID3v1.1 nei file MP3; * modificare tutti + i frame ID3v2.3 e ID3v2.4 nei file MP3; * convertire fra loro i tag ID3v1.1, ID3v2.3 e ID3v2.4; * modificare i tag in + file MP3, Ogg/Vorbis, Opus, DSF, FLAC, MPC, APE, MP4/AAC, MP2, Speex, TrueAudio, WavPack, WMA, WAV, AIFF e moduli di + tracker; * modificare i tag su più file, per esempio l'artista, l'album, l'anno e il genere di tutti + i file di un album hanno gli stessi valori e quindi possono essere impostati tutti insieme; * creare i tag dai nomi + dei file; * creare tag dal contenuto dei campi dei tag; * creare i nomi dei file dai tag; * creare dei file di scaletta; + * cambiare minuscole/maiuscole e tradurre stringhe automaticamente; * importare ed esportare i dati di un album; * importare + da gnudb.org, TrackType.org, MusicBrainz, Discogs, Amazon.

+ +

Questo pacchetto utilizza le librerie di KDE; se non si vuole usare KDE si dovrebbe usare kid3-qt.

+ da: >- +

Med Kid3, et ID3-mærkeredigeringsprogram for KDE, kan du: * Redigere ID3v1.1-mærker i dine MP3-filer * Redigere alle + ID3v2.3- og ID3v2.4-rammer i dine MP3-filer * Konvertere mellem ID3v1.1-, ID3v2.3- og ID3v2.4-mærker * Redigere mærker + i MP3, Ogg/Vorbis, Opus, DSF, FLAC, MPC, APE, MP4/AAC, MP2, Speex, TrueAudio, WavPack, WMA, WAV, AIFF-filer og tracker-moduler + * Redigere mærker for flere filer, f.eks. kunstner, album, år og genre så at alle filer for et album har de samme værdier + og kan samles * Oprette mærker fra filnavne * Oprette mærker fra indholdet af mærkefelter * Oprette filnavne fra mærker + * Oprette afspilningslister * Automatisk store/små bogstaver og strengoversættelse * Importere og eksportere albumdata + * Importere fra gnudb.org, TrackType.org, MusicBrainz, Discogs, Amazon

+ +

Denne pakke bruger KDE-biblioteker, hvis du ikke bruger KDE, så bør du bruge kid3-qt.

+ en: >- +

With Kid3, an ID3 tag editor for KDE you can: * Edit ID3v1.1 tags in your MP3 files * Edit all ID3v2.3 and ID3v2.4 + frames in your MP3 files * Convert between ID3v1.1, ID3v2.3 and ID3v2.4 tags * Edit tags in MP3, Ogg/Vorbis, Opus, DSF, + FLAC, MPC, APE, MP4/AAC, MP2, Speex, TrueAudio, WavPack, WMA, WAV, AIFF files and tracker modules. * Edit tags of + multiple files, e.g. the artist, album, year and genre of all files of an album typically have the same values and + can be set together * Generate tags from filenames * Generate tags from the contents of tag fields * Generate filenames + from tags * Generate playlist files * Automatic case conversion and string translation * Import and export album data + * Import from gnudb.org, TrackType.org, MusicBrainz, Discogs, Amazon

+ +

This package uses KDE libraries, if you do not use KDE you should use kid3-qt.

+ C: >- +

With Kid3, an ID3 tag editor for KDE you can: * Edit ID3v1.1 tags in your MP3 files * Edit all ID3v2.3 and ID3v2.4 + frames in your MP3 files * Convert between ID3v1.1, ID3v2.3 and ID3v2.4 tags * Edit tags in MP3, Ogg/Vorbis, Opus, DSF, + FLAC, MPC, APE, MP4/AAC, MP2, Speex, TrueAudio, WavPack, WMA, WAV, AIFF files and tracker modules. * Edit tags of + multiple files, e.g. the artist, album, year and genre of all files of an album typically have the same values and + can be set together * Generate tags from filenames * Generate tags from the contents of tag fields * Generate filenames + from tags * Generate playlist files * Automatic case conversion and string translation * Import and export album data + * Import from gnudb.org, TrackType.org, MusicBrainz, Discogs, Amazon

+ +

This package uses KDE libraries, if you do not use KDE you should use kid3-qt.

+Categories: +- AudioVideo +- Audio +- AudioVideoEditing +Keywords: + C: + - audio + - id3 + - tag + - editor + - id3v1 + - id3v2 + - mp3 +Icon: + cached: + - name: kid3_kid3.png + width: 48 + height: 48 + - name: kid3_kid3.png + width: 64 + height: 64 + - name: kid3_kid3.png + width: 128 + height: 128 + remote: + - url: k/ki/kid3.desktop/A1B9730EBD2950C6D38637DE04AD8ED6/icons/128x128/kid3_kid3.png + width: 128 + height: 128 +Launchable: + desktop-id: + - kid3.desktop +Provides: + mimetypes: + - audio/mpeg + - audio/ogg + - application/ogg + - audio/x-flac + - audio/x-flac+ogg + - audio/x-vorbis+ogg + - audio/x-speex+ogg + - audio/x-oggflac + - audio/x-musepack + - audio/aac + - audio/mp4 + - audio/x-speex + - audio/x-tta + - audio/x-wavpack + - audio/x-aiff + - audio/x-it + - audio/x-mod + - audio/x-s3m + - audio/x-ms-wma + - audio/x-wav + - audio/x-xm + - audio/opus + - audio/x-opus+ogg + - audio/x-dsf + - inode/directory +--- +Type: generic +ID: firmware-ath9k-htc +Package: firmware-ath9k-htc +Name: + C: firmware-ath9k-htc +Summary: + C: Opensource version of QCA ath9k-htc firmware +Description: + C: >- +

Opensource version of QCA ath9k-htc firmware. + Supported chips are: ar9271 and ar7010.

+Provides: + modaliases: + - usb:v0CF3p9271d* + - usb:v0CF3p1006d* + - usb:v0846p9030d* + - usb:v07D1p3A10d* + - usb:v13D3p3327d* + - usb:v13D3p3328d* + - usb:v13D3p3346d* + - usb:v13D3p3348d* + - usb:v13D3p3349d* + - usb:v13D3p3350d* + - usb:v04CAp4605d* + - usb:v040Dp3801d* + - usb:v0CF3pB003d* + - usb:v0CF3pB002d* + - usb:v057Cp8403d* + - usb:v0471p209Ed* + - usb:v0CF3p7015d* + - usb:v1668p1200d* + - usb:v0CF3p7010d* + - usb:v0846p9018d* + - usb:v083ApA704d* + - usb:v0411p017Fd* + - usb:v0411p0197d* + - usb:v04DAp3904d* + - usb:v0930p0A08d* + - usb:v0CF3p20FFd* diff -Nru appstream-0.12.0/tests/test-basics.c appstream-0.12.2/tests/test-basics.c --- appstream-0.12.0/tests/test-basics.c 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/tests/test-basics.c 2018-08-04 07:39:44.000000000 +0000 @@ -379,6 +379,32 @@ g_free (tmp); } +/** + * test_version_compare: + * + * Test version comparisons. + */ +static void +test_version_compare () +{ + g_assert_cmpint (as_utils_compare_versions ("6", "8"), <, 0); + g_assert_cmpint (as_utils_compare_versions ("0.6.12b-d", "0.6.12a"), >, 0); + g_assert_cmpint (as_utils_compare_versions ("7.4", "7.4"), ==, 0); + g_assert_cmpint (as_utils_compare_versions ("ab.d", "ab.f"), <, 0); + + g_assert_cmpint (as_utils_compare_versions ("0.6.16", "0.6.14"), >, 0); + + g_assert_cmpint (as_utils_compare_versions ("5.9.1+dfsg-5pureos1", "5.9.1+dfsg-5"), >, 0); + g_assert_cmpint (as_utils_compare_versions ("2.79", "2.79a"), <, 0); + + g_assert_cmpint (as_utils_compare_versions ("3.0.rc2", "3.0.0"), <, 0); + g_assert_cmpint (as_utils_compare_versions ("3.0.0~rc2", "3.0.0"), <, 0); + + /* TODO: Handle epochs as well? */ + /* g_assert_cmpint (as_utils_compare_versions ("4:5.6-2", "8.0-6"), >, 0); */ + /* g_assert_cmpint (as_utils_compare_versions ("1:1.0-4", "3:0.8-2"), <, 0); */ +} + int main (int argc, char **argv) { @@ -405,6 +431,7 @@ g_test_add_func ("/AppStream/SPDX", test_spdx); g_test_add_func ("/AppStream/TranslationFallback", test_translation_fallback); g_test_add_func ("/AppStream/DesktopEntry", test_desktop_entry); + g_test_add_func ("/AppStream/VersionCompare", test_version_compare); ret = g_test_run (); g_free (datadir); diff -Nru appstream-0.12.0/tests/test-performance.c appstream-0.12.2/tests/test-performance.c --- appstream-0.12.0/tests/test-performance.c 1970-01-01 00:00:00.000000000 +0000 +++ appstream-0.12.2/tests/test-performance.c 2018-08-04 07:39:44.000000000 +0000 @@ -0,0 +1,124 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- + * + * Copyright (C) 2012-2018 Matthias Klumpp + * + * Licensed under the GNU Lesser General Public License Version 2.1 + * + * This library is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 2.1 of the license, or + * (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library. If not, see . + */ + +#include +#include + +#include "appstream.h" +#include "as-metadata.h" +#include "as-test-utils.h" + +static gchar *datadir = NULL; + + +/** + * test_get_sampledata_pool: + * + * Internal helper to get a pool with the sample data locations set. + */ +static AsPool* +test_get_sampledata_pool (gboolean use_caches) +{ + AsPool *pool; + AsPoolFlags flags; + g_autofree gchar *mdata_dir = NULL; + + /* create AsPool and load sample metadata */ + mdata_dir = g_build_filename (datadir, "collection", NULL); + + pool = as_pool_new (); + as_pool_clear_metadata_locations (pool); + as_pool_add_metadata_location (pool, mdata_dir); + as_pool_set_locale (pool, "C"); + + flags = as_pool_get_flags (pool); + as_flags_remove (flags, AS_POOL_FLAG_READ_DESKTOP_FILES); + as_pool_set_flags (pool, flags); + + if (!use_caches) + as_pool_set_cache_flags (pool, AS_CACHE_FLAG_NONE); + + return pool; +} + + +/** + * Test performance of loading a metadata pool from XML. + */ +static void +test_pool_read_perf (void) +{ + GError *error = NULL; + guint i; + guint loops = 10; + g_autoptr(GTimer) timer = NULL; + + timer = g_timer_new (); + for (i = 0; i < loops; i++) { + GPtrArray *cpts; + g_autoptr(AsPool) pool = test_get_sampledata_pool (FALSE); + + as_pool_load (pool, NULL, &error); + g_assert_no_error (error); + + cpts = as_pool_get_components (pool); + g_assert_cmpint (cpts->len, ==, 19); + + } + g_print ("%.0f ms: ", g_timer_elapsed (timer, NULL) * 1000 / loops); +} + +/** + * main: + */ +int +main (int argc, char **argv) +{ + int ret; + + if (argc == 0) { + g_error ("No test directory specified!"); + return 1; + } + + datadir = argv[1]; + g_assert (datadir != NULL); + datadir = g_build_filename (datadir, "samples", NULL); + g_assert (g_file_test (datadir, G_FILE_TEST_EXISTS) != FALSE); + + g_setenv ("G_MESSAGES_DEBUG", "all", TRUE); + g_test_init (&argc, &argv, NULL); + + /* only critical and error are fatal */ + g_log_set_fatal_mask (NULL, G_LOG_LEVEL_ERROR | G_LOG_LEVEL_CRITICAL); + + /* Only ever run tests in slow mode (set manually). + * This prevents build/test failures on slower machines */ + if (!g_test_slow ()) + return 0; + + + g_test_add_func ("/Perf/Pool/Read", test_pool_read_perf); + + + ret = g_test_run (); + g_free (datadir); + return ret; +} diff -Nru appstream-0.12.0/tests/test-pool.c appstream-0.12.2/tests/test-pool.c --- appstream-0.12.0/tests/test-pool.c 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/tests/test-pool.c 2018-08-04 07:39:44.000000000 +0000 @@ -64,16 +64,17 @@ } /** - * test_cache: + * test_cache_simple: * - * Test reading data from cache files. + * Test reading simple data from cache files. */ static void -test_cache () +test_cache_simple () { g_autoptr(AsPool) dpool = NULL; g_autoptr(AsComponent) cpt1 = NULL; g_autoptr(AsComponent) cpt2 = NULL; + g_autoptr(AsMetadata) mdata = NULL; g_autoptr(GError) error = NULL; /* prepare our components */ @@ -99,7 +100,7 @@ g_assert_no_error (error); /* export cache file and destroy old data pool */ - as_pool_save_cache_file (dpool, "/tmp/as-unittest-cache.gvz", &error); + as_pool_save_cache_file (dpool, "/tmp/as-unittest-dummy.gvz", &error); g_assert_no_error (error); g_object_unref (dpool); g_object_unref (cpt1); @@ -107,7 +108,7 @@ /* load cache file */ dpool = as_pool_new (); - as_pool_load_cache_file (dpool, "/tmp/as-unittest-cache.gvz", &error); + as_pool_load_cache_file (dpool, "/tmp/as-unittest-dummy.gvz", &error); g_assert_no_error (error); /* validate */ @@ -206,33 +207,75 @@ } /** - * test_cache_file: + * test_cache_complex: * * Test if cache file (de)serialization works. */ static void -test_cache_file () +test_cache_complex () { g_autoptr(AsPool) pool = NULL; g_autoptr(GPtrArray) cpts_prev = NULL; - g_autoptr(GPtrArray) cpts = NULL; - GError *error = NULL; + g_autoptr(GPtrArray) cpts_post = NULL; + g_autoptr(AsMetadata) mdata = NULL; + g_autoptr(GError) error = NULL; + g_autofree gchar *xmldata_precache = NULL; + g_autofree gchar *xmldata_postcache = NULL; + GPtrArray *cpts; + guint i; pool = test_get_sampledata_pool (FALSE); as_pool_load (pool, NULL, &error); g_assert_no_error (error); cpts_prev = as_pool_get_components (pool); - g_assert_cmpint (cpts_prev->len, ==, 18); + g_assert_cmpint (cpts_prev->len, ==, 19); + + /* get XML representation of the data currently in the pool */ + mdata = as_metadata_new (); + cpts = as_pool_get_components (pool); + for (i = 0; i < cpts->len; i++) { + AsComponent *cpt = AS_COMPONENT (g_ptr_array_index (cpts, i)); + + /* keywords are not cached explicitly, they are stored in the search terms list instead. Therefore, we don't + * serialize them here */ + as_component_set_keywords (cpt, NULL, NULL); + + /* FIXME: language lists are not deterministic yet, so we ignore them for now */ + g_hash_table_remove_all (as_component_get_languages_table (cpt)); + + as_metadata_add_component (mdata, cpt); + } - as_cache_file_save ("/tmp/as-unittest-dummy.gvz", "C", cpts_prev, &error); + xmldata_precache = as_metadata_components_to_collection (mdata, AS_FORMAT_KIND_XML, &error); g_assert_no_error (error); - cpts = as_cache_file_read ("/tmp/as-unittest-dummy.gvz", &error); + /* save cache file explicitly */ + as_cache_file_save ("/tmp/as-unittest-cache.gvz", "C", cpts_prev, &error); g_assert_no_error (error); - g_assert_cmpint (cpts->len, ==, 18); - as_assert_component_lists_equal (cpts, cpts_prev); + /* test deserialization */ + cpts_post = as_cache_file_read ("/tmp/as-unittest-cache.gvz", &error); + g_assert_no_error (error); + g_assert_cmpint (cpts_post->len, ==, 19); + as_assert_component_lists_equal (cpts_post, cpts_prev); + + /* ensure we get the same result back that we cached before */ + g_object_unref (pool); + pool = as_pool_new (); + as_pool_load_cache_file (pool, "/tmp/as-unittest-cache.gvz", &error); + g_assert_no_error (error); + + as_metadata_clear_components (mdata); + cpts = as_pool_get_components (pool); + for (i = 0; i < cpts->len; i++) { + AsComponent *cpt = AS_COMPONENT (g_ptr_array_index (cpts, i)); + as_metadata_add_component (mdata, cpt); + } + + xmldata_postcache = as_metadata_components_to_collection (mdata, AS_FORMAT_KIND_XML, &error); + g_assert_no_error (error); + g_assert (as_test_compare_lines (xmldata_precache, xmldata_postcache)); } /** @@ -263,48 +306,48 @@ all_cpts = as_pool_get_components (dpool); g_assert_nonnull (all_cpts); - g_assert_cmpint (all_cpts->len, ==, 18); + g_assert_cmpint (all_cpts->len, ==, 19); result = as_pool_search (dpool, "kig"); print_cptarray (result); g_assert_cmpint (result->len, ==, 1); cpt = AS_COMPONENT (g_ptr_array_index (result, 0)); g_assert_cmpstr (as_component_get_pkgnames (cpt)[0], ==, "kig"); - g_ptr_array_unref (result); + g_clear_pointer (&result, g_ptr_array_unref); result = as_pool_search (dpool, "web"); print_cptarray (result); g_assert_cmpint (result->len, ==, 1); - g_ptr_array_unref (result); + g_clear_pointer (&result, g_ptr_array_unref); result = as_pool_search (dpool, "logic"); print_cptarray (result); g_assert_cmpint (result->len, ==, 2); - g_ptr_array_unref (result); + g_clear_pointer (&result, g_ptr_array_unref); /* search for mixed-case strings */ result = as_pool_search (dpool, "bIoChemistrY"); print_cptarray (result); g_assert_cmpint (result->len, ==, 1); - g_ptr_array_unref (result); + g_clear_pointer (&result, g_ptr_array_unref); /* test searching for multiple words */ result = as_pool_search (dpool, "scalable graphics"); print_cptarray (result); g_assert_cmpint (result->len, ==, 1); - g_ptr_array_unref (result); + g_clear_pointer (&result, g_ptr_array_unref); /* we return all components if the search string is too short */ result = as_pool_search (dpool, "sh"); - g_assert_cmpint (result->len, ==, 18); - g_ptr_array_unref (result); + g_assert_cmpint (result->len, ==, 19); + g_clear_pointer (&result, g_ptr_array_unref); strv = g_strsplit ("Science", ";", 0); result = as_pool_get_components_by_categories (dpool, strv); g_strfreev (strv); print_cptarray (result); g_assert_cmpint (result->len, ==, 3); - g_ptr_array_unref (result); + g_clear_pointer (&result, g_ptr_array_unref); result = as_pool_get_components_by_provided_item (dpool, AS_PROVIDED_KIND_BINARY, "inkscape"); print_cptarray (result); @@ -315,7 +358,7 @@ g_assert_cmpstr (as_component_get_url (cpt, AS_URL_KIND_HOMEPAGE), ==, "https://inkscape.org/"); g_assert_cmpstr (as_component_get_url (cpt, AS_URL_KIND_FAQ), ==, "https://inkscape.org/learn/faq/"); - g_ptr_array_unref (result); + g_clear_pointer (&result, g_ptr_array_unref); /* test a component in a different file, with no package but a bundle instead */ cpt = _as_get_single_component_by_cid (dpool, "org.neverball.Neverball"); @@ -387,13 +430,13 @@ /* test fetching components by launchable */ result = as_pool_get_components_by_launchable (dpool, AS_LAUNCHABLE_KIND_DESKTOP_ID, "linuxdcpp.desktop"); g_assert_cmpint (result->len, ==, 1); - g_ptr_array_unref (result); + g_clear_pointer (&result, g_ptr_array_unref); result = as_pool_get_components_by_launchable (dpool, AS_LAUNCHABLE_KIND_DESKTOP_ID, "inkscape.desktop"); g_assert_cmpint (result->len, ==, 1); cpt = AS_COMPONENT (g_ptr_array_index (result, 0)); g_assert_cmpstr (as_component_get_id (cpt), ==, "org.inkscape.Inkscape"); - g_ptr_array_unref (result); + g_clear_pointer (&result, g_ptr_array_unref); } /** @@ -473,8 +516,8 @@ g_log_set_fatal_mask (NULL, G_LOG_LEVEL_ERROR | G_LOG_LEVEL_CRITICAL); g_test_add_func ("/AppStream/PoolRead", test_pool_read); - g_test_add_func ("/AppStream/CacheFile", test_cache_file); - g_test_add_func ("/AppStream/Cache", test_cache); + g_test_add_func ("/AppStream/Cache/Basic", test_cache_simple); + g_test_add_func ("/AppStream/Cache/Complex", test_cache_complex); g_test_add_func ("/AppStream/Merges", test_merge_components); ret = g_test_run (); diff -Nru appstream-0.12.0/tests/test-xmldata.c appstream-0.12.2/tests/test-xmldata.c --- appstream-0.12.0/tests/test-xmldata.c 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/tests/test-xmldata.c 2018-08-04 07:39:44.000000000 +0000 @@ -1292,6 +1292,88 @@ g_assert (as_test_compare_lines (res, xmldata_recommends_requires)); } + +static const gchar *xmldata_agreements = "\n" + "\n" + " org.example.AgreementsTest\n" + " \n" + " \n" + " Einführung\n" + " Intro\n" + " \n" + "

Mighty Fine

\n" + "
\n" + "
\n" + "
\n" + "
\n"; +/** + * test_xml_read_agreements: + * + * Test reading the agreement tag and related elements. + */ +static void +test_xml_read_agreements (void) +{ + g_autoptr(AsComponent) cpt = NULL; + AsAgreement *agreement; + AsAgreementSection *sect; + + cpt = as_xml_test_read_data (xmldata_agreements, AS_FORMAT_STYLE_METAINFO); + g_assert_cmpstr (as_component_get_id (cpt), ==, "org.example.AgreementsTest"); + + + agreement = as_component_get_agreement_by_kind (cpt, AS_AGREEMENT_KIND_EULA); + g_assert_nonnull (agreement); + + g_assert_cmpint (as_agreement_get_kind (agreement), ==, AS_AGREEMENT_KIND_EULA); + g_assert_cmpstr (as_agreement_get_version_id (agreement), ==, "1.2.3a"); + sect = as_agreement_get_section_default (agreement); + g_assert_nonnull (sect); + + as_agreement_section_set_active_locale (sect, "C"); + g_assert_cmpstr (as_agreement_section_get_kind (sect), ==, "intro"); + g_assert_cmpstr (as_agreement_section_get_name (sect), ==, "Intro"); + g_assert_cmpstr (as_agreement_section_get_description (sect), ==, "

Mighty Fine

"); + + as_agreement_section_set_active_locale (sect, "de_DE"); + g_assert_cmpstr (as_agreement_section_get_name (sect), ==, "Einführung"); +} + +/** + * test_xml_write_agreements: + * + * Test writing the agreement tag. + */ +static void +test_xml_write_agreements (void) +{ + g_autoptr(AsComponent) cpt = NULL; + g_autofree gchar *res = NULL; + g_autoptr(AsAgreement) agreement = NULL; + g_autoptr(AsAgreementSection) sect = NULL; + + cpt = as_component_new (); + as_component_set_id (cpt, "org.example.AgreementsTest"); + + agreement = as_agreement_new (); + sect = as_agreement_section_new (); + + as_agreement_set_kind (agreement, AS_AGREEMENT_KIND_EULA); + as_agreement_set_version_id (agreement, "1.2.3a"); + + as_agreement_section_set_kind (sect, "intro"); + as_agreement_section_set_name (sect, "Intro", "C"); + as_agreement_section_set_name (sect, "Einführung", "de_DE"); + + as_agreement_section_set_description (sect, "

Mighty Fine

", "C"); + + as_agreement_add_section (agreement, sect); + as_component_add_agreement (cpt, agreement); + + res = as_xml_test_serialize (cpt, AS_FORMAT_STYLE_METAINFO); + g_assert (as_test_compare_lines (res, xmldata_agreements)); +} + /** * main: */ @@ -1347,6 +1429,9 @@ g_test_add_func ("/XML/Read/RecommendsRequires", test_xml_read_recommends_requires); g_test_add_func ("/XML/Write/RecommendsRequires", test_xml_write_recommends_requires); + g_test_add_func ("/XML/Read/Agreements", test_xml_read_agreements); + g_test_add_func ("/XML/Write/Agreements", test_xml_write_agreements); + g_test_add_func ("/XML/Write/MetainfoToCollection", test_appstream_write_metainfo_to_collection); ret = g_test_run (); diff -Nru appstream-0.12.0/tests/test-yamldata.c appstream-0.12.2/tests/test-yamldata.c --- appstream-0.12.0/tests/test-yamldata.c 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/tests/test-yamldata.c 2018-08-04 07:39:44.000000000 +0000 @@ -56,11 +56,11 @@ g_assert_no_error (error); cpts = as_metadata_get_components (mdata); - g_assert_cmpint (cpts->len, ==, 6); + g_assert_cmpint (cpts->len, ==, 8); for (i = 0; i < cpts->len; i++) { - AsComponent *cpt; - cpt = AS_COMPONENT (g_ptr_array_index (cpts, i)); + AsComponent *cpt = AS_COMPONENT (g_ptr_array_index (cpts, i)); + g_assert (as_component_is_valid (cpt)); if (g_strcmp0 (as_component_get_name (cpt), "I Have No Tomatoes") == 0) cpt_tomatoes = cpt; @@ -122,6 +122,7 @@ GError *error = NULL; metad = as_metadata_new (); + as_metadata_set_locale (metad, "ALL"); as_metadata_add_component (metad, cpt); as_metadata_set_write_header (metad, TRUE); @@ -334,6 +335,7 @@ g_autoptr(AsMetadata) metad = NULL; metad = as_metadata_new (); + as_metadata_set_locale (metad, "ALL"); as_metadata_set_format_style (metad, AS_FORMAT_STYLE_COLLECTION); if (error == NULL) { @@ -897,6 +899,95 @@ g_assert_cmpint (as_relation_get_compare (relation), ==, AS_RELATION_COMPARE_EQ); } + +static const gchar *yamldata_agreements = "---\n" + "File: DEP-11\n" + "Version: '0.12'\n" + "---\n" + "Type: generic\n" + "ID: org.example.AgreementsTest\n" + "Agreements:\n" + "- type: eula\n" + " version_id: 1.2.3a\n" + " sections:\n" + " - type: intro\n" + " name:\n" + " C: Intro\n" + " xde_DE: Einführung\n" + " description:\n" + " C: >-\n" + "

Mighty Fine

\n"; + + +/** + * test_yaml_write_agreements: + * + * Test writing the Agreements field. + */ +static void +test_yaml_write_agreements (void) +{ + g_autoptr(AsComponent) cpt = NULL; + g_autofree gchar *res = NULL; + g_autoptr(AsAgreement) agreement = NULL; + g_autoptr(AsAgreementSection) sect = NULL; + + cpt = as_component_new (); + as_component_set_kind (cpt, AS_COMPONENT_KIND_GENERIC); + as_component_set_id (cpt, "org.example.AgreementsTest"); + + agreement = as_agreement_new (); + sect = as_agreement_section_new (); + + as_agreement_set_kind (agreement, AS_AGREEMENT_KIND_EULA); + as_agreement_set_version_id (agreement, "1.2.3a"); + + as_agreement_section_set_kind (sect, "intro"); + as_agreement_section_set_name (sect, "Intro", "C"); + as_agreement_section_set_name (sect, "Einführung", "xde_DE"); + + as_agreement_section_set_description (sect, "

Mighty Fine

", "C"); + + as_agreement_add_section (agreement, sect); + as_component_add_agreement (cpt, agreement); + + /* test collection serialization */ + res = as_yaml_test_serialize (cpt); + g_assert (as_test_compare_lines (res, yamldata_agreements)); +} + +/** + * test_yaml_read_agreements: + * + * Test if reading the Agreement field works. + */ +static void +test_yaml_read_agreements (void) +{ + g_autoptr(AsComponent) cpt = NULL; + AsAgreement *agreement; + AsAgreementSection *sect; + + cpt = as_yaml_test_read_data (yamldata_agreements, NULL); + g_assert_cmpstr (as_component_get_id (cpt), ==, "org.example.AgreementsTest"); + + agreement = as_component_get_agreement_by_kind (cpt, AS_AGREEMENT_KIND_EULA); + g_assert_nonnull (agreement); + + g_assert_cmpint (as_agreement_get_kind (agreement), ==, AS_AGREEMENT_KIND_EULA); + g_assert_cmpstr (as_agreement_get_version_id (agreement), ==, "1.2.3a"); + sect = as_agreement_get_section_default (agreement); + g_assert_nonnull (sect); + + as_agreement_section_set_active_locale (sect, "C"); + g_assert_cmpstr (as_agreement_section_get_kind (sect), ==, "intro"); + g_assert_cmpstr (as_agreement_section_get_name (sect), ==, "Intro"); + g_assert_cmpstr (as_agreement_section_get_description (sect), ==, "

Mighty Fine

"); + + as_agreement_section_set_active_locale (sect, "xde_DE"); + g_assert_cmpstr (as_agreement_section_get_name (sect), ==, "Einführung"); +} + /** * main: */ @@ -944,6 +1035,9 @@ g_test_add_func ("/YAML/Read/RequiresRecommends", test_yaml_read_requires_recommends); g_test_add_func ("/YAML/Write/RequiresRecommends", test_yaml_write_requires_recommends); + g_test_add_func ("/YAML/Read/Agreements", test_yaml_read_agreements); + g_test_add_func ("/YAML/Write/Agreements", test_yaml_write_agreements); + ret = g_test_run (); g_free (datadir); return ret; diff -Nru appstream-0.12.0/tools/appstream-cli.c appstream-0.12.2/tools/appstream-cli.c --- appstream-0.12.0/tools/appstream-cli.c 2018-04-04 15:53:56.000000000 +0000 +++ appstream-0.12.2/tools/appstream-cli.c 2018-08-04 07:39:44.000000000 +0000 @@ -533,6 +533,98 @@ } /** + * as_client_run_compare_versions: + * + * Compare versions using AppStream's version comparison algorithm. + */ +static int +as_client_run_compare_versions (char **argv, int argc) +{ + g_autoptr(GOptionContext) opt_context = NULL; + gint ret; + const gchar *command = "compare-versions"; + + opt_context = as_client_new_subcommand_option_context (command, format_options); + ret = as_client_option_context_parse (opt_context, command, &argc, &argv); + if (ret != 0) + return ret; + + if (argc < 4) { + ascli_print_stderr (_("You need to provide at least two version numbers to compare as parameters.")); + return 2; + } + + if (argc == 4) { + const gchar *ver1 = argv[2]; + const gchar *ver2 = argv[3]; + gint comp_res = as_utils_compare_versions (ver1, ver2); + + if (comp_res == 0) + g_print ("%s == %s\n", ver1, ver2); + else if (comp_res > 0) + g_print ("%s >> %s\n", ver1, ver2); + else if (comp_res < 0) + g_print ("%s << %s\n", ver1, ver2); + + return 0; + } else if (argc == 5) { + AsRelationCompare compare; + gint rc; + gboolean res; + const gchar *ver1 = argv[2]; + const gchar *comp_str = argv[3]; + const gchar *ver2 = argv[4]; + + compare = as_relation_compare_from_string (comp_str); + if (compare == AS_RELATION_COMPARE_UNKNOWN) { + guint i; + /** TRANSLATORS: The user tried to compare version numbers, but the comparison operator (greater-then, equal, etc.) was invalid. */ + ascli_print_stderr (_("Unknown compare relation '%s'. Valid values are:"), comp_str); + for (i = 1; i < AS_RELATION_COMPARE_LAST; i++) + g_printerr (" • %s\n", as_relation_compare_to_string (i)); + return 2; + } + + rc = as_utils_compare_versions (ver1, ver2); + switch (compare) { + case AS_RELATION_COMPARE_EQ: + res = rc == 0; + break; + case AS_RELATION_COMPARE_NE: + res = rc != 0; + break; + case AS_RELATION_COMPARE_LT: + res = rc < 0; + break; + case AS_RELATION_COMPARE_GT: + res = rc > 0; + break; + case AS_RELATION_COMPARE_LE: + res = rc <= 0; + break; + case AS_RELATION_COMPARE_GE: + res = rc >= 0; + break; + default: + res = FALSE; + } + + g_print ("%s: ", res? "true" : "false"); + if (rc == 0) + g_print ("%s == %s\n", ver1, ver2); + else if (rc > 0) + g_print ("%s >> %s\n", ver1, ver2); + else if (rc < 0) + g_print ("%s << %s\n", ver1, ver2); + + return res? 0 : 1; + } else { + ascli_print_stderr (_("Too many parameters: Need two version numbers or version numbers and a comparison operator.")); + return 2; + } +} + +/** * as_client_run_new_template: * * Convert metadata. @@ -617,6 +709,7 @@ g_string_append_printf (string, " %s - %s\n", "put FILE ", _("Install a metadata file into the right location.")); /* TRANSLATORS: "convert" command in ascli. "Collection XML" is a term describing a specific type of AppStream XML data. */ g_string_append_printf (string, " %s - %s\n", "convert FILE FILE", _("Convert collection XML to YAML or vice versa.")); + g_string_append_printf (string, " %s - %s\n", "compare-versions VER1 [COMP] VER2", _("Compare two version numbers.")); g_string_append_printf (string, " %s - %s\n", "new-template TYPE FILE", _("Create a template for a metainfo file (to be filled out by the upstream project).")); g_string_append (string, "\n"); @@ -743,6 +836,8 @@ return as_client_run_status (argv, argc); } else if (g_strcmp0 (command, "convert") == 0) { return as_client_run_convert (argv, argc); + } else if (g_strcmp0 (command, "compare-versions") == 0) { + return as_client_run_compare_versions (argv, argc); } else if (g_strcmp0 (command, "new-template") == 0) { return as_client_run_new_template (argv, argc); } else {