class Ayadn::Switch

Public Class Methods

new(status = Status.new) click to toggle source
# File lib/ayadn/switch.rb, line 5
def initialize status = Status.new
  @status = status
  begin
    @acc_db = Amalgalite::Database.new(Dir.home + "/ayadn/accounts.sqlite")
  rescue Amalgalite::SQLite3::Error => e
    @status.not_authorized
    exit
  rescue => e
    raise e
  end
end

Public Instance Methods

list() click to toggle source
# File lib/ayadn/switch.rb, line 17
def list
  puts "\n"
  please if @acc_db.blank?
  accounts = Databases.all_accounts(@acc_db)
  please if accounts.empty?
  accounts.sort_by! { |acc| acc[0] }
  table = Terminal::Table.new do |t|
    t.style = { :width => 80 }
    t.title = "Ayadn accounts"
    t.headings = ['Username', 'ID', 'Path']
  end
  accounts.each do |acc|
    username = acc[2]
    id = acc[1].to_s
    path = "~/ayadn/#{File.basename(acc[3])}"
    if acc[4] == 1
      username = username.color(:green)
      id = id.color(:green)
      path = path.color(:green)
    end
    table << [username, id, path]
  end
  puts table
  puts "\n"
end
switch(user) click to toggle source
# File lib/ayadn/switch.rb, line 43
def switch(user)
  if user.empty? || user.nil?
    @status.no_username
    exit
  end
  username = Workers.new.remove_arobase_if_present([user.first])[0]
  please if @acc_db.blank?
  accounts = Databases.all_accounts(@acc_db)
  please if accounts.empty?
  active = accounts.select { |acc| acc[4] == 1 }[0]
  active_user = active[0]
  if username == active_user
    @status.say do
      @status.say_green :done, "already authorized with username @#{username}"
    end
    exit
  end
  flag = accounts.select { |acc| acc[0] == username }.flatten
  if flag.empty?
    @status.say do
      @status.say_error "@#{username} isn't in the database"
      @status.say_yellow :next, "please run `ayadn -auth` to authorize this account"
    end
    exit
  else
    @status.say do
      @status.say_cyan :switching, "from @#{active_user} to @#{username}"
      Databases.set_active_account(@acc_db, username)
      @status.say_green :done, "@#{username} is now the active account"
    end
    exit
  end
end

Private Instance Methods

please() click to toggle source
# File lib/ayadn/switch.rb, line 79
def please
  @status.say_info "please run `ayadn -auth` to authorize an account"
  puts
  exit
end