Class: Exercism::CLI

Inherits:
Thor
  • Object
show all
Defined in:
lib/cli.rb,
lib/cli/monitored_request.rb

Defined Under Namespace

Classes: MonitoredRequest

Instance Method Summary collapse

Instance Method Details

#currentObject



127
128
129
130
131
132
133
134
135
136
137
# File 'lib/cli.rb', line 127

def current
  require 'exercism'

  result = Exercism::Api.new(options[:host], Exercism.user).current
  body = JSON.parse(result.body)
  puts "Current Assignments"
  body['assignments'].each do |assignment|
    track = assignment['track']
    puts "Language: " + track.ljust(17) + "Exercise: " + assignment['slug']
  end
end

#demoObject



20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/cli.rb', line 20

def demo
  require 'exercism'

  guest = Object.new
  def guest.key
    "demo"
  end

  exercism = Exercism::Api.new(options[:host], guest, '.')
  assignments = exercism.demo
  report(assignments)
end

#dirObject



143
144
145
146
147
# File 'lib/cli.rb', line 143

def dir
  require 'exercism'

  puts Exercism.config.project_dir
end

#fetchObject



35
36
37
38
39
40
# File 'lib/cli.rb', line 35

def fetch
  require 'exercism'

  assignments = api.fetch
  report(assignments)
end

#loginObject



101
102
103
104
105
106
107
# File 'lib/cli.rb', line 101

def 
  require 'exercism'

  Exercism. username, key, project_dir

  say("Your credentials have been written to #{Exercism.config.file}")
end

#logoutObject



110
111
112
113
114
# File 'lib/cli.rb', line 110

def logout
  require 'exercism'

  Exercism.config.delete
end

#openObject



43
44
45
46
47
# File 'lib/cli.rb', line 43

def open
  require 'launchy'

  Launchy.open("http://exercism.io")
end

#peekObject



51
52
53
54
55
56
# File 'lib/cli.rb', line 51

def peek
  require 'exercism'

  assignments = api.peek
  report(assignments)
end

#submit(file) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/cli.rb', line 61

def submit(file)
  require 'exercism'
  require 'cli/monitored_request'

  submission = Submission.new(file)

  if submission.test?
    say "It looks like this is a test, you probably don't want to do that."
    if no?("Do you want to submit it anyway? [y/n]")
      return
    end
  end

  if options[:ask]
    if no?("Are you sure you want to submit this assignment? [y/n]")
      return
    end
  end

  MonitoredRequest.new(api).request :submit, submission.path do |request, body|
    say "Your assignment has been submitted."
    url = "#{options[:host]}/#{Exercism.user.github_username}/#{body['language']}/#{body['exercise']}"
    say "For feedback on your submission visit #{url}"
  end
end

#unsubmitObject



89
90
91
92
93
94
95
96
97
98
# File 'lib/cli.rb', line 89

def unsubmit
  require 'exercism'
  require 'cli/monitored_request'

  MonitoredRequest.new(api).request :unsubmit do |request, body|
    if response.status == 204
      say "The last submission was successfully deleted."
    end
  end
end

#versionObject



10
11
12
13
14
# File 'lib/cli.rb', line 10

def version
  require 'exercism'

  puts Exercism::VERSION
end

#whoamiObject



117
118
119
120
121
122
123
# File 'lib/cli.rb', line 117

def whoami
  require 'exercism'

  puts Exercism.user.github_username
rescue Errno::ENOENT
  puts "You are not logged in."
end