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