class Greyatom::Open
Constants
- HOME_DIR
Attributes
lesson[R]
lessonName[R]
rootDir[R]
Public Class Methods
new()
click to toggle source
# File lib/greyatom/lesson/open.rb, line 14 def initialize() if File.exists?("#{HOME_DIR}/.ga-config") @rootDir = YAML.load(File.read("#{HOME_DIR}/.ga-config"))[:workspace] end @lesson = Greyatom::Current.new end
Public Instance Methods
cdToLesson()
click to toggle source
# File lib/greyatom/lesson/open.rb, line 83 def cdToLesson puts "Opening lesson..." Dir.chdir("#{rootDir}/#{lessonName}") puts "Done." exec("#{ENV['SHELL']} -l") end
change_grp_owner()
click to toggle source
# File lib/greyatom/lesson/open.rb, line 74 def change_grp_owner results = system("chgrp -R ubuntu #{rootDir}/#{lessonName}") if results puts "..." else puts "Couldn't change group ownership" end end
cloneCurrentLesson()
click to toggle source
# File lib/greyatom/lesson/open.rb, line 57 def cloneCurrentLesson puts "Cloning lesson..." begin Timeout::timeout(15) do cloneUrl = lesson.getAttr('forked_repo') Git.clone("git@github.com:#{cloneUrl}.git", lessonName, path: rootDir) end rescue Git::GitExecuteError => err puts "Error while cloning!" puts err exit rescue Timeout::Error puts "Cannot clone this lesson right now. Please try again." exit end end
forkCurrentLesson()
click to toggle source
# File lib/greyatom/lesson/open.rb, line 39 def forkCurrentLesson puts "Forking lesson..." github = Greyatom::Github.new() begin Timeout::timeout(15) do lessonRepo = lesson.getAttr('github_repo') forkedRepo = github.client.fork(lessonRepo) end rescue Octokit::Error => err puts "Error while forking!" puts err exit rescue Timeout::Error puts "Please check your internet connection." exit end end
openALesson(*puzzle_name)
click to toggle source
# File lib/greyatom/lesson/open.rb, line 21 def openALesson(*puzzle_name) # get currently active lesson puts "Getting current lesson..." lesson.getCurrentLesson(puzzle_name) @lessonName = lesson.getAttr('lesson_name') if !File.exists?("#{rootDir}/#{lessonName}") # fork lesson repo via github api forkCurrentLesson # clone forked lesson into machine cloneCurrentLesson # change group owner change_grp_owner end # install dependencies # cd into it and invoke bash cdToLesson end