[dconf-editor] Add --list-relocatable-schemas option.



commit 2e44ffd213776daa02ca6221b0a56da80b1c1ea8
Author: Arnaud Bonatti <arnaud bonatti gmail com>
Date:   Fri Dec 8 00:43:21 2017 +0100

    Add --list-relocatable-schemas option.

 editor/dconf-editor.vala |   58 ++++++++++++++++++++++++++++++++++++++++++++++
 editor/dconf-model.vala  |   18 +++++++-------
 2 files changed, 67 insertions(+), 9 deletions(-)
---
diff --git a/editor/dconf-editor.vala b/editor/dconf-editor.vala
index 06b7201..651d6bd 100644
--- a/editor/dconf-editor.vala
+++ b/editor/dconf-editor.vala
@@ -17,11 +17,18 @@
 
 class ConfigurationEditor : Gtk.Application
 {
+    public static string [,] known_mappings = {
+            {"org.gnome.desktop.app-folders.folder", "/org/gnome/desktop/app-folders/folders//"},
+            {"org.gnome.Terminal.Legacy.Profile", "/org/gnome/terminal/legacy/profiles://"}
+        };  // TODO add more well-known mappings
+
     private static bool disable_warning = false;
 
     private const OptionEntry [] option_entries =
     {
         { "version", 'v', 0, OptionArg.NONE, null, N_("Print release version and exit"), null },
+        { "list-relocatable-schemas", 0, 0, OptionArg.NONE, null, N_("Print relocatable schemas and exit"), 
null },
+
         { "I-understand-that-changing-options-can-break-applications", 0, 0, OptionArg.NONE, ref 
disable_warning, N_("Do not show initial warning"), null },
         {}
     };
@@ -66,6 +73,57 @@ class ConfigurationEditor : Gtk.Application
             stdout.printf ("%1$s %2$s\n", "dconf-editor", Config.VERSION);
             return Posix.EXIT_SUCCESS;
         }
+        if (options.contains ("list-relocatable-schemas"))
+        {
+            // get installed schemas
+
+            string [] non_relocatable_schemas;
+            string [] relocatable_schemas;
+
+            SettingsSchemaSource? settings_schema_source = SettingsSchemaSource.get_default ();
+            if (settings_schema_source == null)
+            {
+                warning ("No schema source!");
+                return Posix.EXIT_FAILURE;
+            }
+            ((!) settings_schema_source).list_schemas (true, out non_relocatable_schemas, out 
relocatable_schemas);
+
+            // sort out schemas ids
+
+            string [] known_schemas_installed = {};
+            string [] unknown_schemas = {};
+
+            string [] schemas_ids = {};
+            for (int i = 0; i < known_mappings.length [0]; i++)
+                schemas_ids += known_mappings [i,0];
+
+            foreach (string schema_id in relocatable_schemas)
+            {
+                if (schema_id in schemas_ids)
+                    known_schemas_installed += schema_id;
+                else
+                    unknown_schemas += schema_id;
+            }
+
+            // print
+
+            if (known_schemas_installed.length > 0)
+            {
+                stdout.printf (_("Known schemas installed:") + "\n");
+                foreach (string schema_id in known_schemas_installed)
+                    stdout.printf (@"  $schema_id\n");
+            }
+            else
+                stdout.printf (_("No known schemas installed.") + "\n");
+            stdout.printf ("\n");
+            if (unknown_schemas.length > 0)
+            {
+                stdout.printf (_("Unknown schemas:") + "\n");
+                foreach (string schema_id in unknown_schemas)
+                    stdout.printf (@"  $schema_id\n");
+            }
+            return Posix.EXIT_SUCCESS;
+        }
         return -1;
     }
 
diff --git a/editor/dconf-model.vala b/editor/dconf-model.vala
index 175cffc..b283070 100644
--- a/editor/dconf-model.vala
+++ b/editor/dconf-model.vala
@@ -668,11 +668,11 @@ public class SettingsModel : Object
 
     private void parse_relocatable_schemas_user_paths ()
     {
-        RelocatableSchemasEnabledMappings enabled_mappings_flags = (RelocatableSchemasEnabledMappings) 
application_settings.get_flags ("relocatable-schemas-enabled-mappings");
-        if (!(RelocatableSchemasEnabledMappings.USER in enabled_mappings_flags))
+        if (settings_schema_source == null)
             return;
 
-        if (settings_schema_source == null)
+        RelocatableSchemasEnabledMappings enabled_mappings_flags = (RelocatableSchemasEnabledMappings) 
application_settings.get_flags ("relocatable-schemas-enabled-mappings");
+        if (!(RelocatableSchemasEnabledMappings.USER in enabled_mappings_flags))
             return;
 
         Variant user_paths_variant = application_settings.get_value ("relocatable-schemas-user-paths");
@@ -686,16 +686,16 @@ public class SettingsModel : Object
 
     private void create_relocatable_schemas_built_in_paths ()
     {
-        RelocatableSchemasEnabledMappings enabled_mappings_flags = (RelocatableSchemasEnabledMappings) 
application_settings.get_flags ("relocatable-schemas-enabled-mappings");
-        if (!(RelocatableSchemasEnabledMappings.BUILT_IN in enabled_mappings_flags))
+        if (settings_schema_source == null)
             return;
 
-        if (settings_schema_source == null)
+        RelocatableSchemasEnabledMappings enabled_mappings_flags = (RelocatableSchemasEnabledMappings) 
application_settings.get_flags ("relocatable-schemas-enabled-mappings");
+        if (!(RelocatableSchemasEnabledMappings.BUILT_IN in enabled_mappings_flags))
             return;
 
-        add_relocatable_schema_info ("org.gnome.desktop.app-folders.folder", 
"/org/gnome/desktop/app-folders/folders//");
-        add_relocatable_schema_info ("org.gnome.Terminal.Legacy.Profile", 
"/org/gnome/terminal/legacy/profiles://");
-        // TODO add more well-known mappings
+        string [,] known_mappings = ConfigurationEditor.known_mappings;
+        for (int i = 0; i < known_mappings.length [0]; i++)
+            add_relocatable_schema_info (known_mappings [i,0], known_mappings [i,1]);
     }
 
     private void add_relocatable_schema_info (string schema_id, ...)


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