summaryrefslogtreecommitdiff
path: root/bin/meta-normalize-stdio
diff options
context:
space:
mode:
Diffstat (limited to 'bin/meta-normalize-stdio')
-rwxr-xr-xbin/meta-normalize-stdio34
1 files changed, 34 insertions, 0 deletions
diff --git a/bin/meta-normalize-stdio b/bin/meta-normalize-stdio
new file mode 100755
index 0000000..0bb94ce
--- /dev/null
+++ b/bin/meta-normalize-stdio
@@ -0,0 +1,34 @@
+#!/usr/bin/env ruby
+require 'yaml'
+
+core_order = [ "username",
+ "fullname",
+ "email", # ordered list
+ "groups", # unordered list
+ "pgp_keyid",
+ "pgp_revoked_keyids", # unordered list
+ "ssh_keys", # unordered map
+ "extra" ] # unordered map
+
+extra_order = [ "alias",
+ "other_contact",
+ "roles",
+ "website",
+ "occupation",
+ "yob",
+ "location",
+ "languages",
+ "interests",
+ "favorite_distros" ]
+
+_core_order = Hash[[*core_order.map.with_index]]
+_extra_order = Hash[[*extra_order.map.with_index]]
+
+user = YAML::load(STDIN)
+user = Hash[user.sort_by{|k,v| _core_order[k]}]}
+user["groups"] = user["groups"].sort if user["groups"]}
+user["pgp_revoked_keyids"] = user["pgp_revoked_keyids"].sort if user["extra"]}
+user["ssh_keys"] = Hash[user["ssh_keys"].sort_by{|k,v| k}] if user["ssh_keys"]}
+user["extra"] = Hash[user["extra"].sort_by{|k,v| _extra_order[k]}] if user["extra"]}
+
+print user.to_yaml