Class: LearnOpen::Environments::IDEEnvironment

Inherits:
BaseEnvironment show all
Defined in:
lib/learn_open/environments/ide_environment.rb

Instance Attribute Summary

Attributes inherited from BaseEnvironment

#environment_vars, #io, #logger, #options, #system_adapter

Instance Method Summary collapse

Methods inherited from BaseEnvironment

#download_lesson, #initialize, #install_dependencies, #notify_of_completion, #open_editor, #open_shell, #start_file_backup

Constructor Details

This class inherits a constructor from LearnOpen::Environments::BaseEnvironment

Instance Method Details

#managed?Boolean

Returns:

  • (Boolean)


4
5
6
# File 'lib/learn_open/environments/ide_environment.rb', line 4

def managed?
  true
end

#on_invalid(lesson) ⇒ Object



50
51
52
53
# File 'lib/learn_open/environments/ide_environment.rb', line 50

def on_invalid(lesson)
  io.puts "Opening new window"
  run_custom_command(:open_lab, {lab_name: lesson.name})
end

#open_jupyter_lab(lesson, location, editor, _clone_only) ⇒ Object



15
16
17
18
19
20
# File 'lib/learn_open/environments/ide_environment.rb', line 15

def open_jupyter_lab(lesson, location, editor, _clone_only)
  when_valid(lesson) do
    io.puts "Opening Jupyter Lesson..."
    run_custom_command(:browser_open, {url: lesson.to_url})
  end
end

#open_lab(lesson, location, editor, clone_only) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/learn_open/environments/ide_environment.rb', line 22

def open_lab(lesson, location, editor, clone_only)
  when_valid(lesson) do
    case lesson
    when LearnOpen::Lessons::IosLesson
      super
    when -> (l) { valid?(l) }
      download_lesson(lesson, location)
      open_editor(lesson, location, editor)
      start_file_backup(lesson, location)
      install_dependencies(lesson, location)
      notify_of_completion
      open_shell unless clone_only
    end
  end
end

#open_readme(lesson) ⇒ Object



8
9
10
11
12
13
# File 'lib/learn_open/environments/ide_environment.rb', line 8

def open_readme(lesson)
  when_valid(lesson) do
    io.puts "Opening readme..."
    run_custom_command(:browser_open, {url: lesson.to_url})
  end
end

#run_custom_command(command, message) ⇒ Object



55
56
57
58
59
60
61
# File 'lib/learn_open/environments/ide_environment.rb', line 55

def run_custom_command(command, message)
  home_dir = "/home/#{environment_vars['CREATED_USER']}"
  custom_commands_log = "#{home_dir}/.custom_commands.log"
  File.open(custom_commands_log, "a") do |f|
    f.puts({:command => command}.merge(message).to_json)
  end
end

#valid?(lesson) ⇒ Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/learn_open/environments/ide_environment.rb', line 46

def valid?(lesson)
  lesson.name == environment_vars['LAB_NAME']
end

#when_valid(lesson, &block) ⇒ Object



38
39
40
41
42
43
44
# File 'lib/learn_open/environments/ide_environment.rb', line 38

def when_valid(lesson, &block)
  if valid?(lesson)
    block.call
  else
    on_invalid(lesson)
  end
end