mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2024-11-23 23:58:02 -05:00
42 lines
1.8 KiB
Python
42 lines
1.8 KiB
Python
from __future__ import print_function
|
|
__author__ = u'root'
|
|
|
|
import dependency
|
|
import configuration
|
|
import shutil
|
|
import errors
|
|
import subprocess
|
|
from which import which
|
|
class Ruby(dependency.Dependency):
|
|
def __init__(self,config):
|
|
self.config = config
|
|
assert isinstance(config,configuration.Configuration)
|
|
is_ruby_installed = self.check_if_ruby_exists()
|
|
is_gem_installed = self.check_if_gem_exists()
|
|
if is_ruby_installed and not is_gem_installed:
|
|
#this means their ruby is so old that RubyGems isn't packaged with it
|
|
raise errors.CoCoError(u"You have an extremely old version of Ruby. Please upgrade it to get RubyGems.")
|
|
elif not is_ruby_installed:
|
|
self.install_ruby()
|
|
elif is_ruby_installed and is_gem_installed:
|
|
print(u"Ruby found.")
|
|
def check_if_ruby_exists(self):
|
|
ruby_path = which(u"ruby")
|
|
return bool(ruby_path)
|
|
def check_if_gem_exists(self):
|
|
gem_path = which(u"gem")
|
|
return bool(gem_path)
|
|
def install_ruby(self):
|
|
operating_system = self.config.system.operating_system
|
|
#Ruby is on every recent Mac, most Linux distros
|
|
if operating_system == u"windows":
|
|
self.install_ruby_on_windows()
|
|
elif operating_system == u"mac":
|
|
raise errors.CoCoError(u"Ruby should be installed with Mac OSX machines. Please install Ruby.")
|
|
elif operating_system == u"linux":
|
|
raise errors.CoCoError(u"Please install Ruby (try 'sudo apt-get install ruby').\nIf you are not using Ubuntu then please see your Linux Distribution's documentation for help installing ruby.")
|
|
def install_ruby_on_windows(self):
|
|
raise NotImplementedError
|
|
|
|
def install_gems(self):
|
|
gem_install_status = subprocess.call([u"gem",u"install",u"--no-user-install",u"sass"])
|