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