Module: Keyman
- Defined in:
- lib/keyman.rb,
lib/keyman/user.rb,
lib/keyman/group.rb,
lib/keyman/server.rb,
lib/keyman/keyfile.rb
Defined Under Namespace
Classes: Error, Group, Keyfile, Server, User
Constant Summary collapse
- VERSION =
The current version of the keyman system
'1.0.0'
Class Attribute Summary collapse
-
.groups ⇒ Object
Returns the value of attribute groups.
-
.servers ⇒ Object
Returns the value of attribute servers.
-
.users ⇒ Object
Storage for all the users, groups & servers which are loaded from the manifest.
Class Method Summary collapse
-
.load(directory) ⇒ Object
Load a manifest from the given folder.
-
.run(args, options = {}) ⇒ Object
Execute a CLI command.
-
.user_or_group_for(name) ⇒ Object
Return a user or a group for the given name.
Class Attribute Details
.groups ⇒ Object
Returns the value of attribute groups.
21 22 23 |
# File 'lib/keyman.rb', line 21 def groups @groups end |
.servers ⇒ Object
Returns the value of attribute servers.
22 23 24 |
# File 'lib/keyman.rb', line 22 def servers @servers end |
.users ⇒ Object
Storage for all the users, groups & servers which are loaded from the manifest
20 21 22 |
# File 'lib/keyman.rb', line 20 def users @users end |
Class Method Details
.load(directory) ⇒ Object
Load a manifest from the given folder
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/keyman.rb', line 25 def load(directory) self.users = [] self.groups = [] self.servers = [] if File.directory?(directory) ['groups.rb', 'servers.rb'].each do |file| path = File.join(directory, file) if File.exist?(path) Keyman::Keyfile.class_eval(File.read(path)) else raise Error, "No '#{file}' was found in your manifest directory. Abandoning..." end end else raise Error, "No folder found at '#{directory}'" end end |
.run(args, options = {}) ⇒ Object
Execute a CLI command
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/keyman.rb', line 49 def run(args, = {}) load('./') case args.first when 'keys' if server = self.servers.select { |s| s.host == args[1] }.first if server.users[args[2]] puts server.(args[2]) else raise Error, "'#{args[2]}' is not a valid user for this host" end else raise Error, "No server found with the hostname '#{args[1]}'" end when 'permissions' if server = self.servers.select { |s| s.host == args[1] }.first server.users.each do |username, objects| puts '-' * 80 puts "\e[32m#{username}\e[0m can be used by:" puts '-' * 80 server.(username).each do |o| puts " * #{o.name}" end end else raise Error, "No server found with the hostname '#{args[1]}'" end when 'push' if args[1] # push single server if server = self.servers.select { |s| s.host == args[1] }.first server.push! else raise Error, "No server found with the hostname '#{args[1]}'" end else self.servers.each(&:push!) end when 'servers' self.servers.each do |server| puts " * " + server.host end when 'users' self.groups.each do |group| puts "-" * 80 puts group.name puts "-" * 80 group.users.each do |u| puts "\e[32m#{u.name}\e[0m" puts "\e[37m#{u.key}\e[0m" end end end end |
.user_or_group_for(name) ⇒ Object
Return a user or a group for the given name
44 45 46 |
# File 'lib/keyman.rb', line 44 def user_or_group_for(name) self.users.select { |u| u.name == name.to_sym }.first || self.groups.select { |u| u.name == name.to_sym }.first end |