diff options
Diffstat (limited to 'bin/meta-normalize-stdio')
-rwxr-xr-x | bin/meta-normalize-stdio | 34 |
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 |