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

#demoObject



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

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

#fetchObject



33
34
35
36
37
38
# File 'lib/cli.rb', line 33

def fetch
  require 'exercism'

  assignments = api.fetch
  report(assignments)
end

#loginObject



99
100
101
102
103
104
105
# File 'lib/cli.rb', line 99

def 
  require 'exercism'

  Exercism. username, key, project_dir

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

#logoutObject



108
109
110
111
112
# File 'lib/cli.rb', line 108

def logout
  require 'exercism'

  Exercism.config.delete
end

#openObject



41
42
43
44
45
# File 'lib/cli.rb', line 41

def open
  require 'launchy'

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

#peekObject



49
50
51
52
53
54
# File 'lib/cli.rb', line 49

def peek
  require 'exercism'

  assignments = api.peek
  report(assignments)
end

#submit(file) ⇒ Object



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

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



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

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



8
9
10
11
12
# File 'lib/cli.rb', line 8

def version
  require 'exercism'

  puts Exercism::VERSION
end

#whoamiObject



115
116
117
118
119
120
121
# File 'lib/cli.rb', line 115

def whoami
  require 'exercism'

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