class Fusebox::Cli
These methods are executed via the ‘bin/fusebox` executable @todo
* Allow specification of group admin username-part instead of 'postmaster' (via yaml? fuseboxrc?) * Exit codes * Flags for simple, non-table output for report methods (to allow piping)
Public Instance Methods
add(username, password, first_name, last_name)
click to toggle source
# File lib/fusebox/cli.rb, line 15 def add (username, password, first_name, last_name) group_parent = username.gsub /.*(@.*)/, 'postmaster\1' response = Fusebox::Request.new.order(:account_type => 'group_subaccount', :group_parent => group_parent, :user => username, :password => password, :first_name => first_name, :last_name => last_name) say response.detail end
alias_add(username, *aliases)
click to toggle source
# File lib/fusebox/cli.rb, line 22 def alias_add(username, *aliases) response = Fusebox::Request.new.modify(:user => username, :alias => aliases) say response.detail end
alias_ls(username)
click to toggle source
# File lib/fusebox/cli.rb, line 28 def alias_ls (username) response = Fusebox::Request.new.reportmail(:user => username, :report_type => 'alias') if response.success? response.records.sort { |x,y| x[:email_name] <=> y[:email_name]}.each { |a| say a[:email_name] } else warn response.detail end end
alias_rm(username, alias_address)
click to toggle source
# File lib/fusebox/cli.rb, line 38 def alias_rm (username, alias_address) response = Fusebox::Request.new.removealias(:user => username, :alias => alias_address) say response.detail end
domain_add(username, domain)
click to toggle source
# File lib/fusebox/cli.rb, line 44 def domain_add (username, domain) username = "postmaster@#{username}" unless username =~ /@/ response = Fusebox::Request.new.adddomain(:user => username, :domain => domain) say response.detail end
domain_rm(domain)
click to toggle source
# File lib/fusebox/cli.rb, line 52 def domain_rm (domain) if options[:force] || yes?("Are you sure you want to remove domain: #{domain}? [y/N]") response = Fusebox::Request.new.removedomain(:domain => domain, :confirm => true) say response.detail end end
enable(username)
click to toggle source
# File lib/fusebox/cli.rb, line 60 def enable (username) response = Fusebox::Request.new.enable(:user => username) say response.detail end
get(username)
click to toggle source
@todo Display account metadata from ‘report`
# File lib/fusebox/cli.rb, line 67 def get (username) username = "postmaster@#{username}" unless username =~ /@/ response = Fusebox::Request.new.reportmail(:user => username) if response.success? say response.records.sort { |x,y| x[:email_name] <=> y[:email_name]}.to_ascii_table [:username, :internal_account_id, :email_type, :email_name, :email_destination], %w(Username ID Type Name Destination) else warn response.detail end end
group_add(username, password = nil)
click to toggle source
# File lib/fusebox/cli.rb, line 78 def group_add (username, password = nil) username = "postmaster@#{username}" unless username =~ /@/ last, first = username.split /@/ password ||= ActiveSupport::SecureRandom.hex response = Fusebox::Request.new.order(:account_type => 'standard', :user => username, :password => password, :first_name => first, :last_name => last) say response.detail end
ls(username = 'all')
click to toggle source
@todo add flag for ignoring terminated accounts
# File lib/fusebox/cli.rb, line 89 def ls (username = 'all') username = "postmaster@#{username}" unless username =~ /@/ || username == 'all' recursive = options[:recursive] || (username == 'all' ? false : true) response = Fusebox::Request.new.report(:user => username, :group_subaccount => recursive, :report_type => 'extended') if response.success? say response.records.sort { |x,y| x[:username] <=> y[:username]}.to_ascii_table([:username, :creation_date, :internal_account_id, :status, :disk_usage], %w(Username Created ID Status Disk)) else warn response.detail end end
passwd(username, password = nil)
click to toggle source
# File lib/fusebox/cli.rb, line 101 def passwd (username, password = nil) password = ask "New Password:" unless password response = Fusebox::Request.new.modify(:user => username, :password => password) say response.detail end
rename(old_username, new_username)
click to toggle source
# File lib/fusebox/cli.rb, line 108 def rename (old_username, new_username) response = Fusebox::Request.new.changeusername(:user => old_username, :newuser => new_username) say response.detail end
rm(username)
click to toggle source
# File lib/fusebox/cli.rb, line 116 def rm (username) if options[:force] || yes?("Are you sure you want to remove user: #{username}? [y/N]") response = Fusebox::Request.new.terminate(:user => username, :purge => options[:purge]) say response.detail else say "No action taken." end end
suspend(username)
click to toggle source
# File lib/fusebox/cli.rb, line 126 def suspend (username) response = Fusebox::Request.new.suspend(:user => username) say response.detail end