class T::RCFile

Constants

FILE_NAME

Attributes

path[R]

Public Class Methods

new() click to toggle source
# File lib/t/rcfile.rb, line 9
def initialize
  @path = File.join(File.expand_path('~'), FILE_NAME)
  @data = load_file
end

Public Instance Methods

[](username) click to toggle source
# File lib/t/rcfile.rb, line 14
def [](username)
  profiles[find(username)]
end
[]=(username, profile) click to toggle source
# File lib/t/rcfile.rb, line 32
def []=(username, profile)
  profiles[username] ||= {}
  profiles[username].merge!(profile)
  write
end
active_consumer_key() click to toggle source
# File lib/t/rcfile.rb, line 42
def active_consumer_key
  profiles[active_profile[0]][active_profile[1]]['consumer_key'] if active_profile?
end
active_consumer_secret() click to toggle source
# File lib/t/rcfile.rb, line 46
def active_consumer_secret
  profiles[active_profile[0]][active_profile[1]]['consumer_secret'] if active_profile?
end
active_profile() click to toggle source
# File lib/t/rcfile.rb, line 50
def active_profile
  configuration['default_profile']
end
active_profile=(profile) click to toggle source
# File lib/t/rcfile.rb, line 54
def active_profile=(profile)
  configuration['default_profile'] = [profile['username'], profile['consumer_key']]
  write
end
active_secret() click to toggle source
# File lib/t/rcfile.rb, line 59
def active_secret
  profiles[active_profile[0]][active_profile[1]]['secret'] if active_profile?
end
active_token() click to toggle source
# File lib/t/rcfile.rb, line 63
def active_token
  profiles[active_profile[0]][active_profile[1]]['token'] if active_profile?
end
configuration() click to toggle source
# File lib/t/rcfile.rb, line 38
def configuration
  @data['configuration']
end
delete() click to toggle source
# File lib/t/rcfile.rb, line 67
def delete
  File.delete(@path) if File.exist?(@path)
end
delete_key(profile, key) click to toggle source
# File lib/t/rcfile.rb, line 101
def delete_key(profile, key)
  profiles[profile].delete(key)
  write
end
delete_profile(profile) click to toggle source
# File lib/t/rcfile.rb, line 96
def delete_profile(profile)
  profiles.delete(profile)
  write
end
empty?() click to toggle source
# File lib/t/rcfile.rb, line 71
def empty?
  @data == default_structure
end
find(username) click to toggle source
# File lib/t/rcfile.rb, line 18
def find(username)
  possibilities = Array(find_case_insensitive_match(username) || find_case_insensitive_possibilities(username))
  raise(ArgumentError.new("Username #{username} is #{possibilities.empty? ? 'not found.' : 'ambiguous, matching ' + possibilities.join(', ')}")) unless possibilities.size == 1
  possibilities.first
end
find_case_insensitive_match(username) click to toggle source
# File lib/t/rcfile.rb, line 24
def find_case_insensitive_match(username)
  profiles.keys.detect { |u| username.casecmp(u).zero? }
end
find_case_insensitive_possibilities(username) click to toggle source
# File lib/t/rcfile.rb, line 28
def find_case_insensitive_possibilities(username)
  profiles.keys.select { |u| username.casecmp(u[0, username.length]).zero? }
end
load_file() click to toggle source
# File lib/t/rcfile.rb, line 75
def load_file
  require 'yaml'
  YAML.load_file(@path)
rescue Errno::ENOENT
  default_structure
end
path=(path) click to toggle source
# File lib/t/rcfile.rb, line 82
def path=(path)
  @path = path
  @data = load_file
  @path
end
profiles() click to toggle source
# File lib/t/rcfile.rb, line 88
def profiles
  @data['profiles']
end
reset() click to toggle source
# File lib/t/rcfile.rb, line 92
def reset
  send(:initialize)
end

Private Instance Methods

active_profile?() click to toggle source
# File lib/t/rcfile.rb, line 108
def active_profile?
  active_profile && profiles[active_profile[0]] && profiles[active_profile[0]][active_profile[1]]
end
default_structure() click to toggle source
# File lib/t/rcfile.rb, line 112
def default_structure
  {'configuration' => {}, 'profiles' => {}}
end
write() click to toggle source
# File lib/t/rcfile.rb, line 116
def write
  require 'yaml'
  File.open(@path, File::RDWR | File::TRUNC | File::CREAT, 0o0600) do |rcfile|
    rcfile.write @data.to_yaml
  end
end