class Martlet::CLI
Public Class Methods
exit_on_failure?()
click to toggle source
# File lib/martlet/cli.rb, line 55 def self.exit_on_failure? true end
Public Instance Methods
courses(semester = nil, year = nil)
click to toggle source
# File lib/martlet/cli.rb, line 29 def courses(semester = nil, year = nil) if semester.nil? || year.nil? semester, year = current_semester_and_year end puts 'Fetching courses...' schedule = client.schedule(semester, year) courses = schedule.fetch_courses course_name_size = courses.map { |c| c.name.length }.max puts "#{semester.capitalize} #{year} courses" courses.each do |course| course_row_format = "%-11s %-#{course_name_size}s @ %s\n" printf course_row_format, "#{course.number}", course.name, course.location end puts 'No courses found' if courses.empty? if options[:export] && !courses.empty? filename = "#{semester}_#{year}.ics" puts "Exporting courses to #{filename}..." client.export_calendar(filename, courses) end end
grades()
click to toggle source
# File lib/martlet/cli.rb, line 11 def grades puts 'Fetching grades...' grades = client.grades grades = case options['sort'] when 'course' then grades.sort_by { |k,v| k } when 'grade' then grades.sort_by { |k,v| Grade.new v } else grades end grades.each do |number, grade| puts "#{number}: #{grade}" end end
Private Instance Methods
client()
click to toggle source
# File lib/martlet/cli.rb, line 83 def client @client ||= begin puts 'Authenticating...' Martlet.new(*credentials) end rescue StandardError => e puts "Error: #{e.message}" exit 1 end
config_path()
click to toggle source
# File lib/martlet/cli.rb, line 93 def config_path "#{ENV['HOME']}/.martlet" end
credentials()
click to toggle source
# File lib/martlet/cli.rb, line 61 def credentials email = nil password = nil if File.exist?(config_path) # Get credentials from config file config = YAML.load_file config_path email = config['email'] password = config['password'] else # Get credentials from stdin print 'Minerva email: ' email = gets.chomp print 'Password: ' password = STDIN.noecho(&:gets).chomp puts end return email, password end
current_semester_and_year()
click to toggle source
# File lib/martlet/cli.rb, line 97 def current_semester_and_year semester = case Time.now.month when 1..4 then 'winter' when 5..8 then 'summer' when 9..12 then 'fall' end return semester, Time.now.year end