mirror of
https://github.com/hkalexling/Mango.git
synced 2025-08-03 11:25:29 -04:00
Add admin/user
sub-command
This commit is contained in:
parent
b724b4d508
commit
d72d635c68
28
src/mango.cr
28
src/mango.cr
@ -45,26 +45,50 @@ class CLI < Clim
|
|||||||
usage "mango admin user [arguments] [options]"
|
usage "mango admin user [arguments] [options]"
|
||||||
help short: "-h"
|
help short: "-h"
|
||||||
argument "action", type: String,
|
argument "action", type: String,
|
||||||
desc: "Action to make. Can be add/delete/update", required: true
|
desc: "Action to perform. Can be add/delete/update/list"
|
||||||
argument "username", type: String,
|
argument "username", type: String,
|
||||||
desc: "Username to update or delete"
|
desc: "Username to update or delete"
|
||||||
option "-u USERNAME", "--username=USERNAME", type: String,
|
option "-u USERNAME", "--username=USERNAME", type: String,
|
||||||
desc: "Username"
|
desc: "Username"
|
||||||
option "-p PASSWORD", "--password=PASSWORD", type: String,
|
option "-p PASSWORD", "--password=PASSWORD", type: String,
|
||||||
desc: "Password"
|
desc: "Password"
|
||||||
option "--admin", desc: "Admin flag", type: Bool, default: false
|
option "-a", "--admin", desc: "Admin flag", type: Bool, default: false
|
||||||
common_option
|
common_option
|
||||||
run do |opts, args|
|
run do |opts, args|
|
||||||
Config.load(opts.config).set_current
|
Config.load(opts.config).set_current
|
||||||
|
storage = Storage.new nil, false
|
||||||
|
|
||||||
case args.action
|
case args.action
|
||||||
when "add"
|
when "add"
|
||||||
throw "Options `-u` and `-p` required." if opts.username.nil? ||
|
throw "Options `-u` and `-p` required." if opts.username.nil? ||
|
||||||
opts.password.nil?
|
opts.password.nil?
|
||||||
|
storage.new_user opts.username.not_nil!,
|
||||||
|
opts.password.not_nil!, opts.admin
|
||||||
when "delete"
|
when "delete"
|
||||||
throw "Argument `username` required." if args.username.nil?
|
throw "Argument `username` required." if args.username.nil?
|
||||||
|
storage.delete_user args.username
|
||||||
when "update"
|
when "update"
|
||||||
throw "Argument `username` required." if args.username.nil?
|
throw "Argument `username` required." if args.username.nil?
|
||||||
|
username = opts.username || args.username
|
||||||
|
password = opts.password || ""
|
||||||
|
storage.update_user args.username, username.not_nil!,
|
||||||
|
password.not_nil!, opts.admin
|
||||||
|
when "list"
|
||||||
|
users = storage.list_users
|
||||||
|
name_length = users.map(&.[0].size).max
|
||||||
|
l_cell_width = ["username".size, name_length].max
|
||||||
|
r_cell_width = "admin access".size
|
||||||
|
header = " #{"username".ljust l_cell_width} | admin access "
|
||||||
|
puts "-" * header.size
|
||||||
|
puts header
|
||||||
|
puts "-" * header.size
|
||||||
|
users.each do |name, admin|
|
||||||
|
puts " #{name.ljust l_cell_width} | " \
|
||||||
|
"#{admin.to_s.ljust r_cell_width} "
|
||||||
|
end
|
||||||
|
puts "-" * header.size
|
||||||
|
when nil
|
||||||
|
puts opts.help_string
|
||||||
else
|
else
|
||||||
throw "Unknown action \"#{args.action}\"."
|
throw "Unknown action \"#{args.action}\"."
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user